Obtener un código de autorización
SE APLICA A: todos los niveles de API Management
Use la directiva get-authorization-context
para obtener el contexto de autorización de una conexión especificada (que anteriormente se denominaba autorización) a un proveedor de credenciales configurado en la instancia de API Management.
La directiva captura y almacena los tokens de autorización y actualización del proveedor de autorización configurado que usa la conexión.
Nota:
Establezca los elementos de la directiva y los elementos secundarios en el orden proporcionado en la instrucción de directiva. Obtenga más información sobre el establecimiento o modificación de directivas de API Management.
Instrucción de la directiva
<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" />
Atributos
Atributo | Descripción | Necesario | Valor predeterminado |
---|---|---|---|
provider-id | Identificador de recursos del proveedor de credenciales. Se permiten expresiones de directiva. | Sí | N/D |
authorization-id | Identificador de recursos de la conexión. Se permiten expresiones de directiva. | Sí | N/D |
context-variable-name | El nombre de la variable de contexto que se va a recibir el Authorization objeto. Se permiten expresiones de directiva. |
Sí | N/D |
identity-type | El tipo de identidad que se debe comprobar con la directiva de acceso de la conexión. - managed : identidad asignada por el sistema de la instancia de API Management. - jwt : token de portador JWT especificado en el atributo identity .Se permiten expresiones de directiva. |
No | managed |
identidad | Un token de portador JWT de Microsoft Entra que se debe comprobar con los permisos de conexión. Se omite para los identity-type que no sean jwt . Notificaciones esperadas: - público: https://azure-api.net/authorization-manager - oid : id. de objeto de permiso - tid : Identificación de inquilino de permisoSe permiten expresiones de directiva. |
No | N/D |
ignore-error | booleano. Si la adquisición del contexto de autorización produce un error (por ejemplo, no se encuentra el recurso de conexión o está en un estado de error): - true : a la variable de contexto se le asigna un valor NULL. - false : devuelve 500 Si establece el valor en false y la configuración de directiva incluye una sección on-error , el error está disponible en la propiedad context.LastError .Se permiten expresiones de directiva. |
No | false |
Objeto de autorización
La variable de contexto de autorización recibe un objeto de tipo Authorization
.
class Authorization
{
public string AccessToken { get; }
public IReadOnlyDictionary<string, object> Claims { get; }
}
Nombre de propiedad | Descripción |
---|---|
AccessToken | Token de acceso de portador para autorizar una solicitud HTTP de back-end. |
Notificaciones | Notificaciones devueltas por la API de respuesta de token del servidor de autorización (consulte RFC6749#section-5.1). |
Uso
- Secciones de la directiva: inbound (entrada)
- Ámbitos de la directiva: global, producto, API y operación
- Puertas de enlace: clásica, v2, consumo
Notas de uso
- Configure
identity-type=jwt
cuando la directiva de acceso de la conexión se asigne a una entidad de servicio. Solo se admiten ámbitos de solo aplicación/.default
para JWT.
Ejemplos
Recuperación del token
<!-- 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>
Recuperación del token con atributos establecidos dinámicamente
<!-- 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>
Adjuntar el token a la llamada de 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>
Obtener el token de la solicitud entrante y devolver el token
<!-- 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>
Directivas relacionadas
Contenido relacionado
Para más información sobre el trabajo con directivas, vea:
- Tutorial: Transformación y protección de una API
- Referencia de directivas para una lista completa de instrucciones de directivas y su configuración
- Expresiones de directiva
- Establecimiento o edición de directivas
- Reutilización de configuraciones de directivas
- Repositorio de fragmentos de código de directiva
- Kit de herramientas de directivas de Azure API Management
- Creación de directivas mediante Microsoft Copilot en Azure