Uso del certificado de cliente para obtener tokens de acceso de Azure AD

Código de ejemplo

En este artículo se describe cómo agregar un certificado de cliente a la aplicación de ejemplo Tailspin Surveys.

Al usar el flujo de código de autorización o flujo híbrido en OpenID Connect, el cliente intercambia un código de autorización para un token de acceso. Durante este paso, el cliente tiene que autenticarse en el servidor.

Secreto del cliente

Hay muchas maneras de autenticar el cliente, mediante el secreto, el certificado y las aserciones de cliente. La aplicación Tailspin Surveys está configurada de forma predeterminada para usar el secreto de cliente.

Esta es una solicitud de ejemplo desde el cliente al IDP, que solicita un token de acceso. Tenga en cuenta el parámetro client_secret .

POST https://login.microsoftonline.com/b9bd2162xxx/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded

resource=https://tailspin.onmicrosoft.com/surveys.webapi
  &client_id=87df91dc-63de-4765-8701-b59cc8bd9e11
  &client_secret=i3Bf12Dn...
  &grant_type=authorization_code
  &code=PG8wJG6Y...

El secreto es una cadena, por lo que debe asegurarse de no perder el valor. La práctica recomendada es mantener el secreto de cliente fuera del control de código fuente. Cuando se implemente en Azure, almacene el secreto en un valor de configuración de la aplicación.

Sin embargo, cualquier persona con acceso a la suscripción de Azure puede ver la configuración de la aplicación. Además, siempre existe la tentación de proteger los secretos en el control de código fuente (por ejemplo, en los scripts de implementación), compartirlos por correo electrónico, etc.

Para obtener seguridad adicional, puede usar un certificado de cliente en lugar de un secreto de cliente. El cliente usa un certificado para demostrar que la solicitud de token provenía del cliente. El certificado de cliente se almacena en el almacén de claves. Para esta opción, agregue ClientCertificates en AzureAd y especifique los valores de configuración como se muestra aquí:

   "ClientCertificates": [
      {
        "SourceType": "KeyVault",
        "KeyVaultUrl": "https://msidentitywebsamples.vault.azure.net",
        "KeyVaultCertificateName": "MicrosoftIdentityCert"
      }
     ]

Nota

Para más información, consulte Uso de certificados con Microsoft.Identity.Web.

Next