Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este artículo muestra cómo llamar a una API web de ASP.NET Core protegida mediante la dirección URL del cliente (cURL). cURL es una herramienta de línea de comandos que los desarrolladores usan para transferir datos hacia y desde un servidor. En este artículo, registrará una aplicación web y una API web en un inquilino. La aplicación web se usa para obtener un token de acceso generado por la plataforma de identidad de Microsoft. A continuación, use el token para hacer una llamada autorizada a la API web mediante cURL.
Este artículo muestra cómo llamar a una API web de ASP.NET Core protegida mediante la dirección URL del cliente (cURL). cURL es una herramienta de línea de comandos que los desarrolladores usan para transferir datos hacia y desde un servidor. Después del Tutorial: Implemente un extremo protegido en su API, donde creó una API protegida, debe registrar una aplicación web en la plataforma de identidad de Microsoft para generar un token de acceso. A continuación, use el token para hacer una llamada autorizada a la API mediante cURL.
Requisitos previos
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
- Esta cuenta de Azure debe tener permisos para administrar aplicaciones. Cualquiera de los siguientes roles de Microsoft Entra incluye los permisos necesarios:
- Administrador de aplicaciones
- Desarrollador de aplicaciones
- Administrador de aplicaciones en la nube
- Descargue e instale cURL en el equipo de estación de trabajo.
- Requisito mínimo del SDK de .NET 8.0.
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
- Esta cuenta de Azure debe tener permisos para administrar aplicaciones. Cualquiera de los siguientes roles de Microsoft Entra incluye los permisos necesarios:
- Administrador de aplicaciones
- Desarrollador de aplicaciones
- Administrador de aplicaciones en la nube
- Finalización de la serie de tutoriales:
- Descargue e instale cURL en el equipo de estación de trabajo.
Registro de una aplicación en la plataforma de identidad de Microsoft
En la plataforma de identidad de Microsoft es necesario que la aplicación se registre para poder proporcionar servicios de administración de identidades y acceso. El registro de la aplicación permite indicar su nombre y su tipo de la aplicación y el público de inicio de sesión. El público de inicio de sesión especifica qué tipos de cuentas de usuario pueden iniciar sesión en una aplicación determinada.
Registro de la API web
Siga estos pasos para crear el registro de la API web:
Inicie sesión en el Centro de administración de Microsoft Entra como al menos un desarrollador de aplicaciones.
Si tiene acceso a varios inquilinos, use el icono
Configuración del menú superior para cambiar al inquilino en el que desea registrar la aplicación en el menú Directorios y suscripciones.
Vaya a Entra ID>Registros de aplicaciones.
Seleccione Nuevo registro.
Escriba un nombre para la aplicación, como NewWebAPI1.
En Tipos de cuenta admitidos, seleccione Solo cuentas en este directorio organizativo. Para obtener información sobre los distintos tipos de cuenta, seleccione la opción Ayudarme a elegir .
Seleccione Registrar.
El panel Información general de la aplicación se muestra cuando se completa el registro. Registre el identificador de directorio (inquilino) y el identificador de aplicación (cliente) que se usará en el código fuente de la aplicación.
Nota
Los tipos de cuenta admitidos se pueden cambiar haciendo referencia a Modificar las cuentas admitidas por una aplicación.
Exposición de la API
Una vez registrada la API, para configurar su permiso, defina los ámbitos que la API expone a las aplicaciones cliente. Las aplicaciones cliente solicitan permiso para realizar operaciones mediante el paso de un token de acceso junto con sus solicitudes a la API web protegida. A continuación, la API web realiza la operación solicitada solo si el token de acceso que recibe es válido.
En Administrar, seleccione Exponer una API > Agregar un ámbito. Acepte el URI del ID de aplicación propuesto seleccionando
(api://{clientId})
.{clientId}
es el valor registrado en la página Información general. A continuación, escriba la siguiente información:- En Nombre de ámbito, escriba
Forecast.Read
. - En Who can consent (Quién puede dar su consentimiento), asegúrese de que la opción Admins and users (Administradores y usuarios ) está seleccionada.
- En el cuadro Nombre para mostrar del consentimiento del administrador, escriba
Read forecast data
. - En el cuadro Descripción del consentimiento del administrador , escriba
Allows the application to read weather forecast data
. - En el cuadro Nombre para mostrar consentimiento del usuario , escriba
Read forecast data
. - En el cuadro Descripción del consentimiento del usuario , escriba
Allows the application to read weather forecast data
. - Asegúrese de que el estado esté establecido en Habilitado.
- En Nombre de ámbito, escriba
Seleccione Agregar ámbito. Si el ámbito se ha escrito correctamente, aparece en el panel Exponer una API .
Registro de la aplicación web
Sin embargo, tener una API web no es suficiente, ya que también se necesita una aplicación web para obtener un token de acceso para acceder a la API web que ha creado.
Siga estos pasos para crear el registro de la aplicación de la aplicación web:
- Seleccione Inicio para volver a la página principal. Vaya a Entra ID>Registros de aplicaciones.
- Seleccione Nuevo registro.
- Escriba un nombre para la aplicación, como
web-app-calls-web-api
. - En Tipos de cuenta admitidos, seleccione Solo cuentas en este directorio organizativo. Para obtener información sobre los distintos tipos de cuenta, seleccione la opción Ayudarme a elegir .
- En URI de redirección (opcional), seleccione Web y
http://localhost
escriba en el cuadro de texto URL. - Seleccione Registrar.
- Inicie sesión en el Centro de administración de Microsoft Entra como al menos un desarrollador de aplicaciones.
- Si tiene acceso a varios inquilinos, use el icono
Configuración del menú superior para cambiar al inquilino en el que desea registrar la aplicación en el menú Directorios y suscripciones.
- Vaya a Entra ID>Registros de aplicaciones.
- Seleccione Nuevo registro.
- Escriba un nombre para la aplicación, como
web-app-calls-web-api
. - En Tipos de cuenta admitidos, seleccione Solo cuentas en este directorio organizativo. Para obtener información sobre los distintos tipos de cuenta, seleccione la opción Ayudarme a elegir .
- En URI de redirección (opcional), seleccione Web y
http://localhost
escriba en el cuadro de texto URL. - Seleccione Registrar.
Una vez completado el registro, el registro de la aplicación se muestra en el panel Información general . Registre el identificador de directorio (inquilino) y el identificador de aplicación (cliente) que se usará en pasos posteriores.
Agregar un secreto de cliente
Un secreto de cliente es un valor de cadena que la aplicación puede usar para identificarse y, a veces, se conoce como contraseña de aplicación. La aplicación web usa el secreto de cliente para demostrar su identidad al solicitar tokens.
Siga estos pasos para configurar un secreto de cliente:
En el panel
Información general , enAdministrar , seleccioneCertificados y secretos Nuevo secreto de cliente .Agregue una descripción para el secreto de cliente, por ejemplo , Mi secreto de cliente.
Seleccione una expiración para el secreto o especifique una duración personalizada.
- La duración de un secreto de cliente se limita a dos años (24 meses) o menos. No se puede especificar una duración personalizada superior a 24 meses.
- Microsoft recomienda establecer un valor de expiración de menos de 12 meses.
Seleccione Agregar.
Asegúrese de registrar el valor del secreto de cliente. Este valor secreto nunca se muestra de nuevo después de salir de esta página.
Adición de permisos de aplicación para permitir el acceso a una API web
Al especificar los ámbitos de una API web en el registro de aplicación web, la aplicación web puede obtener un token de acceso que contenga esos ámbitos proporcionados por la plataforma de identidad de Microsoft. En el código, la API web puede proporcionar acceso basado en permisos a sus recursos en función de los ámbitos que se encuentran en el token de acceso.
Siga estos pasos para configurar los permisos de la aplicación web en la API web:
- En el panel Información general de la aplicación web (web-app-that-calls-web-api), en Administrar, seleccione Permisos> de APIAgregar una>API que usa mi organización.
- Seleccione NewWebAPI1 o la API a la que desea agregar permisos.
- En Seleccionar permisos, active la casilla situada junto a Forecast.Read. Es posible que tenga que expandir la lista De permisos . Esto selecciona los permisos que la aplicación cliente debe tener en nombre del usuario que ha iniciado sesión.
- Seleccione Agregar permisos para completar el proceso.
Después de agregar estos permisos a la API, debería ver los permisos seleccionados en Permisos configurados.
También puede observar el permiso User.Read para Microsoft Graph API. Este permiso se agrega automáticamente al registrar una aplicación.
Prueba de la API web
Clone el repositorio ms-identity-docs-code-dotnet.
git clone https://github.com/Azure-Samples/ms-identity-docs-code-dotnet.git
Vaya a la carpeta
ms-identity-docs-code-dotnet/web-api
y abra el archivo./appsettings.json
, reemplace{APPLICATION_CLIENT_ID}
y{DIRECTORY_TENANT_ID}
por:-
{APPLICATION_CLIENT_ID}
es el ID de aplicación (cliente) en el panel Información general de Registros de aplicaciones de la aplicación. -
{DIRECTORY_TENANT_ID}
es el identificador del directorio de API web (inquilino) en el panelInformación general de la aplicación Registros de aplicaciones.
-
Ejecute el siguiente comando para iniciar la aplicación:
Obtendrá una salida similar a la siguiente. Registre el número de puerto en la dirección URL
https://localhost:{port}
.... info: Microsoft.Hosting.Lifetime[14] Now listening on: https://localhost:{port} ...
Prueba de la API web
Vaya a la API web que se creó en Tutorial: Cree un proyecto de ASP.NET Core y configure la API, por ejemplo , NewWebAPILocal y abra la carpeta.
Abra una nueva ventana de terminal y vaya a la carpeta donde se ubica el proyecto de la API web.
Obtendrá una salida similar a la siguiente. Registre el número de puerto en la dirección URL
https://localhost:{port}
.... info: Microsoft.Hosting.Lifetime[14] Now listening on: https://localhost:{port} ...
Solicitud de un código de autorización
El flujo del código de autorización comienza con el cliente dirigiendo al usuario al punto de conexión /authorize
. En esta solicitud, el cliente solicita el permiso Forecast.Read
del usuario.
https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/authorize?client_id={web-app-calls-web-api_application_client_id}&response_type=code&redirect_uri=http://localhost&response_mode=query&scope=api://{web_API_application_client_id}/Forecast.Read
Copie la dirección URL, reemplace los parámetros siguientes y péguela en el explorador:
-
{tenant_id}
es la ID del directorio (inquilino) de la aplicación web. -
{web-app-calls-web-api_application_client_id}
es el identificador de aplicación (cliente) del panel información general de la aplicación web (web-app-calls-web-api). -
{web_API_application_client_id}
es el identificador de aplicación (cliente) en el panel información general de la API web (NewWebAPI1).
-
Inicie sesión como usuario en el inquilino de Microsoft Entra en el que se registran las aplicaciones. Dé su consentimiento a las solicitudes de acceso, si es necesario.
El explorador se redirige a
http://localhost/
. Consulte la barra de navegación del explorador y copie{authorization_code}
para usarlo en los pasos siguientes. La dirección URL tiene la forma del siguiente fragmento de código:http://localhost/?code={authorization_code}
Uso de un código de autorización y cURL para obtener un token de acceso
cURL ahora se puede usar para solicitar un token de acceso desde la Plataforma de identidad de Microsoft.
Copie el comando cURL en el siguiente fragmento de código. Reemplace los valores entre paréntesis por los parámetros siguientes en el terminal. Asegúrese de quitar los paréntesis:
curl -X POST https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token \ -d 'client_id={web-app-calls-web-api_application_client_id}' \ -d 'api://{web_API_application_client_id}/Forecast.Read' \ -d 'code={authorization_code}&session_state={web-app-calls-web-api_application_client_id}' \ -d 'redirect_uri=http://localhost' \ -d 'grant_type=authorization_code' \ -d 'client_secret={client_secret}'
-
{tenant_id}
es la ID del directorio (inquilino) de la aplicación web. -
client_id={web-app-calls-web-api_application_client_id}
, ysession_state={web-app-calls-web-api_application_client_id}
es el identificador de aplicación (cliente) del panel información general de la aplicación web (web-app-calls-web-api). -
api://{web_API_application_client_id}/Forecast.Read
es el identificador de aplicación (cliente) en el panel información general de la API web (NewWebAPI1). -
code={authorization_code}
es el código de autorización que se recibió en Solicitud de un código de autorización. Esto permite que la herramienta cURL solicite un token de acceso. -
client_secret={client_secret}
es el valor del secreto de cliente registrado en Agregar un secreto de cliente.
-
Ejecute el comando cURL y, si se ha escrito correctamente, debe recibir una respuesta JSON similar a la siguiente salida:
{ "token_type": "Bearer", "scope": "api://{web_API_application_client_id}/Forecast.Read", "expires_in": 3600, "ext_expires_in": 3600, "access_token": "{access_token}" }
Llamar a la API web con el token de acceso
Al ejecutar el comando cURL anterior, la Plataforma de identidad de Microsoft ha proporcionado un token de acceso. El token adquirido ahora se puede usar como portador en una solicitud HTTP para llamar a la API web.
Para llamar a la API web, copie el siguiente comando cURL, reemplace los valores siguientes entre paréntesis y péguelos en el terminal:
curl -X GET https://localhost:{port}/weatherforecast -ki \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer {access_token}"
-
{access_token}
el valor del token de acceso registrado en la salida JSON de la sección anterior. -
{port}
el número de puerto de la API web registrada al ejecutar la API en el terminal. Asegúrese de que es el número de puertohttps
.
-
Con un token de acceso válido incluido en la solicitud, la respuesta esperada es
HTTP/2 200
con una salida similar a la siguiente:HTTP/2 200 content-type: application/json; charset=utf-8 date: Day, DD Month YYYY HH:MM:SS server: Kestrel [{"date":"YYYY-MM-DDTHH:MM:SS","temperatureC":36,"summary":"Hot","temperatureF":96},{"date":"YYYY-MM-DDTHH:MM:SS","temperatureC":43,"summary":"Warm","temperatureF":109},{"date":"YYYY-MM-DDTHH:MM:SS","temperatureC":18,"summary":"Warm","temperatureF":64},{"date":"YYYY-MM-DDTHH:MM:SS","temperatureC":50,"summary":"Chilly","temperatureF":121},{"date":"YYYY-MM-DDTHH:MM:SS","temperatureC":3,"summary":"Bracing","temperatureF":37}]
Pasos siguientes
Para más información sobre el flujo de código de autorización de OAuth 2.0 y los tipos de aplicación, consulte: