2017-10-04 6 views
0

나는 Azure AD B2C 세입자를 사용하는 기존 신청서 "A"를 가지고 있습니다. 등록하는 동안 사용자는 "NumberA"라는 이름으로 소유권 주장에 저장된 번호 (이 신청서 "A"에 해당)를 입력해야합니다.동일한 Azure AD B2C 임차인을 사용하여 새 신청에 대한 새로운 클레임을 신청하는 방법

이제 새로운 응용 프로그램 "B"를 만들고 싶습니다. 내 거주자의 기존 사용자가 응용 프로그램 "B"에 로그인 할 수있게하려고합니다. 그러나 그들은 그것을 사용할 수 있기 전에 "NumberB"라는 이름으로 Claim에 저장된 새로운 번호 (응용 프로그램 "B"에만 해당)를 입력하라는 메시지를 표시해야합니다.

응용 프로그램 "B"의 새로운 사용자는 자신을 등록 할 때 "B"의 번호 만 입력하면됩니다.

이것이 가능해야한다고 생각하지만이 작업을 수행하는 방법을 잘 모르겠습니다.

"B2C_AppB_signup_signin"이라는 새 사용자 지정 정책을 만드시겠습니까? 그리고 새로운 "확장"파일과 "재정의"기술 프로파일 (AAD-UserWriteUsingLogonEmail 등 AAD-UserReadUsingEmailAddress)

또는이 잘못된 경로에 새로운 주장 "NumberB"를 추가 ..

+0

에게 설명했다 정책

보다는 기능의 응용 프로그램을 수정할 수 있습니다

그 방법! – spottedmahn

답변

2

당신은 올바른 길을 가고 있습니다.

응용 프로그램 A와 응용 B의 두 가지 사용자 여행을 만든 다음 응용 프로그램 별 소유권 주장을 요구하는 두 사용자 여행에서 오케스트레이션 단계에 ClaimsExist 전제 조건을 추가하여 구현할 수 있습니다.

예 : 응용 프로그램 B의 가입 또는 로그인 사용자 여정의 경우 Azure Active Directory에서 사용자 개체를 읽은 후에 다음과 같은 오케스트레이션 단계를 추가 할 수 있습니다 (최종 사용자가 기존 계정으로 로그인 한 후 또는 "extension_NumberB"주장은 다음이 사용자 객체에 존재하지 않을 경우 여부를 확인 새로운 계정)에 가입 그것을 위해 프롬프트

<OrchestrationStep Order="4" Type="ClaimsExchange"> 
    <Preconditions> 
    <Precondition Type="ClaimsExist" ExecuteActionsIf="true"> 
     <Value>extension_NumberB</Value> 
     <Action>SkipThisOrchestrationStep</Action> 
    </Precondition> 
    </Preconditions> 
    <ClaimsExchanges> 
    <ClaimsExchange Id="SelfAssertedApplicationBRegistrationExchange" TechnicalProfileReferenceId="SelfAsserted-ApplicationB-Registration" /> 
    </ClaimsExchanges> 
</OrchestrationStep> 

는 그런 다음 "SelfAsserted - 애플리케이션 B-등록"기술 프로파일을 추가 :

<TechnicalProfile Id="SelfAsserted-ApplicationB-Registration"> 
    <DisplayName>Application B Registration</DisplayName> 
    <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> 
    <Metadata> 
    <Item Key="ContentDefinitionReferenceId">api.selfasserted.applicationb.registration</Item> 
    </Metadata> 
    <CryptographicKeys> 
    <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" /> 
    </CryptographicKeys> 
    <IncludeInSso>false</IncludeInSso> 
    <InputClaims> 
    <InputClaim ClaimTypeReferenceId="objectId" Required="true" /> 
    </InputClaims> 
    <OutputClaims> 
    <OutputClaim ClaimTypeReferenceId="extension_NumberB" Required="true" /> 
    </OutputClaims> 
    <ValidationTechnicalProfiles> 
    <ValidationTechnicalProfile ReferenceId="AAD-UserWriteProfileUsingObjectId" /> 
    </ValidationTechnicalProfiles> 
</TechnicalProfile> 

그런 다음 "extension_NumberB"클레임을 "AAD-UserReadUsingObjectId"기술 프로필의 경우 <OutputClaim />으로, "AAD-UserWriteProfileUsingObjectId"기술 프로필의 경우 <PersistedClaim />으로 추가해야합니다.

+0

나는 거의 일하고있다. "SelfAsserted-ApplicationB-Registration"은 어떤 모양입니까? – Rikkert

+0

위의 답변을 "SelfAsserted-ApplicationB-Registration"기술 프로필로 업데이트했습니다. –

1

2 개의 정책을 관리해야하지만 3 번째 또는 4 번째 클라이언트를 관리하기로 결정한 경우 관리해야 할 정책이 많습니다.

{OIDC : ClientId} 앱의 client_id를 허용하고 나머지 값을 기반으로 청구 값을 반환하는 함수 앱에 대한 나머지 호출을 만드는 것이 좋습니다. 당신이 오직 하나 개의 정책이 다음 내가 여기에이 방법을 작동합니다

Get the Azure AD B2C Application client id in the custom policy

+0

더 많은 고객이있는 경우이 솔루션을 확실히 볼 수 있습니다. 당신이 말했듯이 그것은 정책 파일 유지 보수를 저장합니다. 하지만 먼저 원리를 작동시키고 싶습니다. – Rikkert