Obtenir le contexte d’autorisation

S’APPLIQUE À : tous les niveaux de Gestion des API

Utilisez la stratégie get-authorization-context pour obtenir le contexte d'autorisation d'une connexion spécifiée (anciennement appelée autorisation) vers un fournisseur d'informations d'identification configuré dans l'instance API Management.

La stratégie récupère et stocke les jetons d'actualisation et d'autorisation du fournisseur d'informations d'identification configuré à l'aide de la connexion.

Remarque

Définissez les éléments enfants et de stratégie dans l’ordre fourni dans l’instruction de stratégie. En savoir plus sur comment définir ou modifier des stratégies du service Gestion des API.

Instruction de la stratégie

<get-authorization-context
    provider-id="credential provider id" 
    authorization-id="connection id" 
    context-variable-name="variable name" 
    identity-type="managed | jwt"
    identity="JWT bearer token"
    ignore-error="true | false" />

Attributs

Attribut Description Obligatoire Default
provider-id Identificateur de ressource du fournisseur d'informations d'identification. Les expressions de stratégie sont autorisées. Oui N/A
authorization-id Identificateur de ressource de connexion. Les expressions de stratégie sont autorisées. Oui N/A
context-variable-name Nom de la variable de contexte où recevoir l’objetAuthorization. Les expressions de stratégie sont autorisées. Oui N/A
identity-type Type d'identité à vérifier par rapport à la stratégie d'accès de la connexion.
- managed : identité managée affectée par le système de l'instance API Management.
- jwt : jeton du porteur JWT spécifié dans l’attribut identity.

Les expressions de stratégie sont autorisées.
Non managed
identity Jeton du porteur Microsoft Entra JWT à vérifier par rapport aux autorisations de connexion. Ignoré pour un identity-type autre que jwt.

Revendications attendues :
- audience : https://azure-api.net/authorization-manager
- oid : ID de l’objet d’autorisation
- tid : ID de locataire d’autorisation

Les expressions de stratégie sont autorisées.
Non N/A
ignore-error Propriété booléenne. Si l'acquisition du contexte d'autorisation entraîne une erreur (par exemple, la ressource de connexion est introuvable ou en état d'erreur) :
- true : une valeur Null est affectée à la variable de contexte.
- false : retourne 500

Si vous définissez la valeur sur false et que la configuration de la stratégie comprend une section on-error, l’erreur est disponible dans la propriété context.LastError.

Les expressions de stratégie sont autorisées.
Non false

Objet d’autorisation

La variable de contexte d’autorisation reçoit un objet de type Authorization.

class Authorization
{
    public string AccessToken { get; }
    public IReadOnlyDictionary<string, object> Claims { get; }
}
Nom de la propriété Description
AccessToken Jeton d’accès du porteur pour autoriser une requête HTTP du back-end.
Revendications Revendications retournées par l’API de réponse de jeton du serveur d’autorisation (consultez RFC6749#section-5.1).

Utilisation

Notes d’utilisation

  • Configurez identity-type=jwt lorsque la stratégie d'accès pour la connexion est attribuée à un principal de service. Seules les étendues d’application uniquement /.default sont prises en charge pour le JWT.

Exemples

Récupération d’un jeton

<!-- Add to inbound policy. -->
<get-authorization-context 
    provider-id="github-01" 
    authorization-id="auth-01" 
    context-variable-name="auth-context" 
    identity-type="managed" 
    ignore-error="false" />
<!-- Return the token -->
<return-response>
    <set-status code="200" />
    <set-body template="none">@(((Authorization)context.Variables.GetValueOrDefault("auth-context"))?.AccessToken)</set-body>
</return-response>

Obtenir le jeton en retour avec des attributs définis dynamiquement

<!-- Add to inbound policy. -->
<get-authorization-context 
  provider-id="@(context.Request.Url.Query.GetValueOrDefault("authorizationProviderId"))" 
  authorization-id="@(context.Request.Url.Query.GetValueOrDefault("authorizationId"))" context-variable-name="auth-context" 
  ignore-error="false" 
  identity-type="managed" />
<!-- Return the token -->
<return-response>
    <set-status code="200" />
    <set-body template="none">@(((Authorization)context.Variables.GetValueOrDefault("auth-context"))?.AccessToken)</set-body>
</return-response>

Attacher le jeton à l’appel du back-end

<!-- Add to inbound policy. -->
<get-authorization-context
    provider-id="github-01" 
    authorization-id="auth-01" 
    context-variable-name="auth-context" 
    identity-type="managed" 
    ignore-error="false" />
<!-- Attach the token to the backend call -->
<set-header name="Authorization" exists-action="override">
    <value>@("Bearer " + ((Authorization)context.Variables.GetValueOrDefault("auth-context"))?.AccessToken)</value>
</set-header>

Obtenir le jeton d’une requête entrante et retourner le jeton

<!-- Add to inbound policy. -->
<get-authorization-context 
    provider-id="github-01" 
    authorization-id="auth-01" 
    context-variable-name="auth-context" 
    identity-type="jwt" 
    identity="@(context.Request.Headers["Authorization"][0].Replace("Bearer ", ""))"
    ignore-error="false" />
<!-- Return the token -->
<return-response>
    <set-status code="200" />
    <set-body template="none">@(((Authorization)context.Variables.GetValueOrDefault("auth-context"))?.AccessToken)</set-body>
</return-response>

Pour plus d’informations sur l’utilisation des stratégies, consultez :