2017-10-11 3 views
1

Ich möchte, dass die policyId in die Ansprüche aufgenommen wird, die zurückgegeben werden, wenn meine angepasste SignUpSignIn-Richtlinie ausgeführt wird.Wie kann ich den PolicyId-Anspruch nach Ausführung meiner benutzerdefinierten SignUpSignIn-Richtlinie zurückgeben?

Ich denke, das sollte in Anspruch Id tfp sein.

Dort is an article auf wie dies zu tun ist.

Im Abschnitt "Einstellen des Anspruchs, der die Policy-ID darstellt" wird der Schlüssel AuthenticationContextReferenceClaimPattern in der ClaimsProvider-Überschreibung "Token-Issuer" eingefügt.

<ClaimsProviders> 
    <ClaimsProvider> 
    <DisplayName>Token Issuer</DisplayName> 
    <TechnicalProfiles> 
     <TechnicalProfile Id="JwtIssuer"> 
     <Metadata> 
      ..... 
      <Item Key="AuthenticationContextReferenceClaimPattern">None</Item> 
     </Metadata> 
     </TechnicalProfile> 
    </TechnicalProfiles> 
    </ClaimsProvider> 
</ClaimsProviders> 

Und dann müssen Sie die trustFrameworkPolicy in Ihrem outputClaims hinzuzufügen. Ich denke so:

<RelyingParty> 
    <DefaultUserJourney ReferenceId="SignUpOrSignIn" /> 
    <TechnicalProfile Id="PolicyProfile"> 
    <DisplayName>PolicyProfile</DisplayName> 
    <Protocol Name="OpenIdConnect" /> 
    <OutputClaims> 
     <OutputClaim ClaimTypeReferenceId="displayName" /> 
     <OutputClaim ClaimTypeReferenceId="givenName" /> 
     <OutputClaim ClaimTypeReferenceId="surname" /> 
     ...... 
     <OutputClaim ClaimTypeReferenceId="trustFrameworkPolicy" Required="true" DefaultValue="{policy}" /> 
    </OutputClaims> 
    <SubjectNamingInfo ClaimType="sub" /> 
</TechnicalProfile> 

Aber wenn ich laden, dieses kundenspezifische Politik eine Fehlerdatei wird angezeigt:

„Policy "B2C_1A_xxxx" der Mieter "yyyyy.onmicrosoft.com" Marken ein Verweis auf ClaimType mit der ID "trustframeworkPolicy", aber weder die Richtlinie noch eine ihrer Basisrichtlinien enthalten ein solches Element. "

Bedeutet, dass es die ClaimTypeReferenceId nicht finden kann: "trustFrameworkPolicy".

Muss ich eine Anspruchsdefinition des ClaimType "trustframeworkPolicy" hinzufügen? im ClaimsSchema?

Wenn ja: Wie ist es?

Antwort

2

mit Fügen Sie den folgenden ClaimType zu TrustFrameworkExtensions.xml:

<ClaimType Id="trustFrameworkPolicy"> 
    <DisplayName>Trust Framework Policy</DisplayName> 
    <DataType>string</DataType> 
    <DefaultPartnerClaimTypes> 
     <Protocol Name="OAuth2" PartnerClaimType="tfp" /> 
     <Protocol Name="OpenIdConnect" PartnerClaimType="tfp" /> 
    </DefaultPartnerClaimTypes> 
</ClaimType> 

Hinweis: ClaimType sollte ein Kind Knoten von <ClaimsSchema><BuildingBlocks>

sein
+1

Das war die richtige Antwort! Um den PolicyName in den "tfp" -Anspruch aufzunehmen, musste ich die Aktionen in meiner Frage ausführen und den claimType hinzufügen, wie @spottedmahn es mir gezeigt hat. – Rikkert

+0

[GitHub Issue] (https://github.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack/issues/11), um den 'ClaimType' zum Startpaket hinzuzufügen. – spottedmahn

0

Die PolicyId im ACR Anspruch ist, wenn die Starter Pack

jwt token with acr tag

+0

@Rikkert Überprüfen Aus dieser anderen Antwort für weitere Details: https://stackoverflow.com/questions/46688455/in-azure-ad-b2c-should-the-acr-or-tfp-claim-have-the-policy-name/46697200# 46697200 – Pytry

+0

@Pytry Dies ist nur konfigurierbar, wenn die reguläre B2C_1_SiUpIn-Richtlinie verwendet wird. Sie haben keinen Bildschirm "Token, Sitzung und SSO-Konfiguration", wenn Sie benutzerdefinierte Richtlinien verwenden. Sie müssen es mit XML-Dateien konfigurieren. – Rikkert

+0

@Rikkert Ah, danke für die Information :) – Pytry

Verwandte Themen