Comparteix a través de


Creación de una aplicación de asociado segura

Puede implementar el marco de modelo de aplicación segura mediante la creación de una aplicación para Proveedor de soluciones en la nube s (CSP) o proveedores de Panel de control (CPV).

Implementación de un modelo de aplicación seguro

Pasos para habilitar el modelo de aplicación segura

Importante

Azure Active Directory (Azure AD) Graph está en desuso a partir del 30 de junio de 2023. En el futuro, no estamos realizando más inversiones en Azure AD Graph. Las API de Graph de Azure AD no tienen ningún acuerdo de nivel de servicio ni compromiso de mantenimiento más allá de las correcciones relacionadas con la seguridad. Las inversiones en las nuevas características y funcionalidades solo se realizarán en Microsoft Graph.

Retiraremos Azure AD Graph en pasos incrementales para que tenga tiempo suficiente para migrar las aplicaciones a las API de Microsoft Graph. En una fecha posterior que anunciaremos, bloquearemos la creación de aplicaciones nuevas mediante Azure AD Graph.

Para más información, consulte Importante: Retirada de Azure AD Graph y Desuso del módulo de PowerShell.

Creación de una entidad de servicio del Centro de partners

En primer lugar, cree una entidad de servicio del Centro de partners de Microsoft en el inquilino del asociado de CSP, donde se creará la aplicación multiinquilino.

En el caso de los inquilinos de asociados de CSP, esta entidad de servicio ya debería existir. Si no es así, cree con los pasos siguientes.

En una ventana de PowerShell de administrador, ejecute los siguientes comandos.

  1. Instalar el módulo de Azure AD. Install-Module Microsoft.Graph
  2. Ejecute Conectar-MgGraph; esto solicita un nombre de usuario y una contraseña. Escriba las credenciales de administrador de inquilinos. Connect-MgGraph
  3. Cree una entidad de servicio del Centro de partners de Microsoft. New-MgServicePrincipal -DisplayName "Microsoft Partner Center" -AppId fa3d9a0c-3fb0-42cc-9193-47c7ecd2edbd

Creación de una aplicación multiinquilino en el inquilino del asociado de CSP

Siga estos pasos para asegurarse de que las siguientes propiedades de aplicación están establecidas para la aplicación multiinquilino recién creada.

  1. Iniciar sesión en portal.azure.com
  2. Seleccione Microsoft Entra ID y Registros de aplicaciones para crear nuevos registros con varios inquilinos.

Captura de pantalla que muestra registrar un modal de aplicación.

  1. Seleccione un nombre para mostrar orientado al usuario para la aplicación.
  2. Seleccione Tipo de cuenta compatible: Cuentas en cualquier directorio organizativo (cualquier directorio de Microsoft Entra - Multiinquilino).
  3. Seleccione un tipo de plataforma "Web".
  4. La dirección URL de redireccionamiento debe ser la dirección URL de redireccionamiento de la aplicación, que mostrará el mensaje de confirmación del consentimiento al asociado y recopilará un token de actualización. Asegúrese de que la dirección URL de redireccionamiento de la aplicación está establecida en un punto de conexión en el que se ejecuta una aplicación web activa. Esta aplicación debe aceptar el código de autorización de la llamada de inicio de sesión de Microsoft Entra.
  5. Vaya a Administrar>certificados y secretos>+Nuevo secreto de cliente en la pestaña Secretos de cliente.

Nota:

Necesitará la siguiente información de la configuración de la aplicación web en Microsoft Entra ID:

  • Id. de aplicación
  • Secreto de la aplicación

Captura de pantalla que muestra certificados y secretos.

Permisos de aplicación

Asegúrese de que se establecen los siguientes permisos para la aplicación multiinquilino.

En la sección Permiso de API:

  • No debe haber ningún permiso directo de aplicación para la aplicación multiinquilino.

  • Siga la siguiente ruta de acceso para agregar permisos delegados para Microsoft Graph:

    • Permisos>de API: agregar un permiso>a las API>de Microsoft Graph>permisos delegados
      • DelegatedAdminRelationship.ReadWrite.All User.Read.All

    Captura de pantalla en la que se muestran los permisos de API de solicitud de aplicación de asociados.

    • Siga la siguiente ruta de acceso para agregar permisos delegados para el Centro de partners de Microsoft: concesión de permisos del Centro de partners de acceso en Permisos delegados:
      • Permisos>de API Agregar una API de permisos>que mi organización usa>la suplantación de usuario de permisos>delegados del Centro>de partners de Microsoft

    Captura de pantalla que muestra los permisos de A P I de la aplicación de asociado.

Presente al asociado el vínculo de consentimiento y haga que inicie sesión con su cuenta de servicio para aprobar la aplicación para que actúe en nombre de la cuenta de servicio en el inquilino del asociado.

El usuario asociado de CSP debe ser un Administración global y un agente de Administración para dar su consentimiento a la aplicación multiinquilino.

Aplicación multiinquilino

El multiinquilino ApplicationID debe reemplazarse por el identificador de aplicación.

Vaya a Registros de aplicaciones y seleccione el identificador de aplicación (cliente) y reemplace a continuación.

Captura de pantalla que muestra el cliente de Microsoft Entra asociado.

Obtención del código de autorización

Debe obtener un código de autorización para la aplicación web desde la llamada de inicio de sesión de Microsoft Entra:

  1. Inicie sesión en el id. de Microsoft Entra.
  2. Reemplace Application-Id por el identificador de aplicación (GUID) de Microsoft Entra.
  3. Cuando se le solicite, inicie sesión con su cuenta de usuario con MFA configurado.
  4. Cuando se le solicite, escriba otra información de MFA (número de teléfono o dirección de correo electrónico) para comprobar el inicio de sesión.
  5. Una vez que haya iniciado sesión, el explorador redirigirá la llamada al punto de conexión de la aplicación web con el código de autorización. Por ejemplo, el siguiente código de ejemplo redirige a https://localhost:44395/.
GET https://login.microsoftonline.com/common/oauth2/authorize?&client_id=<CSPApplicationId>&response_type=code&redirect_url=https://<CSPApplicationUrl_which_collects_refreshtoken>

o

GET https://login.microsoftonline.com/common/oauth2/authorize?&client_id=<CSPApplicationId>&response_type=code

Para China, use el vínculo siguiente:

GET https://login.chinacloudapi.cn/common/oauth2/authorize ?&client_id= <CSPApplicationId>&response_type=code&redirect_url= https://<CSPApplicationUrl_which_collects_refreshtoken>

o

GET https://login.chinacloudapi.cn/common/oauth2/authorize?&client_id= <CSPApplicationId>&response_type=code

Seguimiento de llamadas de código de autorización: https://localhost:44395/?code=<authorization_code>&<rest of properties for state>

Obtención del token de actualización

Después, debes usar el código de autorización para obtener un token de actualización:

  1. Realice una llamada POST al punto de conexión https://login.microsoftonline.com/CSPTenantID/oauth2/token de inicio de sesión de Microsoft Entra con el código de autorización. Para obtener un ejemplo, consulta la siguiente llamada de ejemplo.
  2. Ten en cuenta el token de actualización que se devuelve.
  3. Almacene el token de actualización en Azure Key Vault. Para obtener más información, consulta la documentación de la API de Key Vault.

Nota:

Los recursos mencionados en la siguiente llamada POST de ejemplo son para las API de GDAP-Graph.

Los recursos para otras API de PC son los siguientes:

API del Centro de partners (https://api.partnercenter.microsoft.com)

API de GDAP

API de asociados (https://api.partner.microsoft.com)

Llamada de ejemplo

POST  'https://login.microsoftonline.com/<partnerTenantId>/oauth2/token' \
--header 'content-type: application/x-www-form-urlencoded' \
--form 'grant_type="authorization_code"' \
--form 'client_id=<application_id or client_id>' \
--form 'resource="https://graph.microsoft.com"' \
--form 'code="<authorization_code>"'   
Response Body:

{
    "token_type": "Bearer",
    "scope": "DelegatedAdminRelationship.ReadWrite.All User.Read.All",
    "expires_in": "4549",
    "ext_expires_in": "4549",
    "expires_on": "1652886571",
    "not_before": "1652881721",
    "resource": "https://graph.microsoft.com",
    "access_token": "Access_token",
    "refresh_token": "Refresh_token",    
    "id_token": "Id_token"
}

Configuración del almacén de claves

En primer lugar, cree una nueva aplicación web en el inquilino del asociado de CSP. Si la aplicación CPV se usa para llamar a las API del Centro de partners, CPV debe crear una nueva aplicación web en el inquilino del asociado de CPV.

Si usa Azure Key Vault:

  1. Cree Azure Key Vault con el adecuado <key-vault-name> y genere un nombre DNS como: https://<key-vault-name>.vault.azure.net
  2. Agregue un token de actualización al almacén de claves.

Proporcionar acceso al almacén de claves

En las directivas de acceso del almacén de claves, agregue KeyVaultAccessApp con permisos para administrar solo los aspectos Obtener y Establecer de un secreto.

Captura de pantalla en la que se muestran los permisos necesarios para la aplicación de asociado de CSP.

Configuración del prototipo

El prototipo tiene dos aplicaciones:

  • Consentimiento del asociado: representa una aplicación web diseñada para aceptar el consentimiento de un asociado de CSP y mostrar un mensaje de éxito.
    • Esta aplicación configura el consentimiento y captura el token de actualización del usuario con consentimiento.
    • El token de actualización del usuario con consentimiento se usa para generar el token de acceso para el inquilino del asociado de CSP.
  • Aplicación CSP o aplicación CPV: representa una aplicación principal, que llama a las API y el grafo del Centro de partners.
    • API para realizar acciones comerciales y de usuario en nombre del asociado.

Esta aplicación recupera el token de acceso de una audiencia específica (API del Centro de partners o Graph) antes de llamar a las API respectivas. Usa el token de actualización que se almacena de forma segura en el almacén de claves.

Configuración web de CSP

En el caso de la aplicación de asociado de CSP, el web.config archivo tiene las secciones siguientes resaltadas. Actualice estos valores con los identificadores de aplicación y los secretos correspondientes. Para la aplicación principal, use "certificado" como secreto de aplicación web en lugar de secretos sin formato porque proporciona una capa adicional de seguridad.

<!-- AppID that represents CSP application -->
<add key="ida:CSPApplicationId" value="CSPApplicationIdValue" />
<!--
Please use certificate as your client secret and deploy the certificate to your environment.
The following application secret is for sample application only. please do not use secret directly from the config file.
-->
<add key="ida:CSPApplicationSecret" value="CSPApplicationSecretValue" />
<!-- AppID that is given access for keyvault to store the refresh tokens --> <add key="ida:KeyVaultClientId" value="KeyVaultClientIdValue" />
<!--
Please use certificate as your client secret and deploy the certificate to your environment.
The following application secret is for sample application only. please do not use secret directly from the config file.
-->
<add key="ida:KeyVaultClientSecret" value="KeyVaultClientSecretValue" />
<!-- AAD instance: Global is .com, for different national clouds it changes German cloud: .de, China cloud: login.chinacloudapi.cn -->
<add key="ida:AADInstance" value="https://login.microsoftonline.com/" />

Configuración de la aplicación CSP

En el caso de la aplicación de asociado de CSP, el app.config archivo tiene las secciones siguientes resaltadas. Actualice los valores con los identificadores y secretos de aplicación correspondientes. Para la aplicación principal, use "certificado" como secreto de aplicación web en lugar de secretos sin formato porque proporciona una capa adicional de seguridad.

<!-- AppID that represents CSP application -->
<add key="ida:CPVApplicationId" value="CPVApplicationIdValue" />
<!--
Please use certificate as your client secret and deploy the certificate to your environment. The following application secret is for sample application only. please do not use secret directly from the config file.
-->
<add key="ida:CPVApplicationSecret" value="CPVApplicationSecretValue" />
<!-- AppID that is given access for keyvault to store the refresh tokens -->
<add key="ida:KeyVaultClientId" value="KeyVaultClientIdValue" />
<!--
Please use certificate as your client secret and deploy the certificate to your environment. The following application secret is for sample application only. please do not use secret directly from the config file.
-->
<add key="ida:KeyVaultClientSecret" value="KeyVaultClientSecretValue" />
<!-- AAD instance: Global is .com, for different national clouds it changes German cloud: .de,
China cloud: login.chinacloudapi.cn -->
<add key="ida:AADInstance" value="https://login.microsoftonline.com/" />

Los CSP que usan la aplicación CPV pueden llamar a applicationConsent API para crear la entidad de servicio en el inquilino del cliente para acceder a Microsoft Graph para administrar los inquilinos del cliente. Para obtener más información, consulte Autenticación del Centro de partners.

Configuración web de CPV

En el caso de la aplicación de asociado de CSP, el web.config archivo tiene las secciones siguientes resaltadas. Actualice estos valores con los identificadores de aplicación y los secretos correspondientes. Para la aplicación principal, use "certificado" como secreto de aplicación web en lugar de secretos sin formato porque proporciona una capa adicional de seguridad.

<!-- AppID that represents Control panel vendor application -->
<add key="ida:CPVApplicationId" value="CPVApplicationIdValue" />
<!--
Please use certificate as your client secret and deploy the certificate to your environment. The following application secret is for sample application only. please do not use secret directly from the config file.
-->
<add key="ida:CPVApplicationSecret" value="CPVApplicationSecretValue" />
<!-- AppID that is given access for keyvault to store the refresh tokens -->
<add key="ida:KeyVaultClientId" value="KeyVaultClientIdValue" />
<!--
Please use certificate as your client secret and deploy the certificate to your environment. The following application secret is for sample application only. please do not use secret directly from the config file.
-->
<add key="ida:KeyVaultClientSecret" value="KeyVaultClientSecretValue" />
<!-- AAD instance: Global is .com, for different national clouds it changes German cloud: .de, China cloud: login.chinacloudapi.cn -->
<add key="ida:AADInstance" value="https://login.microsoftonline.com/" />

Configuración de la aplicación CPV

En el caso de la aplicación de asociado de CPV, el app.config archivo tiene las secciones siguientes resaltadas. Actualice los valores con los identificadores y secretos de aplicación correspondientes. Para la aplicación principal, use "certificado" como secreto de aplicación web en lugar de secretos sin formato porque proporciona una capa adicional de seguridad.

<!-- AppID that represents Control panel vendor application -->
<add key="ida:CPVApplicationId" value="CPVApplicationIdValue" />
<!--
Please use certificate as your client secret and deploy the certificate to your environment. The following application secret is for sample application only. please do not use secret directly from the config file.
-->
<add key="ida:CPVApplicationSecret" value="CPVApplicationSecretValue" />
<!-- AppID that is given access for keyvault to store the refresh tokens -->
<add key="ida:KeyVaultClientId" value="KeyVaultClientIdValue" />
<!--
Please use certificate as your client secret and deploy the certificate to your environment. The following application secret is for sample application only. please do not use secret directly from the config file.
-->
<add key="ida:KeyVaultClientSecret" value="KeyVaultClientSecretValue" />
<!-- AAD instance: Global is .com, for different national clouds it changes German cloud: .de, China cloud: login.chinacloudapi.cn -->
<add key="ida:AADInstance" value="https://login.microsoftonline.com/" />