UserJourneys
참고 항목
Azure Active Directory B2C에서 사용자 지정 정책은 주로 복잡한 시나리오를 해결하기 위해 설계되었습니다. 대부분의 시나리오에서 기본 제공 사용자 흐름을 사용하는 것이 좋습니다. 아직 수행하지 않았다면 Active Directory B2C에서 사용자 지정 정책 시작하기에서 사용자 지정 정책 스타터 팩에 대해 알아봅니다.
사용자 경험은 명시적 경로를 지정합니다. 이 경로를 통해 정책은 신뢰 당사자 애플리케이션이 사용자에 대해 원하는 클레임을 가져오도록 허용합니다. 이러한 경로를 통해 사용자를 가져와서 신뢰 당사자에게 표시할 클레임을 검색합니다. 즉, 사용자 경험은 Azure AD B2C ID 경험 프레임워크가 요청을 처리할 때 최종 사용자가 겪는 작업의 비즈니스 논리를 정의합니다.
이 사용자 경험은 관심 커뮤니티의 다양한 신뢰 당사자 요구를 충족하는 데 사용할 수 있는 템플릿으로 간주할 수 있습니다. 사용자 경험을 통해 정책의 신뢰 당사자 부분을 쉽게 정의할 수 있습니다. 정책은 여러 사용자 경험을 정의할 수 있습니다. 각 사용자 경험은 오케스트레이션 단계의 시퀀스입니다.
정책에서 지원하는 사용자 경험을 정의하기 위해 UserJourneys
요소가 정책 파일의 최상위 TrustFrameworkPolicy
요소 아래에 추가됩니다.
<TrustFrameworkPolicy ...>
...
<UserJourneys>
...
</UserJourneys>
</TrustFrameworkPolicy>
UserJourneys 요소에는 다음 요소가 포함됩니다.
요소 | 발생 | 설명 |
---|---|---|
UserJourney | 1:n | 전체 사용자 흐름에 필요한 모든 구문을 정의하는 사용자 경험입니다. |
UserJourney 요소에는 다음 특성이 포함됩니다.
attribute | 필수 | 설명 |
---|---|---|
ID | 예 | 정책의 다른 요소에서 참조하는 데 사용할 수 있는 사용자 경험의 식별자입니다. 신뢰 당사자 정책의 DefaultUserJourney 요소는 이 특성을 가리킵니다. |
DefaultCpimIssuerTechnicalProfileReferenceId | 아니요 | 기본 토큰 발급자 기술 프로필 참조 ID입니다. 예를 들어, JWT 토큰 발급자, SAML 토큰 발급자 또는 OAuth2 사용자 지정 오류입니다. 사용자 경험 또는 하위 경험에 이미 다른 SendClaims 오케스트레이션 단계가 있는 경우 특성을 사용자 경험의 토큰 발급자 기술 프로필로 설정합니다 DefaultCpimIssuerTechnicalProfileReferenceId . |
UserJourney 요소에는 다음과 같은 요소가 포함됩니다.
요소 | 발생 | 설명 |
---|---|---|
AuthorizationTechnicalProfiles | 0:1 | 권한 부여 기술 프로필 목록입니다. |
OrchestrationSteps | 1:n | 성공적인 트랜잭션을 위해 따라야 하는 오케스트레이션 시퀀스입니다. 모든 사용자 경험은 순서대로 실행되는 오케스트레이션 단계의 순서가 지정된 목록으로 구성됩니다. 단계가 실패하면 트랜잭션이 실패합니다. |
AuthorizationTechnicalProfiles
사용자가 UserJourney를 완료하고 액세스 또는 ID 토큰을 획득했다고 가정합니다. UserInfo 엔드포인트 같은 추가 리소스를 관리하려면 사용자가 식별되어야 합니다. 이 프로세스를 시작하려면 사용자는 이전에 발급된 액세스 토큰을 유효한 Azure AD B2C 정책에 의해 원래 인증되었다는 증거로 제시해야 합니다. 사용자가 이 요청을 수행할 수 있도록 하려면 이 프로세스 중에 사용자에 대한 유효한 토큰이 항상 있어야 합니다. 권한 부여 기술 프로필은 들어오는 토큰의 유효성을 검사하고 토큰에서 클레임을 추출합니다.
AuthorizationTechnicalProfiles 요소에는 다음 요소가 포함됩니다.
요소 | 발생 | 설명 |
---|---|---|
AuthorizationTechnicalProfile | 0:1 | 사용자에게 권한을 부여하는 데 사용되는 기술 프로필 참조입니다. |
AuthorizationTechnicalProfile 요소에는 다음 특성이 포함됩니다.
attribute | 필수 | 설명 |
---|---|---|
참조 | 예 | 실행할 기술 프로필의 식별자입니다. |
다음 예제에서는 권한 부여 기술 프로필이 있는 사용자 경험 요소를 보여 줍니다.
<UserJourney Id="UserInfoJourney" DefaultCpimIssuerTechnicalProfileReferenceId="UserInfoIssuer">
<Authorization>
<AuthorizationTechnicalProfiles>
<AuthorizationTechnicalProfile ReferenceId="UserInfoAuthorization" />
</AuthorizationTechnicalProfiles>
</Authorization>
<OrchestrationSteps>
<OrchestrationStep Order="1" Type="ClaimsExchange">
...
OrchestrationSteps
사용자 경험은 트랜잭션을 정상적으로 수행하려면 따라야 하는 오케스트레이션 시퀀스로 표시됩니다. 단계가 실패하면 트랜잭션이 실패합니다. 이러한 오케스트레이션 단계에서는 정책 파일에서 허용되는 구성 요소와 클레임 공급자를 모두 참조합니다. 사용자 환경을 표시하거나 렌더링하는 모든 오케스트레이션 단계에는 해당 콘텐츠 정의 식별자에 대한 참조도 있습니다.
오케스트레이션 단계 요소는 오케스트레이션 단계 요소에 정의된 사전 조건에 따라 조건부로 실행할 수 있습니다. 예를 들어 특정 클레임이 있거나 클레임이 지정된 값과 같은지 아닌 경우에만 오케스트레이션 단계를 수행하도록 확인할 수 있습니다.
오케스트레이션 단계의 정렬된 목록을 지정하기 위해 OrchestrationSteps 요소가 정책의 일부로 추가됩니다. 이 요소는 필수 요소입니다.
<UserJourney Id="SignUpOrSignIn">
<OrchestrationSteps>
<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
...
OrchestrationSteps 요소에는 다음과 같은 요소가 포함됩니다.
요소 | 발생 | 설명 |
---|---|---|
OrchestrationStep | 1:n | 순서가 지정된 오케스트레이션 단계입니다. |
OrchestrationStep 요소에는 다음 특성이 포함됩니다.
attribute | 필수 | 설명 |
---|---|---|
Order |
예 | 오케스트레이션 단계의 순서입니다. 특성의 Order 값은 을 통해 N 시작됩니다1 . 따라서 10단계가 있고 두 번째 단계를 삭제하는 경우 3~10단계를 다시 열면 2~9단계가 됩니다. |
Type |
예 | 오케스트레이션 단계의 형식입니다. 가능한 값:
|
ContentDefinitionReferenceId | 아니요 | 이 오케스트레이션 단계와 연결된 콘텐츠 정의의 식별자입니다. 일반적으로 콘텐츠 정의 참조 식별자는 자체 어설션된 기술 프로필에 정의됩니다. 그러나 Azure AD B2C가 기술 프로필 없이 무언가를 표시해야 하는 경우가 있습니다. 두 가지 예가 있습니다. 오케스트레이션 단계의 유형이 ClaimsProviderSelection 또는 CombinedSignInAndSignUp 중 하나인 경우 Azure AD B2C는 기술 프로필 없이 ID 공급자 선택을 표시해야 합니다. |
CpimIssuerTechnicalProfileReferenceId | 아니요 | 오케스트레이션 단계의 형식은 .입니다 SendClaims . 이 속성은 신뢰 당사자에 대한 토큰을 발급하는 클레임 공급자의 기술 프로필 식별자를 정의합니다. 해당 식별자가 없으면 신뢰 당사자 토큰이 생성되지 않습니다. |
OrchestrationStep 요소에는 다음과 같은 요소가 포함될 수 있습니다.
요소 | 발생 | 설명 |
---|---|---|
전제 조건 | 0:n | 오케스트레이션 단계를 실행하려면 충족해야 하는 전제 조건 목록입니다. |
ClaimsProviderSelections | 0:n | 오케스트레이션 단계의 클레임 공급자 선택 항목 목록입니다. |
ClaimsExchanges | 0:n | 오케스트레이션 단계에 대한 클레임 교환 목록입니다. |
JourneyList | 0:1 | 오케스트레이션 단계에 대한 하위 경험 후보 목록입니다. |
전제 조건
오케스트레이션 단계에 정의된 전제 조건에 따라 오케스트레이션 단계를 조건부로 실행하면 됩니다. 요소 Preconditions
에는 평가할 사전 조건 목록이 포함되어 있습니다. 사전 조건 평가가 충족되면 연결된 오케스트레이션 단계는 다음 오케스트레이션 단계로 건너뜁니다.
Azure AD B2C는 사전 조건을 목록 순서로 평가합니다. 주문 기반 사전 조건을 사용하면 사전 조건이 적용되는 순서를 설정할 수 있습니다. 충족된 첫 번째 사전 조건은 모든 후속 사전 조건을 재정의합니다. 오케스트레이션 단계는 모든 사전 조건이 충족되지 않는 경우에만 실행됩니다.
Preconditions 요소에는 다음 요소가 포함됩니다.
요소 | 발생 | 설명 |
---|---|---|
사전 조건 | 1:n | 평가할 전제 조건입니다. |
사전 조건
Precondition 요소에는 다음 특성이 포함됩니다.
attribute | 필수 | 설명 |
---|---|---|
Type |
예 | 이 전제 조건에 대해 수행할 확인이나 쿼리의 유형입니다. 값은 사용자의 현재 클레임 집합에 지정된 클레임이 있는 경우 작업을 수행하도록 지정하는 ClaimsExist 또는 지정된 클레임이 존재하고 해당 값이 지정된 값과 같으면 작업을 수행하도록 지정하는 ClaimEquals일 수 있습니다. |
ExecuteActionsIf |
예 | 전제 조건이 충족되는 것으로 간주되는 방법을 결정합니다. 가능한 값은 true 또는 false 입니다. 값이 설정된 true 경우 클레임이 전제 조건과 일치할 때 충족되는 것으로 간주됩니다. 값이 설정된 false 경우 클레임이 전제 조건과 일치하지 않을 때 충족되는 것으로 간주됩니다. |
Precondition 요소에는 다음과 같은 요소가 포함됩니다.
요소 | 발생 | 설명 |
---|---|---|
값 | 1:2 | 클레임 형식의 식별자입니다. 클레임은 정책 파일 또는 부모 정책 파일의 클레임 스키마 섹션에 이미 정의되어 있습니다. 사전 조건의 ClaimEquals 형식인 경우 두 번째 Value 요소에는 검사할 값이 포함됩니다. |
작업 | 1:1 | 사전 조건 평가가 충족되는 경우 수행해야 하는 작업입니다. 가능한 값: SkipThisOrchestrationStep . 연결된 오케스트레이션 단계는 다음 단계로 건너뜁니다. |
각 사전 조건은 단일 클레임을 평가합니다. 다음과 같은 두 가지 유형의 사전 조건이 있습니다.
ClaimsExist - 지정된 클레임이 사용자의 현재 클레임 모음에 있는 경우 작업을 수행하도록 지정합니다.
ClaimEquals - 지정된 클레임이 있고 해당 값이 지정된 값과 같으면 작업을 수행하도록 지정합니다. 검사는 대/소문자를 구분하는 서수 비교를 수행합니다. 부울 클레임 유형을 확인할 때 사용
True
하거나False
.클레임이 null이거나 초기화되지 않은 경우
ExecuteActionsIf
가true
인지 또는false
인지 관계없이 사전 조건이 무시됩니다. 모범 사례로 클레임이 존재하고 값과 같은지 확인합니다.
예제 시나리오는 사용자가 설정된 경우 MFA에 대해 사용자에게 MfaPreference
이의를 제기하는 것입니다 Phone
. 이 조건부 논리를 수행하려면 클레임이 MfaPreference
있는지 확인하고 클레임 값이 같는지 확인합니다 Phone
. 다음 XML에서는 사전 조건을 사용하여 이 논리를 구현하는 방법을 보여 줍니다.
<Preconditions>
<!-- Skip this orchestration step if MfaPreference doesn't exist. -->
<Precondition Type="ClaimsExist" ExecuteActionsIf="false">
<Value>MfaPreference</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
<!-- Skip this orchestration step if MfaPreference doesn't equal to Phone. -->
<Precondition Type="ClaimEquals" ExecuteActionsIf="false">
<Value>MfaPreference</Value>
<Value>Phone</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
사전 조건 예제
다음 전제 조건은 사용자의 objectId가 있는지 여부를 확인합니다. 사용자 경험에서 사용자는 로컬 계정을 사용하여 로그인하도록 선택했습니다. objectId가 있는 경우 이 오케스트레이션 단계를 건너뜁니다.
<OrchestrationStep Order="2" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>objectId</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="FacebookExchange" TechnicalProfileReferenceId="Facebook-OAUTH" />
<ClaimsExchange Id="SignUpWithLogonEmailExchange" TechnicalProfileReferenceId="LocalAccountSignUpWithLogonEmail" />
</ClaimsExchanges>
</OrchestrationStep>
다음 전제 조건은 사용자가 소셜 계정으로 로그인했는지 여부를 확인합니다. 디렉터리에서 사용자 계정을 찾으려고 시도합니다. 사용자가 로컬 계정을 사용하여 로그인하거나 등록하는 경우에는 이 오케스트레이션 단계를 건너뜁니다.
<OrchestrationStep Order="3" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimEquals" ExecuteActionsIf="true">
<Value>authenticationSource</Value>
<Value>localAccountAuthentication</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="AADUserReadUsingAlternativeSecurityId" TechnicalProfileReferenceId="AAD-UserReadUsingAlternativeSecurityId-NoError" />
</ClaimsExchanges>
</OrchestrationStep>
사전 조건은 여러 사전 조건을 확인할 수 있습니다. 다음 예제에서는 'objectId' 또는 'email'이 있는지 여부를 확인합니다. 첫 번째 조건이 true이면 다음 오케스트레이션 단계로 건너뜁니다.
<OrchestrationStep Order="4" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>objectId</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>email</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="SelfAsserted-SocialEmail" TechnicalProfileReferenceId="SelfAsserted-SocialEmail" />
</ClaimsExchanges>
</OrchestrationStep>
클레임 공급자 선택
클레임 공급자를 선택하면 사용자가 옵션 목록에서 작업을 선택할 수 있습니다. ID 공급자 선택은 두 개의 오케스트레이션 단계 쌍으로 구성됩니다.
- 단추 - 이 단추는 형식
ClaimsProviderSelection
으로 시작하거나CombinedSignInAndSignUp
사용자가 선택할 수 있는 옵션 목록을 포함합니다. 요소 내ClaimsProviderSelections
의 옵션 순서는 사용자에게 표시되는 단추의 순서를 제어합니다. - 작업 - 그 다음에는 형식이
ClaimsExchange
있습니다. ClaimsExchange에는 작업 목록이 포함됩니다. 작업은 OAuth2, OpenID Connect, 클레임 변환 또는 자체 어설션과 같은 기술 프로필에 대한 참조입니다. 사용자가 단추 중 하나를 클릭하면 해당 작업이 실행됩니다.
ClaimsProviderSelections 요소에는 다음 요소가 포함됩니다.
요소 | 발생 | 설명 |
---|---|---|
ClaimsProviderSelection | 1:n | 선택할 수 있는 클레임 공급자의 목록을 제공합니다. |
ClaimsProviderSelections 요소에는 다음 특성이 포함됩니다.
attribute | 필수 | 설명 |
---|---|---|
DisplayOption | 아니요 | 단일 클레임 공급자 선택을 사용할 수 있는 경우의 동작을 제어합니다. 가능한 값: DoNotShowSingleProvider (기본값) 사용자가 페더레이션 ID 공급자로 즉시 리디렉션됩니다. 또는 ShowSingleProvider Azure AD B2C는 단일 ID 공급자 선택 항목이 있는 로그인 페이지를 제공합니다. 이 특성을 사용하려면 콘텐츠 정의 버전이 이상이어야 urn:com:microsoft:aad:b2c:elements:contract:providerselection:1.0.0 합니다. |
ClaimsProviderSelection 요소에는 다음 특성이 포함됩니다.
attribute | 필수 | 설명 |
---|---|---|
TargetClaimsExchangeId | 아니요 | 클레임 공급자 선택 항목의 다음 오케스트레이션 단계에서 실행되는 클레임 교환의 식별자입니다. 이 특성 또는 ValidationClaimsExchangeId 특성을 지정해야 하지만 둘 다 지정해야 하는 것은 아닙니다. |
ValidationClaimsExchangeId | 아니요 | 클레임 공급자 선택의 유효성을 검사하기 위해 현재 오케스트레이션 단계에서 실행되는 클레임 교환의 식별자입니다. 이 특성 또는 TargetClaimsExchangeId 특성을 지정해야 하지만 둘 다 지정하지는 않습니다. |
클레임 공급자 선택 예제
다음 오케스트레이션 단계에서 사용자는 Facebook, LinkedIn, X, Google 또는 로컬 계정으로 로그인하도록 선택할 수 있습니다. 사용자가 소셜 ID 공급자 중 하나를 선택하면 TargetClaimsExchangeId
특성에 지정된 선택한 클레임 교환을 사용하여 두 번째 오케스트레이션 단계가 실행됩니다. 두 번째 오케스트레이션 단계는 사용자를 소셜 ID 공급자로 리디렉션하여 로그인 프로세스를 완료합니다. 사용자가 로컬 계정으로 로그인하도록 선택하는 경우 Azure AD B2C는 동일한 오케스트레이션 단계(동일한 등록 페이지 또는 로그인 페이지)를 유지하고 두 번째 오케스트레이션 단계를 건너뜁니다.
<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
<ClaimsProviderSelections>
<ClaimsProviderSelection TargetClaimsExchangeId="FacebookExchange" />
<ClaimsProviderSelection TargetClaimsExchangeId="LinkedInExchange" />
<ClaimsProviderSelection TargetClaimsExchangeId="TwitterExchange" />
<ClaimsProviderSelection TargetClaimsExchangeId="GoogleExchange" />
<ClaimsProviderSelection ValidationClaimsExchangeId="LocalAccountSigninEmailExchange" />
</ClaimsProviderSelections>
<ClaimsExchanges>
<ClaimsExchange Id="LocalAccountSigninEmailExchange"
TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>objectId</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="FacebookExchange" TechnicalProfileReferenceId="Facebook-OAUTH" />
<ClaimsExchange Id="SignUpWithLogonEmailExchange" TechnicalProfileReferenceId="LocalAccountSignUpWithLogonEmail" />
<ClaimsExchange Id="GoogleExchange" TechnicalProfileReferenceId="Google-OAUTH" />
<ClaimsExchange Id="LinkedInExchange" TechnicalProfileReferenceId="LinkedIn-OAUTH" />
<ClaimsExchange Id="TwitterExchange" TechnicalProfileReferenceId="Twitter-OAUTH1" />
</ClaimsExchanges>
</OrchestrationStep>
ClaimsExchanges
ClaimsExchanges 요소에는 다음과 같은 요소가 포함됩니다.
요소 | 발생 | 설명 |
---|---|---|
ClaimsExchange | 1:n | 사용 중인 기술 프로필별로 선택한 ClaimsProviderSelection에 따라 클라이언트를 리디렉션하거나 교환 클레임에 대한 서버 호출을 수행합니다. |
ClaimsExchange 요소에는 다음 특성이 포함됩니다.
attribute | 필수 | 설명 |
---|---|---|
ID | 예 | 클레임 교환 단계의 식별자입니다. 식별자는 정책의 클레임 공급자 선택 단계에서 클레임 교환을 참조하는 데 사용됩니다. |
TechnicalProfileReferenceId | 예 | 실행할 기술 프로필의 식별자입니다. |
JourneyList
JourneyList 요소에는 다음 요소가 포함됩니다.
요소 | 발생 | 설명 |
---|---|---|
Candidate(후보) | 1:1 | 호출할 하위 경험에 대한 참조입니다. |
Candidate(후보)
Candidate 요소에는 다음 특성이 포함됩니다.
attribute | 필수 | 설명 |
---|---|---|
SubJourneyReferenceId | 예 | 실행할 하위 경험의 식별자입니다. |