2017-09-21 2 views
1

Je suis sending claims to B2C via a JWT suivant le WingTig Games demo code. Comment puis-je masquer les revendications sur mon inscription auto-déclarée TechnicalProfile de l'utilisateur (LocalAccountSignUpWithLogonNameWithIDs illustré ci-dessous)?Envoyer les demandes Azure AD B2C qui sont cachées de l'utilisateur


J'ai essayé de supprimer la définition de mon ClaimType noeud UserInputType mais uand l'erreur suivante dans le lecteur Journey Utilisateur:

type de demande de sortie « extension_my_claim » spécifiée dans le profil technique id "LocalAccountSignUpWithLogonNameWithIDs" dans la règle "B2C_1A_signup_signin_extensions" du locataire "mytenant.onmicrosoft.com" ne spécifie pas UserInputType ou DefaultValue et n'est pas non plus récupéré à partir d'un profil ValidationTechnicalProfile.

Alors j'ai enlevé mes demandes de la InputClaims et OutputClaims de cette TechnicalProfile et qui a supprimé l'erreur, mais les valeurs n'ont pas été persistaient alors.


<TechnicalProfile Id="LocalAccountSignUpWithLogonNameWithIDs"> 
    <DisplayName>User ID signup with associate and org id</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> 
     <Item Key="LocalAccountType">Username</Item> 
     <Item Key="LocalAccountProfile">true</Item> 
     <Item Key="language.button_continue">Create</Item> 
    </Metadata> 
    <CryptographicKeys> 
     <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" /> 
    </CryptographicKeys> 
    <InputClaims> 
     <InputClaim ClaimTypeReferenceId="signInName" /> 
     <InputClaim ClaimTypeReferenceId="extension_my_claim" /> 
    </InputClaims> 
    <OutputClaims> 
     <OutputClaim ClaimTypeReferenceId="objectId" Required="true" /> 
     <OutputClaim ClaimTypeReferenceId="signInName" Required="true" /> 
     <OutputClaim ClaimTypeReferenceId="newPassword" Required="true" /> 
     <OutputClaim ClaimTypeReferenceId="reenterPassword" Required="true" /> 
     <OutputClaim ClaimTypeReferenceId="email" Required="true" /> 
     <OutputClaim ClaimTypeReferenceId="extension_my_claim" Required="true"/> 
     <OutputClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" DefaultValue="true" /> 
     <OutputClaim ClaimTypeReferenceId="newUser" /> 
     <OutputClaim ClaimTypeReferenceId="authenticationSource" /> 
     <OutputClaim ClaimTypeReferenceId="userPrincipalName" /> 
    </OutputClaims> 
    <ValidationTechnicalProfiles> 
     <ValidationTechnicalProfile ReferenceId="AAD-UserWriteUsingLogonName" /> 
    </ValidationTechnicalProfiles> 
    <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" /> 
</TechnicalProfile> 
+0

Pouvez-vous mettre à jour la question pour expliquer de quel profil technique vous parlez, et par "comment cacher les revendications", vous voulez dire que vous ne voulez pas les montrer sur le profil auto-affirmé? –

+0

Hey @OmerIqbal que ce correct, mon profil auto-affirmé. J'ai mis à jour la question, merci! – spottedmahn

Répondre

2

Si vous souhaitez conserver la demande dans le répertoire sans le montrer à l'utilisateur, la meilleure option serait:

  1. Ajoutez comme InputClaim au profil technique LocalAccountSignUpWithLogonNameWithIDs
  2. Ajoutez comme PersistedClaim dans le profil technique AAD-UserWriteUsingLogonName, qui va écrire dans le répertoire

Tout ce que vous faites est d'envoyer la réclamation jusqu'à la persistance, mais en déclarant que vous ne voulez pas un OutputClaim du SelfAssertedAttributeProvider.

Lorsque vous ajoutez la demande en tant OutputClaim, vous déclarez que SelfAssertedAttributeProvider doit avoir un moyen d'obtenir la valeur. A ce jour, il peut provenir de l'une des trois façons possibles:

  1. fourni par l'utilisateur (qui nécessite UserInputType dans la définition ClaimType)
  2. Récupérée d'un ValidationTechnicalProfile
  3. fourni en DefaultValue du OutputClaim dans la politique

l'erreur que vous obtenez était probablement parce qu'il n'y avait aucun moyen pour le profil technique SelfAssertedAttributeProvider pour obtenir une valeur pour cette réclamation.

1

Comme la réponse ci-dessus stipule

dans un auto affirmé profil technique une demande de sortie présente à l'utilisateur

Si la demande a été préalablement rempli dans une étape précédente, vous ne avez pas besoin de passer les revendications de l'étape à l'étape, ils restent dans le sac de réclamation jusqu'à la fin du voyage ou jusqu'à ce que vous utilisiez une transformation pour les supprimer.