azure-ad-b2c - 如何避免将外部认证用户添加到我们的 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 租户中为其创建参考用户。
例子:
<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 应用程序颁发)。
推荐阅读
- android - 运行发布构建时出现异常'处理任务java.io.IOException时出现异常:'如何解决这个问题?
- excel - 事件点击单元格
- ios - 滚动视图中的刷新控件无法快速工作
- java - 尽管检查以防止文件有时被覆盖
- rest - 使用 HttpClient 发送对 LogStash 的 PUT 请求失败,使用 cURL 发送成功
- angular - Angular 7“未定义”变量
- fix-protocol - QuickFix4J 正在截断 FIX 消息中的重复组
- swift - 为什么每个 switch 案例的总值不更新?斯威夫特 4
- python - `mid = low + (high -low)//2` 比 `(low + high)//2` 有什么好处?
- javascript - 面临错误 core.js:15723 错误类型错误:无法读取 Angular 7 中未定义的属性“toLowerCase”