是否可以根据signUp时选择的IDP显示属性

时间:2018-04-03 16:57:26

标签: azure-ad-b2c

我们使用自定义SignUp / SignIn政策将Facebook,LinkedIn,Twitter,Google和AzureAD配置为我们的提供商。

当用户使用社交Idp(Facebook,LinkedIn,Twitter,Google)签名时,我们要求提供商业电子邮件,但是当选择Azure AD时(因为他们已经在使用他们的企业电子邮件),我们要求提供商业电子邮件。

我已将新属性添加到此部分

<TechnicalProfile Id="SelfAsserted-Social">

请建议。

1 个答案:

答案 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>