azure-ad-b2c-custom-policyidentity-experience-framework

AADB2C Claims Transformation for JSON from Federated Identity


I am writing IEF policy integrating with Federated Identity Provider. IDP returns claims in id_token as JSON. when I use claims mapping custom_attributes in output claims, I am getting AAD Exception as

An unexpected type "System.Collections.Generic.List1[System.Collections.Generic.KeyValuePair2[System.String,System.Object]]" was encountered of the claim with claim type id "custom_attributes"

here is my claim mapping:

<OutputClaim ClaimTypeReferenceId="custom_attributes" PartnerClaimType="custom_attributes"/> 

claim Schema as:

      <ClaimType Id="custom_attributes">
        <DisplayName>custom_attributes</DisplayName>
        <DataType>string</DataType>
        <UserHelpText>Add help text here</UserHelpText>
      </ClaimType>

id_token looks like below:

{
 "custom_attributes":{
    "emailAddress": "someone@example.com",
    "displayName": "Someone",
    "id" : 6353399
 }
}
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" />
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" />
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" />
            <OutputClaimsTransformation ReferenceId="GetRequestorIdClaimFromJsonClaimsTransformation" />
          </OutputClaimsTransformations>

claim Schema as

      <ClaimsTransformation Id="GetRequestorIdClaimFromJsonClaimsTransformation" TransformationMethod="GetClaimFromJson">
        <InputClaims>
          <InputClaim ClaimTypeReferenceId="custom_attributes" TransformationClaimType="inputJson" />
        </InputClaims>
        <InputParameters>
          <InputParameter Id="claimToExtract" DataType="string" Value="id"/>
        </InputParameters>
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="requestorid" TransformationClaimType="extractedClaim" />
        </OutputClaims>
      </ClaimsTransformation>

Solution

  • I found a solution to the problem and added it here

    https://stackoverflow.com/questions/68086538/why-i-am-gettting-error-in-outputclaim-for-json-object-key-value-pair