我正在开发一个RESTful服务,它在Azure AD B2C中的注册/登录过程中被调用。我的服务记录状态,成功到达数据,并创建输出声明(customerId
)。
但是我收到以下错误消息,并且未创建用户:
AADB2C90161自我声明的发送响应失败,原因(内部服务器错误)。
相关ID 7eac5fd2-cd85-4535-b166-4cc8f0264d07
有没有人遇到类似的问题,并暗示我的情况可能会出现什么问题?
在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>
答案 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 。这将允许您更轻松地调试类似的运行时问题。