Configurar el administrador de credenciales: acceso delegado por un usuario a una API de back-end
SE APLICA A: todos los niveles de API Management
Este artículo le guía por los pasos de alto nivel para configurar y usar una conexión administrada que concede a los usuarios o grupos delegados de Microsoft Entra permisos delegados a una API de OAuth 2.0 de back-end. Siga estos pasos para escenarios en los que una aplicación cliente (o bot) necesite acceder a los recursos en línea protegidos por back-end en nombre de un usuario autenticado (por ejemplo, comprobar correos electrónicos o realizar un pedido).
Información general del escenario
Nota:
Este escenario solo se aplica a los proveedores de credenciales configurados con el tipo de concesión del código de autorización.
En este caso, configure una conexión administrada que permita a una aplicación cliente (o bot) acceder a una API de back-end en nombre de un usuario o grupo de Microsoft Entra. Por ejemplo, puede tener una aplicación web estática que tenga acceso a una API de GitHub de back-end y a la que quiera acceder a datos específicos del usuario que ha iniciado sesión. En el siguiente diagrama, se ilustra este caso.
- El usuario debe autorizar a la aplicación a acceder a los recursos protegidos en su nombre y autorizar a la aplicación, el usuario debe autenticar su identidad
- Para realizar operaciones en nombre de un usuario, la aplicación llama al servicio back-end externo, como Microsoft Graph o GitHub
- Cada servicio externo tiene una manera de proteger esas llamadas, por ejemplo, con un token de usuario que identifica de forma única al usuario
- Para proteger la llamada al servicio externo, la aplicación debe pedir al usuario que inicie sesión para poder adquirir el token del usuario
- Como parte de la configuración, un proveedor de credenciales se registra mediante el administrador de credenciales en la instancia de API Management. Contiene información sobre el proveedor de identidades que se va a utilizar, junto con un identificador de cliente y un secreto de OAuth válidos, los ámbitos de OAuth que se van a habilitar y cualquier otros metadatos de conexión que requiera ese proveedor de identidades.
- Además, se crea una conexión y se usa para ayudar a iniciar sesión del usuario y obtener el token de usuario para que se pueda administrar
Requisitos previos
Acceder a un inquilino de Microsoft Entra en el que tenga permisos para crear un registro de aplicación y conceder el consentimiento del administrador para los permisos de aplicación. Más información
Si desea crear su propio inquilino de desarrollador, puede registrarse en el Programa para desarrolladores de Microsoft 365.
Uno o varios usuarios o grupos del inquilino para delegar permisos.
Instancia de API Management en ejecución. Si fuera necesario, cree una instancia de Azure API Management.
Una API de OAuth 2.0 de back-end a la que desea acceder en nombre del usuario o grupo.
- Si opta por usar Azure PowerShell en un entorno local:
- Instale la versión más reciente del módulo Az de PowerShell.
- Conéctese a su cuenta de Azure mediante el cmdlet Connect-AzAccount.
- Si decide usar Azure Cloud Shell:
- Para más información, consulte Introducción a Azure Cloud Shell.
Paso 1: Aprovisionamiento de la entidad de servicio del plano de datos de Azure API Management
Debe aprovisionar la entidad de servicio del plano de datos de Azure API Management para conceder a los usuarios o grupos los permisos delegados necesarios. Siga los pasos siguientes para aprovisionar el servicio principal con Azure PowerShell.
Inicie sesión en Azure PowerShell.
Si el módulo AzureAD aún no está instalado, instálelo con el siguiente comando:
Install-Module -Name AzureAD -Scope CurrentUser -Repository PSGallery -Force
Conéctese a su inquilino con el siguiente comando:
Connect-AzureAD -TenantId "<YOUR_TENANT_ID>"
Si se le solicita, inicie sesión con las credenciales de la cuenta de administrador del inquilino.
Aprovisione la entidad de servicio del plano de datos de Azure API Management con el siguiente comando:
New-AzureADServicePrincipal -AppId c8623e40-e6ab-4d2b-b123-2ca193542c65 -DisplayName "Azure API Management Data Plane"
Paso 2: Creación de un registro de aplicaciones de Microsoft Entra
Cree una aplicación Microsoft Entra ID para la delegación de usuarios y conceda los permisos adecuados para leer la conexión en API Management.
- Inicie sesión en Azure Portal con una cuenta con permisos suficientes en el inquilino.
- En Servicios de Azure, busque Microsoft Entra ID.
- En el menú de la izquierda, seleccione Registros de aplicaciones y luego + Nuevo registro.
- En la página Registrar una aplicación, escriba la configuración de registro de aplicación:
- En Nombre, escriba un nombre significativo que se mostrará a los usuarios de la aplicación, como UserPermissions.
- En Tipos de cuenta compatibles, seleccione una opción que se adapte a su escenario, por ejemplo, Cuentas de este directorio organizativo solo (inquilino único).
- Establezca el URI de redirección en Web e introduzca
https://www.postman-echo.com/get
.
- En el menú izquierdo, seleccione Permisos de API y, después, + Agregar un permiso.
- Seleccione la pestaña de las API que mi organización usa, escriba Plano de datos de Azure API Management y selecciónelo.
- En Permisos, seleccione Authorizations.Read y, a continuación, seleccione Agregar permisos.
- En el menú de la izquierda, seleccione Información general. En la página Información general, busque el valor de Id. de aplicación (cliente) y regístrelo para usarlo en el último paso.
- En el menú de la izquierda, seleccione Certificados y secretos y, después, + Nuevo secreto de cliente.
- Escriba una Descripción.
- Seleccione una opción para Expiración.
- Seleccione Agregar.
- Copie el valor del secreto del cliente antes de salir de la página. La necesitará en otro paso más adelante.
Paso 3: Configuración de un proveedor de credenciales en API Management
- Inicie sesión en el portal y vaya a la instancia de API Management.
- En el menú de la izquierda, seleccione Administrador de credenciales, y luego seleccione + Crear.
- En la página Crear proveedor de credenciales, escriba la configuración del proveedor de credenciales para la API. En este escenario, en Tipo de concesión, debe seleccionar Código de autorización. Obtenga más información consultando Configurar proveedores de credenciales en el administrador de credenciales.
- Seleccione Crear.
- Cuando se le solicite, revise la dirección URL de redireccionamiento de OAuth que se muestra y seleccione Sí para confirmar que coincide con la dirección URL que escribió en el registro de la aplicación.
Paso 4: Configure una conexión
Después de crear un proveedor de credenciales, puede agregar una conexión al proveedor. En la pestaña Conexión, complete los pasos de la conexión:
- Escriba un nombre de conexión y seleccione Guardar.
- En Paso 2: Iniciar sesión en la conexión, seleccione el vínculo para iniciar sesión en el proveedor de credenciales. Complete los pasos para autorizar el acceso, y volver a API Management.
- En Paso 3: Determine quién tendrá acceso a esta conexión (directiva de acceso), seleccione + Agregar. En función del escenario de delegación, seleccione Usuarios o Grupo.
- En la ventana Seleccionar elemento, realice selecciones en el orden siguiente:
- En primer lugar, busque uno o varios usuarios (o grupos) para agregar y activar la casilla de selección.
- A continuación, en la lista que aparece, busque el registro de la aplicación que creó en una sección anterior.
- Después, haga clic en Seleccionar.
- Seleccione Completar.
La nueva conexión aparece en la lista de autorizaciones y programa un estado de Conectado. Si desea crear otra conexión para el proveedor de credenciales, complete los pasos anteriores.
Sugerencia
Use el portal para agregar, actualizar o eliminar conexiones a un proveedor de credenciales en cualquier momento. Para obtener más información, consulte Configuración de varias conexiones.
Paso 5: Adquirir un token de acceso de Microsoft Entra ID
Para habilitar el acceso delegado de usuario a la API de back-end, se debe proporcionar un token de acceso para el usuario o grupo delegado en tiempo de ejecución en la directiva de get-authorization-context
. Normalmente, esto se realiza mediante programación en la aplicación cliente mediante la Biblioteca de autenticación de Microsoft (MSAL). En esta sección se proporcionan pasos manuales para crear un token de acceso para las pruebas.
Pegue la siguiente dirección URL en el explorador, reemplazando los valores de
<tenant-id>
y<client-id>
por valores del registro de la aplicación Microsoft Entra:https://login.microsoftonline.com/<tenant-id>/oauth2/authorize?client_id=<client-id>&response_type=code&redirect_uri=https://www.postman-echo.com/get&response_mode=query&resource=https://azure-api.net/authorization-manager&state=1234`
Cuando se le solicite, inicie sesión. En el cuerpo de la respuesta, copie el valor de código proporcionado (ejemplo:
"0.AXYAh2yl…"
).Envíe la siguiente solicitud de
POST
al punto de conexión del token, reemplazando<tenant-id>
por el identificador de inquilino e incluyendo el encabezado indicado y los parámetros de cuerpo del registro de la aplicación y el código que copió en el paso anterior.POST https://login.microsoftonline.com/<tenant-id>/oauth2/token HTTP/1.1
Encabezado
Content-Type: application/x-www-form-urlencoded
Cuerpo
grant_type: "authorization_code" client_id: <client-id> client_secret: <client-secret> redirect_uri: <redirect-url> code: <code> ## The code you copied in the previous step
En el cuerpo de la respuesta, copie el valor de access_token proporcionado (ejemplo:
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjZqQmZ1...
). Pasará este valor en la configuración de directiva en el paso siguiente.
Paso 6: Configuración de la directiva get-authorization-context para la API de back-end
Configure la directiva get-authorization-context para la API de back-end a la que desea acceder en nombre del usuario o grupo. Con fines de prueba, puede configurar la directiva mediante el token de acceso de Microsoft Entra ID para el usuario que obtuvo en la sección anterior.
Inicie sesión en el portal y vaya a la instancia de API Management.
En el menú de la izquierda, seleccione API y, después, seleccione la API de back-end de OAuth 2.0.
Seleccione Todas las operaciones. En la sección Procesamiento de entrada, selecciona el icono del editor de código (</>).
Configure la directiva de
get-authorization-context
en la seccióninbound
, estableciendoidentity-type
enjwt
:<policies> <inbound> [...] <get-authorization-context provider-id="<credential-provider-id>" authorization-id="<connection-id>" context-variable-name="auth-context" identity-type="jwt" identity="<access-token>" ignore-error="false" /> [...] </inbound> </policies>
En la definición de directiva anterior, reemplace:
<credential-provider-id>
y<connection-id>
con el nombre del proveedor de credenciales y la conexión, respectivamente, que configuró en los pasos anteriores.<access-token>
con el token de acceso de Microsoft Entra ID que generó en el paso anterior.
Paso 7: Probar la API
En la pestaña Prueba, seleccione una operación que haya configurado.
Seleccione Enviar.
Una respuesta correcta devuelve datos de usuario de la API de back-end.
Contenido relacionado
- Obtenga más información sobre las directivas de autenticación y autorización
- Obtenga más información sobre ámbitos y permisos en Microsoft Entra ID.