Christopher Norris
Christopher Norris

Reputation: 563

How do I find out what is causing Azure B2C 500 Internal Server Error?

I am trying to add orchestration steps to my Azure B2C IEF user journey however, when I make changes I often times get error: "500 - Internal Server Error"

I have tried using Application Insights, but that does not tell you anything related to error 500.

Here is my Technical Profile

    <TechnicalProfile Id="Step1">
      <DisplayName>Step 1</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="Email" Required="true"/>
        <OutputClaim ClaimTypeReferenceId="newPassword" Required="true" />
        <OutputClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
      </OutputClaims>
    </TechnicalProfile>

And here is my User Journey Step

    <OrchestrationStep Order="3" Type="ClaimsExchange">
      <Preconditions>
        <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
          <Value>objectId</Value>
          <Action>SkipThisOrchestrationStep</Action>
        </Precondition>
      </Preconditions>
      <ClaimsExchanges>
        <ClaimsExchange Id="SignUpWithLogonEmailExchange" TechnicalProfileReferenceId="Step1" />
      </ClaimsExchanges>
    </OrchestrationStep>

Is there a way to find out what is causing these 500 - internal server errors?

Upvotes: 3

Views: 1241

Answers (1)

Omer Iqbal
Omer Iqbal

Reputation: 2293

ContentDefinition: The SelfAssertedAttributeProvider technical profile must have a ContentDefinition specified in the Metadata section. That is missing in your technical profile.

OutputClaims:

There is no ValidationTechnicalProfile in the technical profile Step1. That could potentially be an issue. Since these are OutputClaims, the policy must specify a way to create a value for each of those (even if at run time it may not actually get created). So an OutputClaim must have one of the three:

  1. Specify a DefaultValue, which guarantees that it will have that value after the TechnicalProfile has been invoked.
  2. Specify a UserInputType in the ClaimType under the ClaimsSchema section, which indicates that there is a way to retrieve that value from the user.
  3. Specify it as an OutputClaim of a ValidationTechnicalProfile, which will allow another provider to retrieve such a value (e.g. from AD Graph, or a Rest API).

CryptographicKeys: SelfAssertedAttributeProvider TechnicalProfile also needs a CryptographicKeys section which specifies a key used by the provider.

I would recommend copying a technical profile from the Starter Packs Github and modify those since those will contain all the required elements.

(The fact that the service is returning 500 is a bug, and needs to be fixed.)

Upvotes: 3

Related Questions