Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
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 |
| tipo de identidad | 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 500Si 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 |
Important
El acceso vinculado no se comprueba cuando se referencia a un proveedor de credenciales o conexión usando provider-id o authorization-id. Un usuario que tenga permiso para redactar una política puede consultar cualquier proveedor o conexión de credenciales disponible, incluso si no tiene acceso de lectura a esos recursos. Si la identidad seleccionada por la política satisface la política de acceso de la conexión, el usuario puede hacer que la Gestión de la API obtenga el token de acceso portador y las reclamaciones de la conexión, que la política puede reenviar a un backend o exponer en una respuesta. Referenciar los recursos no se elude la política de acceso de la conexión ni concede acceso para ver su configuración o recuperar tokens de refresco.
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) | 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=jwtcuando la directiva de acceso de la conexión se asigne a una entidad de servicio. Solo se admiten ámbitos de solo aplicación/.defaultpara 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
- repositorio de ejemplos Policy
- Kit de herramientas de directivas de Azure API Management
- Obtener ayuda de Copilot para crear, explicar y solucionar problemas de directivas