自定义策略RESTful-Api UserJourney错误

时间:2017-11-02 14:25:54

标签: azure azure-active-directory azure-ad-b2c

我正在开发一个RESTful服务,它在Azure AD B2C中的注册/登录过程中被调用。我的服务记录状态,成功到达数据,并创建输出声明(customerId)。

但是我收到以下错误消息,并且未创建用户:

  

AADB2C90161自我声明的发送响应失败,原因(内部服务器错误)。   
相关ID 7eac5fd2-cd85-4535-b166-4cc8f0264d07

我已经将自己定位于这个例子:https://github.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack/tree/master/scenarios/aadb2c-ief-rest-api-netfw/

有没有人遇到类似的问题,并暗示我的情况可能会出现什么问题?

在TrustFrameworkExtension中

<ClaimsProvider>
  <DisplayName>KTM REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-API-SignUp">
      <DisplayName>Generate and return customerID claim</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://<my.service.com>/api/Identity/Signup</Item>
        <Item Key="AuthenticationType">None</Item>
        <Item Key="SendClaimsIn">Body</Item>
      </Metadata>

      <InputClaims>          
        <InputClaim ClaimTypeReferenceId="email" PartnerClaimType="Email" />
        <InputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="FirstName" />
        <InputClaim ClaimTypeReferenceId="surname" PartnerClaimType="LastName" />
        <InputClaim ClaimTypeReferenceId="testClaim" PartnerClaimType="ObjectId" />           
      </InputClaims>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="customerId" PartnerClaimType="CustomerId" />
      </OutputClaims>
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
    </TechnicalProfile>

    <TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="customerId" PartnerClaimType="CustomerId" />
      </OutputClaims>
      <ValidationTechnicalProfiles>
        <ValidationTechnicalProfile ReferenceId="REST-API-SignUp" />
      </ValidationTechnicalProfiles>
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

1 个答案:

答案 0 :(得分:0)

在这种情况下,您遇到运行时错误。索赔类型&#34; customerId&#34;在策略中定义为一个字符串,但看起来像是通过网络传递的值(其中partnerClaimType是&#34; CustomerId&#34;)是一个数字,因此系统无法映射它。见这一行:

<OutputClaim ClaimTypeReferenceId="customerId" PartnerClaimType="CustomerId" />

Rest API将返回字符串与数字的关系(注意数字中没有引号):

{
   "name": "John",
   "age": 24
}

虽然可以改进此消息,但 you should configure your policy to collect logs using Application Insights 。这将允许您更轻松地调试类似的运行时问题。