Azure B2C错误:在技术资料中定义的ID为““ objectId \”“的查找声明找不到声明

时间:2019-02-22 01:19:55

标签: azure saml azure-ad-b2c

我们正在尝试使用SAML和Azure B2C作为服务提供商(SP)使用组织AD作为IDP来设置SSO。 许多其他SP供应商都将Org AD用作IDP(SAML),并且效果很好。

尝试设置自定义策略时出现错误。 我遵循了SalesforceADFS示例教程。 我看到断言是从SAML发生的,但接下来的下一步失败了。

确切的错误是:找不到对技术档案中ID为“ AAD-UserReadUsingObjectId \”策略\“ B2C_1A_SignUpSignInDaimler \”的租户\“ xxxx.onxxx”的ID为“ objectId”的查找声明的索赔。 .com \”。

感谢您的帮助, 谢谢

1 个答案:

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