我们使用自定义SignUp / SignIn政策将Facebook,LinkedIn,Twitter,Google和AzureAD配置为我们的提供商。
当用户使用社交Idp(Facebook,LinkedIn,Twitter,Google)签名时,我们要求提供商业电子邮件,但是当选择Azure AD时(因为他们已经在使用他们的企业电子邮件),我们要求提供商业电子邮件。
我已将新属性添加到此部分
<TechnicalProfile Id="SelfAsserted-Social">
请建议。
答案 0 :(得分:1)
首先,您必须确定是否已登录企业帐户或社交帐户。
例如:
<TechnicalProfile Id="ContosoProfile">
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="contosoAuthentication" />
</OutputClaims>
</TechnicalProfile>
和
<TechnicalProfile Id="Facebook-OAUTH">
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" />
</OutputClaims>
</TechnicalProfile>
其次,您必须为帐户注册创建两个技术配置文件:一个用于企业帐户注册的技术配置文件,用于排除企业电子邮件,另一个技术配置文件用于包含它的社交帐户注册。
例如:
<ClaimsProvider>
<DisplayName>Self Asserted</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="SelfAsserted-Enterprise">
...
</TechnicalProfile>
<TechnicalProfile Id="SelfAsserted-Social">
...
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
第三,根据authenticationSource
声明,您必须调用一个或另一个技术配置文件。
例如:
<UserJourney Id="SignUpOrSignIn">
<OrchestrationSteps>
<OrchestrationStep Order="4" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>objectId</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
<Precondition Type="ClaimEquals" ExecuteActionsIf="true">
<Value>authenticationSource</Value>
<Value>socialIdpAuthentication</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="SelfAsserted-Enterprise" TechnicalProfileReferenceId="SelfAsserted-Enterprise" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="5" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>objectId</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
<Precondition Type="ClaimEquals" ExecuteActionsIf="true">
<Value>authenticationSource</Value>
<Value>contosoAuthentication</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="SelfAsserted-Social" TechnicalProfileReferenceId="SelfAsserted-Social" />
</ClaimsExchanges>
</OrchestrationStep>
</OrchestrationSteps>
</UserJourney>