Azure Ad B2C Error : "Unable to validate the information provided." when using custom policy and custom attribute

Viewed 29

I am trying to use custom policies of Azure Ad B2C because we have a complex flow of self-registration for external users. I am trying to use custom attributes, and I followed the dedicated tutorial.

I keep getting the error "Unable to validate the information provided" nevertheless. 1 - I added a section for AAD-Common with the ids of the b2c-extensionregistered app. 2 - I created custom attributes using the Azure AD B2C UI in the dedicated section. 3 - I declared this attribute in the ClaimSchemas section. 4 - I added the attribute in the self-asserted sign-up technical profile. 5 - I added the attribute to be persisted as a persistent claim in technical profile validating the self-sign-up. 6 - I uploaded the extension file on my Azure AD B2C custom policy page.

Can you tell me what I do wrong?

Thanks!

I double-checked several times the tutorial against my work before posting here.

Here is my extension file:

<?xml version="1.0" encoding="utf-8" ?>
<TrustFrameworkPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06" PolicySchemaVersion="0.3.0.0" TenantId="wynsureformercer.onmicrosoft.com" PolicyId="B2C_1A_TrustFrameworkExtensions" PublicPolicyUri="http://mytenant.onmicrosoft.com/B2C_1A_TrustFrameworkExtensions">

   <BasePolicy>
      <TenantId>mytenant.onmicrosoft.com</TenantId>
      <PolicyId>B2C_1A_TrustFrameworkLocalization</PolicyId>
   </BasePolicy>
   <BuildingBlocks>
      <ClaimsSchema>
         <ClaimType Id="custom_employee_id">
            <DisplayName>Employee Id</DisplayName>
            <DataType>string</DataType>
            <UserHelpText/>
            <UserInputType>TextBox</UserInputType>
         </ClaimType>
      </ClaimsSchema>
   </BuildingBlocks>

   <ClaimsProviders>

      <ClaimsProvider>
         <DisplayName>Azure Active Directory</DisplayName>
         <TechnicalProfiles>
            <TechnicalProfile Id="AAD-Common">
               <Metadata>
                  <!--Insert b2c-extensions-app application ID here, for example: 11111111-1111-1111-1111-111111111111-->
                  <Item Key="ClientId">f8070b57-64ba-blablabla</Item>
                  <!--Insert b2c-extensions-app application ObjectId here, for example: 22222222-2222-2222-2222-222222222222-->
                  <Item Key="ApplicationObjectId">a6ae751f-7d74-blablabla</Item>
               </Metadata>
            </TechnicalProfile>

            <TechnicalProfile Id="AAD-UserWriteUsingLogonEmail">
               <Metadata>
                  <Item Key="Operation">Write</Item>
                  <Item Key="RaiseErrorIfClaimsPrincipalAlreadyExists">true</Item>
               </Metadata>
               <IncludeInSso>false</IncludeInSso>
               <InputClaims>
                  <InputClaim ClaimTypeReferenceId="email" PartnerClaimType="signInNames.emailAddress" Required="true" />
               </InputClaims>
               <PersistedClaims>
                  <!-- Required claims -->
                  <PersistedClaim ClaimTypeReferenceId="email" PartnerClaimType="signInNames.emailAddress" />
                  <PersistedClaim ClaimTypeReferenceId="newPassword" PartnerClaimType="password" />
                  <PersistedClaim ClaimTypeReferenceId="displayName" DefaultValue="unknown" />
                  <PersistedClaim ClaimTypeReferenceId="passwordPolicies" DefaultValue="DisablePasswordExpiration" />

                  <!-- Optional claims. -->
                  <PersistedClaim ClaimTypeReferenceId="givenName" />
                  <PersistedClaim ClaimTypeReferenceId="surname" />
                  <PersistedClaim ClaimTypeReferenceId="custom_employee_id" />
               </PersistedClaims>
               <OutputClaims>
                  <OutputClaim ClaimTypeReferenceId="objectId" />
                  <OutputClaim ClaimTypeReferenceId="newUser" PartnerClaimType="newClaimsPrincipalCreated" />
                  <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="localAccountAuthentication" />
                  <OutputClaim ClaimTypeReferenceId="userPrincipalName" />
                  <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" />
               </OutputClaims>
               <IncludeTechnicalProfile ReferenceId="AAD-Common" />
               <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
            </TechnicalProfile>
         </TechnicalProfiles>
      </ClaimsProvider>



      <ClaimsProvider>
         <DisplayName>Local Account SignIn</DisplayName>
         <TechnicalProfiles>
            <TechnicalProfile Id="login-NonInteractive">
               <Metadata>
                  <Item Key="client_id">ProxyIdentityExperienceFrameworkAppId</Item>
                  <Item Key="IdTokenAudience">IdentityExperienceFrameworkAppId</Item>
               </Metadata>
               <InputClaims>
                  <InputClaim ClaimTypeReferenceId="client_id" DefaultValue="3fb15547-7986-416b-b6ba-4d84bee6770a" />
                  <InputClaim ClaimTypeReferenceId="resource_id" PartnerClaimType="resource" DefaultValue="1215af09-c958-4d92-a356-b1316895ff31" />
               </InputClaims>
            </TechnicalProfile>
         </TechnicalProfiles>
      </ClaimsProvider>

      <ClaimsProvider>
         <DisplayName>Local Account</DisplayName>
         <TechnicalProfiles>

            <TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
               <DisplayName>Email signup</DisplayName>
               <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
               <Metadata>
                  <Item Key="IpAddressClaimReferenceId">IpAddress</Item>
                  <Item Key="ContentDefinitionReferenceId">api.localaccountsignup</Item>
               </Metadata>
               <CryptographicKeys>
                  <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />
               </CryptographicKeys>
               <InputClaims>
                  <InputClaim ClaimTypeReferenceId="email" />
               </InputClaims>
               <OutputClaims>
                  <OutputClaim ClaimTypeReferenceId="objectId" />
                  <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="Verified.Email" Required="true" />
                  <OutputClaim ClaimTypeReferenceId="newPassword" Required="true" />
                  <OutputClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
                  <OutputClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" DefaultValue="true" />
                  <OutputClaim ClaimTypeReferenceId="authenticationSource" />
                  <OutputClaim ClaimTypeReferenceId="newUser" />

                  <!-- Optional claims, to be collected from the user -->
                  <OutputClaim ClaimTypeReferenceId="displayName" />
                  <OutputClaim ClaimTypeReferenceId="givenName" />
                  <OutputClaim ClaimTypeReferenceId="surName" />
                  <OutputClaim ClaimTypeReferenceId="custom_employee_id" />
               </OutputClaims>
               <ValidationTechnicalProfiles>
                  <ValidationTechnicalProfile ReferenceId="AAD-UserWriteUsingLogonEmail" />
               </ValidationTechnicalProfiles>
               <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
            </TechnicalProfile>
         </TechnicalProfiles>
      </ClaimsProvider>

   </ClaimsProviders>

   <!--UserJourneys>
    
    </UserJourneys-->

</TrustFrameworkPolicy>

0 Answers
Related