在自定义B2C策略中使用现有身份提供商



我们一直在使用在身份提供程序页面上创建的OpenID身份提供程序。此身份提供程序连接到我们的Azure AD.

我们现在需要切换到自定义策略,这样我们就可以在从azure函数检索的令牌中包含一些附加信息。

问题是,即使我们在自定义策略中使用了相同的openID连接信息,它仍然被视为一个新的身份提供程序,并且任何登录的用户都将创建一个新用户,因此也将有一个新OID。

我们需要他们使用相同的身份提供程序登录,并使用相同的现有用户/oid,但要通过我们的自定义策略,以便我们可以将信息添加到令牌中。

我假设您正在添加Azure AD(单个租户(IDP。因此,您添加的元数据是https://login.microsoftonline.com/{tenant}/v2.0.众所周知的/openid配置。用您的租户值替换{tenant}。此外,请确保在自定义策略中具有以下UserID和identityprovider的配置,因为在AzureAD IDP流中,它会根据alternativeSecurityID检查它是否存在于B2C租户中,如果不存在,则它会创建一个新ID,否则它将传递ObjectID。

<OutputClaims>
<OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="oid"/>
<OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" />
</OutputClaims>
<OutputClaimsTransformations>
<OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
</OutputClaimsTransformations>

Azure AD身份验证后,B2C调用此技术配置文件以读取B2C租户中的用户详细信息:

<TechnicalProfile Id="AAD-UserReadUsingAlternativeSecurityId">
<Metadata>
<Item Key="Operation">Read</Item>
<Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">false</Item>
</Metadata>
<InputClaims>
<InputClaim ClaimTypeReferenceId="AlternativeSecurityId" 
PartnerClaimType="alternativeSecurityId" Required="true" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="objectId" />
<OutputClaim ClaimTypeReferenceId="userPrincipalName" />
<OutputClaim ClaimTypeReferenceId="displayName" />
<OutputClaim ClaimTypeReferenceId="otherMails" />
<OutputClaim ClaimTypeReferenceId="givenName" />
<OutputClaim ClaimTypeReferenceId="surname" />
</OutputClaims>
<IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>

最新更新