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’autorisationLes 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
- Sections de la stratégie : inbound
- Étendues de la stratégie : global, product, API, operation
- Passerelles : classiques, v2, Consommation
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>
Stratégies connexes
Contenu connexe
Pour plus d’informations sur l’utilisation des stratégies, consultez :
- Tutoriel : Transformer et protéger votre API
- Référence de stratégie pour obtenir la liste complète des instructions et des paramètres de stratégie
- Expressions de stratégie
- Définir ou modifier des stratégies
- Réutilisation de configurations de stratégie
- Référentiel d’extrait de stratégie
- Créer des stratégies à l’aide de Microsoft Copilot dans Azure