Compartir vía


Inicio rápido: Llamada a una API web de ASP.NET protegida por la plataforma de identidad de Microsoft

En el siguiente inicio rápido se usa un ejemplo de código que muestra cómo proteger una API web de ASP.NET mediante la restricción del acceso a sus recursos solo a cuentas autorizadas. El ejemplo admite la autorización de cuentas personales de Microsoft y cuentas de cualquier organización de Microsoft Entra.

En el artículo también se usa una aplicación de Windows Presentation Foundation (WPF) para demostrar cómo solicitar un token de acceso para acceder a una API web.

Prerrequisitos

Clonar o descargar el ejemplo

El ejemplo de código se puede obtener de dos maneras:

  • Clonación desde el shell o la línea de comandos:

    git clone https://github.com/AzureADQuickStarts/AppModelv2-NativeClient-DotNet.git
    
  • Descargarlo como un archivo ZIP.

Sugerencia

Para evitar errores causados por limitaciones de longitud de ruta de acceso en Windows, se recomienda extraer el archivo o clonar el repositorio en un directorio cerca de la raíz de la unidad.

Registro de la API web (TodoListService)

Registre la API web en Registros de aplicaciones, en Azure Portal.

  1. Inicie sesión en el centro de administración de Microsoft Entra como al menos un administrador de aplicaciones en la nube.

  2. 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 desde el menú Directorios y suscripciones.

  3. Vaya a Identidad>Aplicaciones>Registros de aplicaciones y seleccione Nuevo registro.

  4. Escriba el Nombre de la aplicación, por ejemplo: AppModelv2-NativeClient-DotNet-TodoListService. Los usuarios de la aplicación pueden ver este nombre y puede cambiarlo más adelante.

  5. En Supported account types (Tipos de cuenta admitidos), seleccione Account in any organizational directory (Cuentas en cualquier directorio organizativo).

  6. Seleccione Registrar para crear la aplicación.

  7. En la página Overview (Información general) de la aplicación, busque el valor de Application (client) ID (Id. de cliente de la aplicación) y regístrelo para usarlo más tarde. Lo necesitará para configurar el archivo de configuración de Visual Studio para este proyecto (eso es, ClientId en el archivo TodoListService\appsettings.jsen).

  8. En Administrar, seleccione Exponer una API>Agregar un ámbito. Acepte el URI del ID de aplicación propuesto (api://{clientId}) seleccionando Guardar y continuary luego escriba la siguiente información:

    1. Para Nombre del ámbito, escriba access_as_user.
    2. Para Who can consent (Quién puede dar el consentimiento), asegúrese de que la opción Admins and users (Administradores y usuarios) está seleccionada.
    3. En el cuadro de texto Nombre para mostrar del consentimiento del administrador, escriba Access TodoListService as a user.
    4. En el cuadro de texto Descripción del consentimiento del administrador, escriba Accesses the TodoListService web API as a user.
    5. En el cuadro de texto Nombre para mostrar del consentimiento del usuario, escriba Access TodoListService as a user.
    6. En el cuadro de texto Descripción del consentimiento del usuario, escriba Accesses the TodoListService web API as a user.
    7. En State (Estado), mantenga Enabled (Habilitado).
  9. Seleccione Agregar ámbito.

Configuración del proyecto de servicio

Configure el proyecto de servicio para que coincida con la API web registrada.

  1. Abra la solución en Visual Studio y, a continuación, abra el archivo appsettings.json en la raíz del proyecto TodoListService.

  2. Reemplace el valor de Enter_the_Application_Id_here por el valor del identificador de cliente (identificador de la aplicación) de la aplicación que registró en el portal Registros de aplicaciones en las propiedades ClientID y Audience.

Agregue el nuevo ámbito al archivo app.config

Para agregar el nuevo ámbito al archivo app.config TodoListClient, siga estos pasos:

  1. En la carpeta raíz del proyecto TodoListClient, abra el archivo app.config.

  2. Pegue el identificador de la aplicación que acaba de registrar para el proyecto TodoListService en el parámetro TodoListServiceScope y reemplace la cadena {Enter the Application ID of your TodoListService from the app registration portal}.

Nota

Asegúrese de que el identificador de aplicación usa el siguiente formato: api://{TodoListService-Application-ID}/access_as_user (donde {TodoListService-Application-ID} es el GUID que representa el identificador de aplicación de la aplicación TodoListService).

Registrar la aplicación web (TodoListClient)

Registre la aplicación TodoListClient en registros de aplicaciones en Azure Portal y, a continuación, configure el código en el proyecto TodoListClient. Si el cliente y el servidor se consideran la misma aplicación, puede reutilizar la aplicación registrada en el paso 2. Use la misma aplicación si desea que los usuarios inicien sesión con una cuenta microsoft personal.

Registro de la aplicación

Para registrar la aplicación TodoListClient, siga estos pasos:

  1. Inicie sesión en el centro de administración de Microsoft Entra como al menos un administrador de aplicaciones en la nube.

  2. Vaya a Identidad>Aplicaciones>Registros de aplicaciones y seleccione Nuevo registro.

  3. Seleccione Nuevo registro.

  4. Cuando se abra la página Registrar una aplicación, escriba la información de registro de la aplicación:

    1. En la sección Nombre, escriba un nombre de aplicación significativo que se mostrará a los usuarios de la aplicación (por ejemplo, NativeClient-DotNet-TodoListClient).
    2. En Supported account types (Tipos de cuenta admitidos), seleccione Account in any organizational directory (Cuentas en cualquier directorio organizativo).
    3. Seleccione Registrar para crear la aplicación.

    Nota

    En el archivo app.config del proyecto TodoListClient, el valor predeterminado de ida:Tenant se establece en common. Los valores posibles son:

    • common: Puede iniciar sesión con una cuenta laboral o educativa o una cuenta Microsoft personal (ya que seleccionó Cuentas en cualquier directorio organizativo en un paso anterior).
    • organizations: puede iniciar sesión con una cuenta profesional o educativa.
    • consumers: solo puede iniciar sesión con una cuenta personal de Microsoft.
  5. En la página Información general de la aplicación , seleccione Autenticacióny, a continuación, complete estos pasos para agregar una plataforma:

    1. En Configuraciones de plataforma, seleccione el botón Agregar una plataforma.
    2. En Mobile and desktop applications (Aplicaciones móviles y de escritorio), seleccione Mobile and desktop applications (Aplicaciones móviles y de escritorio).
    3. En URI de redirección, active la casilla https://login.microsoftonline.com/common/oauth2/nativeclient.
    4. Seleccione Configurar.
  6. Seleccione permisos de APIy complete estos pasos para agregar permisos:

    1. Seleccione el botón Agregar un permiso.
    2. Seleccione la pestaña Mis API.
    3. En la lista de API, seleccione AppModelv2-NativeClient-DotNet-TodoListService API o el nombre especificado para la API web.
    4. Seleccione la casilla del permiso access_as_user si aún no lo está. Use el cuadro Buscar si es necesario.
    5. Seleccione el botón Agregar permisos.

Configuración del proyecto

Configure el proyecto TodoListClient agregando el identificador de aplicación al archivo app.config.

  1. En el portal Registros de aplicaciones, en la página Overview (Información general), copie el valor de Application (client) ID (Id. de cliente de la aplicación).

  2. En la carpeta raíz del proyecto TodoListClient, abra el archivo app.config y pegue el valor de Id. de aplicación en el parámetro ida:ClientId.

Ejecución de proyectos

Inicie ambos proyectos. Para los usuarios de Visual Studio;

  1. Haga clic con el botón derecho en la solución de Visual Studio y seleccione Propiedades

  2. En Propiedades comunes, seleccione Proyecto de inicio y, a continuación, haga clic en Proyectos de inicio múltiples.

  3. En ambos proyectos, elija Iniciar como acción

  4. Asegúrese de que el servicio TodoListService se inicia primero moviendolo a la primera posición de la lista, con la flecha arriba.

Inicie sesión para ejecutar el proyecto TodoListClient.

  1. Presione F5 para iniciar los proyectos. Se abre la página de servicio, así como la aplicación de escritorio.

  2. En TodoListClient, en la esquina superior derecha, seleccione Iniciar sesióny, a continuación, inicie sesión con las mismas credenciales que usó para registrar la aplicación o inicie sesión como un usuario en el mismo directorio.

    Si inicia sesión por primera vez, es posible que se le pida que dé su consentimiento a la API web TodoListService.

    Para ayudarle a acceder a la API web TodoListService y a manipular la lista To-Do, en el inicio de sesión también se solicita un token de acceso al ámbito access_as_user.

Autorización previa de la aplicación cliente

Puede permitir que los usuarios de otros directorios accedan a la API web mediante la autorización previa de la aplicación cliente para acceder a la API web. Para ello, agregue el identificador de aplicación de la aplicación cliente a la lista de aplicaciones previamente autorizadas para la API web. Al agregar un cliente autorizado previamente, permite a los usuarios acceder a la API web sin tener que proporcionar consentimiento.

  1. En el portal Registros de aplicaciones, abra las propiedades de la aplicación TodoListService.
  2. En la sección Expose an API (Exponer una API), en Authorized client applications (Aplicaciones cliente autorizadas), seleccione Add a client application (Agregar una aplicación cliente).
  3. En el cuadro Client ID (Id. de cliente), pegue el identificador de la aplicación TodoListClient.
  4. En la sección Ámbitos autorizados, seleccione el alcance de la API web api://<Application ID>/access_as_user.
  5. Seleccione Agregar aplicación.

Ejecución del proyecto

  1. Presione F5 para ejecutar el proyecto. Se abre la aplicación TodoListClient.
  2. En la esquina superior derecha, seleccione Iniciar sesióne inicie sesión con una cuenta personal de Microsoft, como una cuenta de live.com o hotmail.com, o una cuenta profesional o educativa.

Opcional: Limitar el acceso de inicio de sesión a determinados usuarios

De forma predeterminada, cualquier cuenta personal, como outlook.com o cuentas de live.com, o cuentas profesionales o educativas de organizaciones integradas con el identificador de Entra de Microsoft puede solicitar tokens y acceder a la API web.

Para especificar quién puede iniciar sesión en la aplicación, cambie la propiedad TenantId en el archivo appsettings.json.

Ayuda y soporte técnico

Si necesita ayuda, quiere notificar un problema o desea obtener información sobre las opciones de soporte técnico, consulte Ayuda y soporte técnico para desarrolladores.

Pasos siguientes

Para más información, cree una API web de ASP.NET Core protegida en la siguiente serie de tutoriales: