2017-09-26 2 views
1

Salut la stratégie personnalisée est appelée avec l'identifiant client de l'application B2CObtenez le B2C AD Azure ID client d'application dans la stratégie personnalisée

https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?p=B2C_1A_POLICY&client_id=THE-CLIENT-ID-I-WANT

Comment puis-je accéder à cela dans la politique, je pensais que ce serait difficile codé selon la revendication client_id mais je ne pense pas qu'il est

Son seul retourné par défaut que la demande de aud mais encore une fois, je ne vois pas que dans la politique personnalisée

Merci

+1

hey regarde comme vous pouvez utiliser {OIDC: ClientId} pour saisir la demande dans une revendication d'entrée, besoin d'enquêter plus si je peux persister cette revendication Tout le monde connaît d'autres {variables qui existent} ou où je peux trouver une liste complète – user1197563

Répondre

1

Ok est un peu un travail autour mais j'ai essayé avec un profil technique standard UserJourneyContextProvider et ce travail na pas

afin d'obtenir l'identifiant client en tant que prétendez que je ne le

suivant Créer une étape d'orchestration

<OrchestrationStep Order="2" Type="ClaimsExchange"> 
    <ClaimsExchanges> 
    <ClaimsExchange 
     Id="ClientIdFromOIDC-JC" 
     TechnicalProfileReferenceId="Get-ClientID-FromOIDC"/> 
    </ClaimsExchanges> 
    </OrchestrationStep>  

Ensuite, créez un profil technique RESTFUL qui fera appel à une fonction App passer le OIDC avec {OIDC: ClientID}

<TechnicalProfile Id="Get-ClientID-FromOIDC"> 
    <DisplayName>Get-ClientID-FromOIDC</DisplayName> 
    <Protocol Name="Proprietary" 
    Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, 
    Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> 
    <Metadata> 
    <Item Key="AuthenticationType">None</Item> 
    <Item Key="ServiceUrl">--FUNCTION APP URL--</Item> 
    <Item Key="SendClaimsIn">QueryString</Item> 
    </Metadata> 
    <InputClaims> 
     <InputClaim 
     ClaimTypeReferenceId="client_id" 
     PartnerClaimType="client_id" 
     DefaultValue="{OIDC:ClientId}" /> 
    </InputClaims> 
    <OutputClaims> 
     <OutputClaim ClaimTypeReferenceId="client_id" /> 
     </OutputClaims> 
    </TechnicalProfile> 

Puis enfin créer une application de fonction qui accepte l'identifiant client de la chaîne de requête et le renvoie avec le format correct pour B2C pour identifier

en utilisant System.Net; en utilisant System.Net.Http.Formatting;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, 
    TraceWriter log) 
    { 
     log.Info("C# HTTP trigger function processed a request."); 
     // parse query parameter 
     string client_id = req.GetQueryNameValuePairs() 
     .FirstOrDefault(q => string.Compare(q.Key, "client_id", true) == 0) 
     .Value; 

     return req.CreateResponse<ResponseContent>(
     HttpStatusCode.OK, new ResponseContent 
     { 
      version = "1.0.0", 
      status = (int) HttpStatusCode.OK, 
      client_id = client_id 
     }, 
     new JsonMediaTypeFormatter(), "application/json"); 

    } 

    class ResponseContent { 
    public string version; 
    public int status; 
    public string client_id; 
} 

Vous allez maintenant obtenir l'application B2C client_id comme une réclamation dans le sac de réclamation de sorte que vous pouvez faire ce que vous voulez avec maintenant