我们正在尝试使用SAML和Azure B2C作为服务提供商(SP)使用组织AD作为IDP来设置SSO。 许多其他SP供应商都将Org AD用作IDP(SAML),并且效果很好。
尝试设置自定义策略时出现错误。 我遵循了Salesforce和ADFS示例教程。 我看到断言是从SAML发生的,但接下来的下一步失败了。
确切的错误是:找不到对技术档案中ID为“ AAD-UserReadUsingObjectId \”策略\“ B2C_1A_SignUpSignInDaimler \”的租户\“ xxxx.onxxx”的ID为“ objectId”的查找声明的索赔。 .com \”。
感谢您的帮助, 谢谢
答案 0 :(得分:0)
AAD-UserReadUsingObjectId 技术配置文件将尝试使用对象ID从Azure AD中读取一些指定的声明。我假设与您登录的用户在Azure中不存在,而仅在组织AD中存在,因此,即使您从组织AD返回对象ID,当尝试查找该用户时,它仍然会给您一个错误Azure AD中的用户。我从用户旅程中删除了这一步骤,并直接从组织目录中返回了声明。如果SAML响应未返回,则我还为objectId声明添加了默认值。
<OutputClaim ClaimTypeReferenceId="objectid" PartnerClaimType="objectid" DefaultValue="ad-none"/>
我的用户历程:
<UserJourney Id="SignIn-ADFS">
<OrchestrationSteps>
<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
<ClaimsProviderSelections>
<ClaimsProviderSelection ValidationClaimsExchangeId="LocalAccountSigninEmailExchange" />
<ClaimsProviderSelection TargetClaimsExchangeId="TestExchange" />
</ClaimsProviderSelections>
<ClaimsExchanges>
<ClaimsExchange Id="LocalAccountSigninEmailExchange" TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>objectId</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="SignUpWithLogonEmailExchange" TechnicalProfileReferenceId="LocalAccountSignUpWithLogonEmail" />
<ClaimsExchange Id="TestExchange" TechnicalProfileReferenceId="macrohouse-SAML2" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="3" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
</OrchestrationSteps>
<ClientDefinition ReferenceId="DefaultWeb" />
</UserJourney>