자습서: 암호 없는 인증을 위해 BlokSec를 사용하여 Azure Active Directory B2C 구성
시작하기 전에
Azure Active Directory B2C에는 애플리케이션과의 사용자 상호 작용을 정의하는 두 가지 방법(미리 정의된 사용자 흐름 또는 구성 가능한 사용자 지정 정책)이 있습니다.
참고 항목
Azure Active Directory B2C에서 사용자 지정 정책은 주로 복잡한 시나리오를 처리합니다. 대부분의 시나리오에서는 기본 제공 사용자 흐름을 권장합니다.
사용자 흐름 및 사용자 지정 정책 비교를 참조하세요.
Azure AD B2C 및 BlokSec
Azure AD B2C(Azure Active Directory B2C) 인증을 BlokSec 탈중앙화 ID 라우터와 통합하는 방법을 알아봅니다. BlokSec 솔루션은 암호 없는 인증 및 토큰 없는 다단계 인증으로 사용자 로그인을 간소화합니다. 이 솔루션은 암호 입력, 피싱 및 중간자 개입과 같은 ID 관련 공격으로부터 고객을 보호합니다.
자세히 알아보려면 bloksec.com(BlokSec Technologies Inc.)으로 이동합니다.
시나리오 설명
BlokSec 통합에는 다음 구성 요소가 포함됩니다.
- Azure AD B2C – B2C 애플리케이션용 권한 부여 서버 및 IdP(ID 공급자)
- BlokSec 탈중앙화 ID 라우터 – BlokSec DIaaS를 적용하여 인증 및 권한 부여 요청을 사용자 PIdP(개인 ID 공급자) 애플리케이션으로 라우팅하는 서비스용 게이트웨이
- Azure AD B2C의 OIDC(OpenID Connect) ID 공급자입니다.
- BlokSec SDK 기반 모바일 앱 – 분산 인증 시나리오의 사용자 PIdP.
- BlokSec SDK를 사용하지 않는 경우 Google Play로 이동하여 무료 BlokSec yuID를 받으세요.
다음 아키텍처 다이어그램은 BlokSec 솔루션 구현의 등록, 로그인 흐름을 보여 줍니다.
- 사용자가 Azure AD B2C 애플리케이션에 로그인하고 Azure AD B2C 로그인 및 등록 정책으로 전달됩니다.
- Azure AD B2C는 OIDC 인증 코드 흐름을 사용하여 사용자를 BlokSec 탈중앙화 ID 라우터로 리디렉션합니다.
- BlokSec 라우터는 인증 및 권한 부여 요청 세부 정보와 함께 사용자 모바일 앱에 푸시 알림을 보냅니다.
- 사용자가 인증 질문을 검토합니다. 허용된 사용자에게는 지문 또는 안면 검사와 같은 생체 인식을 요구하는 메시지가 표시됩니다.
- 응답은 사용자의 고유한 디지털 키로 디지털 서명됩니다. 인증 응답은 소유, 존재 및 동의의 증거를 제공합니다. 응답은 라우터로 돌아갑니다.
- 라우터는 분산 원장에 저장된 사용자의 변경 불가능한 고유 공개 키에 대해 디지털 서명을 확인합니다. 라우터는 인증 결과로 Azure AD B2C에 응답합니다.
- 사용자에게 액세스 권한이 허용되거나 거부됩니다.
BlokSec 사용
- bloksec.com으로 이동하여 데모 요청 테넌트를 선택합니다.
- 메시지 필드에서 Azure AD B2C와 통합할 것임을 나타냅니다.
- 무료 BlokSec yuID 모바일 앱을 다운로드하여 설치합니다.
- 데모 테넌트가 준비되면 이메일이 도착합니다.
- BlokSec 애플리케이션이 있는 모바일 디바이스에서 링크를 선택하여 yuID 앱에 관리자 계정을 등록합니다.
필수 조건
시작하려면 다음이 필요합니다.
- Azure 구독
- 계정이 없으면 Azfree 계정을 만듭니다.
- Azure 구독에 연결된 Azure AD B2C 테넌트
- BlokSec 데모
- 웹 애플리케이션 등록
자습서: Azure AD B2C에서 사용자 흐름 및 사용자 지정 정책 만들기도 참조하세요.
BlokSec에서 애플리케이션 등록 만들기
BlokSec의 계정 등록 이메일에서 BlokSec 관리 콘솔 링크를 찾습니다.
- BlokSec 관리 콘솔에 로그인합니다.
- 기본 대시보드에서 애플리케이션 추가 > 사용자 지정 만들기를 선택합니다.
- 이름에 Azure AD B2C 또는 애플리케이션 이름을 입력합니다.
- SSO 형식으로 OIDC를 선택합니다.
- 로고 URI에 로고 이미지 링크를 입력합니다.
- 리디렉션 URI의 경우
https://your-B2C-tenant-name.b2clogin.com/your-B2C-tenant-name.onmicrosoft.com/oauth2/authresp
를 사용합니다. 예:https://fabrikam.b2clogin.com/fabrikam.onmicrosoft.com/oauth2/authresp
. 사용자 지정 도메인의 경우https://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp
를 입력합니다. - 로그아웃 후 리디렉션 URI의 경우
https://your-B2C-tenant-name.b2clogin.com/your-B2C-tenant-name.onmicrosoft.com/{policy}/oauth2/v2.0/logout
을 입력합니다. - 만들어진 Azure AD B2C 애플리케이션을 선택하여 애플리케이션 구성을 엽니다.
- 앱 비밀 생성을 선택합니다.
자세히 알아보기: 로그아웃 요청 보내기.
참고 항목
Azure AD B2C에서 IdP(ID 공급자)를 구성하려면 애플리케이션 ID와 애플리케이션 비밀이 필요합니다.
Azure AD B2C에서 새 ID 공급자 추가
다음 지침에서는 Azure AD B2C 테넌트가 포함된 디렉터리를 사용합니다.
- Azure AD B2C 테넌트의 전역 관리자로 Azure Portal에 로그인합니다.
- 포털 도구 모음에서 디렉터리 + 구독을 선택합니다.
- 포털 설정, 디렉터리 + 구독 페이지의 디렉터리 이름 목록에서 Azure AD B2C 디렉터리를 찾습니다.
- 전환을 선택합니다.
- Azure Portal의 왼쪽 위에서 모든 서비스를 선택합니다.
- Azure AD B2C를 검색하고 선택합니다.
- 대시보드>Azure Active Directory B2C>ID 공급자로 이동합니다.
- 새 OpenID Connect 공급자를 선택합니다.
- 추가를 선택합니다.
ID 공급자 구성
- ID 공급자 유형 > OpenID Connect를 선택합니다.
- 이름에 BlokSec yuID Passwordless 또는 다른 이름을 입력합니다.
- 메타데이터 URL에
https://api.bloksec.io/oidc/.well-known/openid-configuration
을 입력합니다. - 클라이언트 IDV에 BlokSec 관리 UI의 애플리케이션 ID를 입력합니다.
- 클라이언트 암호에 BlokSec 관리 UI의 애플리케이션 비밀을 입력합니다.
- 범위에서 OpenID 이메일 프로필을 선택합니다.
- 응답 형식의 경우 Code를 선택합니다.
- 도메인 힌트에서 yuID를 선택합니다.
- 확인을 선택합니다.
- 이 ID 공급자의 클레임 매핑을 선택합니다.
- 사용자 ID에서 sub를 선택합니다.
- 표시 이름에서 name을 선택합니다.
- 지정된 이름은 given_name을 사용합니다.
- 성으로 family_name을 사용합니다.
- 이메일에 email을 사용합니다.
- 저장을 선택합니다.
사용자 등록
- 제공된 자격 증명을 사용하여 BlokSec 관리 콘솔에 로그인합니다.
- 앞에서 만든 Azure AD B2C 애플리케이션으로 이동합니다.
- 오른쪽 상단에서 기어 아이콘을 선택합니다.
- 계정 만들기를 선택합니다.
- 계정 만들기에서 사용자 정보를 입력합니다. 계정 이름을 기록해 둡니다.
- 제출을 선택합니다.
사용자는 제공된 이메일 주소로 계정 등록 이메일을 받습니다. 사용자에게 BlokSec yuID 앱이 있는 모바일 디바이스에서 등록 링크를 선택하도록 안내합니다.
사용자 흐름 정책 만들기
다음 지침의 경우 BlokSec이 새로운 OIDC IdP(ID 공급자)인지 확인합니다.
- Azure AD B2C 테넌트에서, 정책 아래 사용자 흐름을 선택합니다.
- 새 사용자 흐름을 선택합니다.
- 가입 및 로그인>버전>만들기를 선택합니다.
- 정책 이름을 입력합니다.
- ID 공급자 섹션에서 만들어진 BlokSec ID 공급자를 선택합니다.
- 로컬 계정에 대해 없음을 선택합니다. 이 작업은 이메일 및 암호 기반 인증을 사용하지 않도록 설정합니다.
- 사용자 흐름 실행 선택
- 양식에서 회신 URL(예:
https://jwt.ms
)을 입력합니다. - 브라우저가 BlokSec 로그인 페이지로 리디렉션됩니다.
- 사용자 등록에서 계정 이름을 입력합니다.
- 사용자는 BlokSec yuID 애플리케이션이 있는 모바일 디바이스에서 푸시 알림을 받습니다.
- 사용자가 알림을 열면 인증 질문이 나타납니다.
- 인증이 수락되면 브라우저가 사용자를 회신 URL로 리디렉션합니다.
참고 항목
Azure Active Directory B2C에서 사용자 지정 정책은 주로 복잡한 시나리오를 처리합니다. 대부분의 시나리오에서는 기본 제공 사용자 흐름을 권장합니다.
사용자 흐름 및 사용자 지정 정책 비교를 참조하세요.
정책 키 만들기
Azure AD B2C 테넌트에 기록한 클라이언트 암호를 저장합니다. 다음 지침에서는 Azure AD B2C 테넌트와 함께 디렉터리를 사용합니다.
- Azure Portal에 로그인합니다.
- 포털 도구 모음에서 디렉터리 + 구독을 선택합니다.
- 포털 설정, 디렉터리 + 구독 페이지의 디렉터리 이름 목록에서 Azure AD B2C 디렉터리를 찾습니다.
- 전환을 선택합니다.
- Azure Portal의 왼쪽 상단 모서리에서 전체 서비스를 선택합니다.
- Azure AD B2C를 검색하고 선택합니다.
- 개요 페이지에서 Identity Experience Framework를 선택합니다.
- 정책 키를 선택합니다.
- 추가를 선택합니다.
- 옵션에서 수동을 선택합니다.
- 정책 키의 정책 이름을 입력합니다. 예:
BlokSecAppSecret
. 접두사B2C_1A_
가 키 이름에 추가됩니다. - 비밀에 기록해 둔 클라이언트 암호를 입력합니다.
- 키 사용으로는 서명을 선택합니다.
- 만들기를 실행합니다.
BlokSec을 ID 공급자로 구성
사용자가 BlokSec 탈중앙화 ID를 사용하여 로그인할 수 있도록 하려면 BlokSec을 클레임 공급자로 정의합니다. 이 작업은 Azure AD B2C가 엔드포인트를 통해 통신하도록 합니다. Azure AD B2C는 엔드포인트 클레임을 사용하여 지문 또는 안면 검사와 같은 생체 인식을 사용하여 사용자가 ID를 인증하는지 확인합니다.
BlokSec을 클레임 공급자로 정의하려면 정책 확장 파일의 ClaimsProvider 요소에 BlokSec을 추가합니다.
TrustFrameworkExtensions.xml
파일을 엽니다.ClaimsProviders 요소를 찾습니다. 요소가 나타나지 않으면 루트 요소 아래에 추가합니다.
새 ClaimsProvider를 추가하려면:
<ClaimsProvider> <Domain>bloksec</Domain> <DisplayName>BlokSec</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="BlokSec-OpenIdConnect"> <DisplayName>BlokSec</DisplayName> <Description>Login with your BlokSec decentriled identity</Description> <Protocol Name="OpenIdConnect" /> <Metadata> <Item Key="METADATA">https://api.bloksec.io/oidc/.well-known/openid-configuration</Item> <!-- Update the Client ID below to the BlokSec Application ID --> <Item Key="client_id">00000000-0000-0000-0000-000000000000</Item> <Item Key="response_types">code</Item> <Item Key="scope">openid profile email</Item> <Item Key="response_mode">form_post</Item> <Item Key="HttpBinding">POST</Item> <Item Key="UsePolicyInRedirectUri">false</Item> <Item Key="DiscoverMetadataByTokenIssuer">true</Item> <Item Key="ValidTokenIssuerPrefixes">https://api.bloksec.io/oidc</Item> </Metadata> <CryptographicKeys> <Key Id="client_secret" StorageReferenceId="B2C_1A_BlokSecAppSecret" /> </CryptographicKeys> <OutputClaims> <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" /> <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" /> <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" /> <OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="family_name" /> <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" /> <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" /> <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" /> </OutputClaims> <OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" /> <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" /> <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" /> <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId" /> </OutputClaimsTransformations> <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" /> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
client_id를 애플리케이션 등록의 애플리케이션 ID로 설정합니다.
저장을 선택합니다.
사용자 경험 추가
ID 공급자가 설정되었지만 로그인 페이지에 없는 경우 다음 지침을 따릅니다. 사용자 지정 사용자 경험이 없는 경우 템플릿 사용자 경험을 복사합니다.
- 시작 팩에서
TrustFrameworkBase.xml
파일을 엽니다. - ID=
SignUpOrSignIn
을 포함하는 UserJourneys 요소의 콘텐츠를 찾아 복사합니다. TrustFrameworkExtensions.xml
파일을 엽니다.- UserJourneys 요소를 찾습니다. 요소가 표시되지 않으면 요소를 추가합니다.
- UserJourneys 요소의 자식 항목으로 복사한 UserJourney 요소의 콘텐츠를 붙여넣습니다.
- 사용자 경험 ID의 이름을 바꿉니다. 예: ID=
CustomSignUpSignIn
.
사용자 경험에 ID 공급자 추가
사용자 경험이 있는 경우 새 ID 공급자를 추가합니다. 먼저 로그인 단추를 추가한 다음 만든 기술 프로필인 작업에 연결합니다.
- 사용자 경험에서 Type=
CombinedSignInAndSignUp
또는 Type=ClaimsProviderSelection
을 포함하는 오케스트레이션 단계 요소를 찾습니다. 일반적으로 첫 번째 오케스트레이션 단계입니다. ClaimsProviderSelections 요소에는 사용자 로그인을 위한 ID 공급자 목록이 포함되어 있습니다. 요소의 순서는 사용자에게 표시되는 로그인 단추의 순서를 제어합니다. - ClaimsProviderSelection XML 요소를 추가합니다.
- TargetClaimsExchangeId의 값을 친숙한 이름으로 설정합니다.
- 다음 오케스트레이션 단계에서 ClaimsExchange 요소를 추가합니다.
- Id를 대상 클레임 교환 ID 값으로 설정합니다.
- TechnicalProfileReferenceId 값을 만든 기술 프로필의 ID로 업데이트합니다.
다음 XML은 ID 공급자를 사용한 처음 두 사용자 과정 오케스트레이션 단계를 보여 줍니다.
<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
<ClaimsProviderSelections>
...
<ClaimsProviderSelection TargetClaimsExchangeId="BlokSecExchange" />
</ClaimsProviderSelections>
...
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
...
<ClaimsExchanges>
<ClaimsExchange Id="BlokSecExchange" TechnicalProfileReferenceId="BlokSec-OpenIdConnect" />
</ClaimsExchanges>
</OrchestrationStep>
신뢰 당사자 정책 구성
신뢰 당사자 정책(예: SignUpSignIn.xml)은 Azure AD B2C가 실행하는 사용자 경험을 지정합니다.
- 신뢰 당사자에서 DefaultUserJourney 요소를 찾습니다.
- ID 공급자를 추가한 사용자 경험 ID와 일치하도록 ReferenceId를 업데이트합니다.
다음 예제에서는 CustomSignUpOrSignIn
사용자 경험에 대해 ReferenceId가 CustomSignUpOrSignIn
으로 설정됩니다.
<RelyingParty>
<DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
...
</RelyingParty>
사용자 지정 정책 업로드
다음 지침에서는 Azure AD B2C 테넌트와 함께 디렉터리를 사용합니다.
- Azure Portal에 로그인합니다.
- 포털 도구 모음에서 디렉터리 + 구독을 선택합니다.
- 포털 설정, 디렉터리 + 구독 페이지의 디렉터리 이름 목록에서 Azure AD B2C 디렉터리를 찾습니다.
- 전환을 선택합니다.
- Azure Portal에서 Azure AD B2C를 검색하고 선택합니다.
- 정책에서 Identity Experience Framework를 선택합니다.
- 사용자 지정 정책 업로드를 선택합니다.
- 변경한 정책 파일 2개를 다음 순서로 업로드합니다.
- 확장 정책(예:
TrustFrameworkExtensions.xml
) - 신뢰 당사자 정책(예:
SignUpSignIn.xml
)
사용자 지정 정책 테스트
- 신뢰 당사자 정책(예:
B2C_1A_signup_signin
)을 선택합니다. - 애플리케이션에서 등록한 웹 애플리케이션을 선택합니다.
- 회신 URL은
https://jwt.ms
로 나타납니다. - 지금 실행을 선택합니다.
- 등록 또는 로그인 페이지에서 Google을 선택하여 Google 계정으로 로그인합니다.
- 브라우저가
https://jwt.ms
로 리디렉션됩니다. Azure AD B2C에서 반환된 토큰 콘텐츠를 참조하세요.
자세히 알아보기: 자습서: Azure Active Directory B2C에서 웹 애플리케이션 등록