首页 > 解决方案 > 如何避免将外部认证用户添加到我们的 B2C 目录

问题描述

我们正在尝试在 AAD B2C 中配置自定义策略,以允许某些用户通过其公司的 SSO 提供程序登录。提供者是 Ping。使用 SAML 2.0。一切正常,但用户成功登录 Ping 后,需要将其添加到本地 B2C 目录。我们不希望这些用户在我们的 B2C 目录中。有没有办法避免这种情况?

<ClaimsProvider>
    <Domain>Ping</Domain>
    <DisplayName>Ping Login</DisplayName>
    <TechnicalProfiles>
        <TechnicalProfile Id="Ping-SAML">
            <DisplayName>Sign in to Ping</DisplayName>
            <Description>Login with your Ping account</Description>
            <Protocol Name="SAML2"/>
            <Metadata>
                <Item Key="WantsEncryptedAssertions">false</Item>
                <Item Key="WantsSignedAssertions">false</Item>
                <Item Key="PartnerEntity">URL FOR FB2C_1A_TrustFrameworkBase</Item>
            </Metadata>
            <CryptographicKeys>
                <Key Id="SamlAssertionSigning" StorageReferenceId="B2C_1A_PingSamlCert"/>
                <Key Id="SamlMessageSigning" StorageReferenceId="B2C_1A_PingCert"/>
                <Key Id="SamlAssertionDecryption" StorageReferenceId="B2C_1A_PingCert" />
            </CryptographicKeys>
            <OutputClaims>
                <OutputClaim ClaimTypeReferenceId="socialIdpUserId" PartnerClaimType="uid"/>
                <OutputClaim ClaimTypeReferenceId="tenantId" PartnerClaimType="tid"/>
                <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="fname"/>
                <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="lname"/>
                <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="Ping.com" />
                <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication"/>   
            </OutputClaims>
            <OutputClaimsTransformations>
                <OutputClaimsTransformation ReferenceId="CreateDisplayName"/>
                <OutputClaimsTransformation ReferenceId="CreateEmail"/>
                <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
                <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
                <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
                <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
            </OutputClaimsTransformations>
            <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop"/>
        </TechnicalProfile>
    </TechnicalProfiles>
</ClaimsProvider>        

<UserJourney Id="SignUpOrSignInPing">
    <OrchestrationSteps>

        <OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
            <ClaimsProviderSelections>
                <ClaimsProviderSelection TargetClaimsExchangeId="PingExchange" />
            </ClaimsProviderSelections>
        </OrchestrationStep>

        <OrchestrationStep Order="2" Type="ClaimsExchange">
            <ClaimsExchanges>
                <ClaimsExchange Id="PingExchange" TechnicalProfileReferenceId="Ping-SAML" />
            </ClaimsExchanges>
        </OrchestrationStep>

        <OrchestrationStep Order="3" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />

    </OrchestrationSteps>
    <ClientDefinition ReferenceId="DefaultWeb" />
</UserJourney>

标签: azure-ad-b2c

解决方案


使用自定义策略,您可以传递外部身份,而无需在 Azure AD B2C 租户中为其创建参考用户。

例子:

<UserJourney Id="SignIn">
  <OrchestrationSteps>
    <OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
      <ClaimsProviderSelections>
        <ClaimsProviderSelection TargetClaimsExchangeId="PingExchange" />
      </ClaimsProviderSelections>
    </OrchestrationStep>
    <OrchestrationStep Order="2" Type="ClaimsExchange">
      <ClaimsExchanges>
        <ClaimsExchange Id="PingExchange" TechnicalProfileReferenceId="PingProfile" />
      </ClaimsExchanges>
    </OrchestrationStep>
    <OrchestrationStep Order="3" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
  </OrchestrationSteps>
</UserJourney>

您可能需要根据PingProfile技术配置文件中 Ping 发出的声明生成 Azure AD B2C 的objectId声明,以便 Azure AD B2C 的 JWT 颁发者可以将此objectId声明包含在刷新令牌中(如果向您的 Azure AD B2C 应用程序颁发)。


推荐阅读