Creación de credenciales verificables para tokens de identificador

Una definición de reglas que utiliza la atestación de idTokens genera un flujo de emisión en el que tendrá que realizar un inicio de sesión interactivo en un proveedor de identidades de OpenID Connect (OIDC) en Microsoft Authenticator. Las notificaciones del token de identificador que devuelve el proveedor de identidades se pueden usar para ingresar datos en la credencial verificable emitida. La sección de asignación de notificaciones de la definición de reglas especifica qué notificaciones se usan.

Creación de una credencial personalizada con el tipo de atestación idTokens

En Azure Portal, si hace clic en Agregar credencial, podrá empezar dos inicios rápidos. Seleccione Credencial personalizada y, a continuación, seleccione Siguiente.

Captura de pantalla del inicio rápido Emitir credenciales para crear una credencial personalizada.

En la página Crear una credencial, escriba el código JSON para la presentación y las definiciones de reglas. En el cuadro Nombre de credencial, asigne un nombre de tipo a la credencial. Para crear la credencial, seleccione Crear.

Captura de pantalla de la página de creación de credenciales, en la que se muestran ejemplos de JSON para los archivos de visualización y reglas.

Ejemplo de definiciones de visualización en formato JSON

La definición de visualización de JSON es casi la misma, independientemente del tipo de atestación. Solo tiene que ajustar las etiquetas según las notificaciones que tiene la credencial verificable. El código JSON que se espera para las definiciones de visualización es el contenido interno de la colección de visualizaciones. El código JSON es una colección, por lo que si quiere admitir varias configuraciones regionales, agregue varias entradas separadas por una coma.

{
    "locale": "en-US",
    "card": {
      "title": "Verified Credential Expert",
      "issuedBy": "Microsoft",
      "backgroundColor": "#000000",
      "textColor": "#ffffff",
      "logo": {
        "uri": "https://didcustomerplayground.blob.core.windows.net/public/VerifiedCredentialExpert_icon.png",
        "description": "Verified Credential Expert Logo"
      },
      "description": "Use your verified credential to prove to anyone that you know all about verifiable credentials."
    },
    "consent": {
      "title": "Do you want to get your Verified Credential?",
      "instructions": "Sign in with your account to get your card."
    },
    "claims": [
      {
        "claim": "vc.credentialSubject.userName",
        "label": "User name",
        "type": "String"
      },
      {
        "claim": "vc.credentialSubject.displayName",
        "label": "Display name",
        "type": "String"
      },
      {
        "claim": "vc.credentialSubject.firstName",
        "label": "First name",
        "type": "String"
      },
      {
        "claim": "vc.credentialSubject.lastName",
        "label": "Last name",
        "type": "String"
      }
    ]
}

Ejemplo de definiciones de reglas JSON

La definición de atestación JSON debe contener el nombre idTokens, los detalles de configuración de OIDC (clientID, configuración, redirectUri y ámbito) y la sección de asignación de notificaciones. El código JSON esperado para las definiciones de reglas es el contenido interno del atributo de reglas, que comienza con el atributo de atestación.

La asignación de notificaciones en el ejemplo siguiente requiere que configure el token como se explica en la sección Notificaciones del token de identificador del proveedor de identidades.

{
  "attestations": {
    "idTokens": [
      {
        "clientId": "8d5b446e-22b2-4e01-bb2e-9070f6b20c90",
        "configuration": "https://didplayground.b2clogin.com/didplayground.onmicrosoft.com/B2C_1_sisu/v2.0/.well-known/openid-configuration",
        "redirectUri": "vcclient://openid/",
        "scope": "openid profile email",
        "mapping": [
          {
            "outputClaim": "userName",
            "required": true,
            "inputClaim": "$.upn",
            "indexed": true
          },
          {
            "outputClaim": "displayName",
            "required": true,
            "inputClaim": "$.name",
            "indexed": false
          },
          {
            "outputClaim": "firstName",
            "required": true,
            "inputClaim": "$.given_name",
            "indexed": false
          },
          {
            "outputClaim": "lastName",
            "required": true,
            "inputClaim": "$.family_name",
            "indexed": false
          }
        ],
        "required": false
      }
    ]
  },
  "validityInterval": 2592000,
  "vc": {
    "type": [
      "VerifiedCredentialExpert"
    ]
  }
}

Registro de la aplicación

El atributo clientId es el identificador de aplicación de una aplicación registrada en el proveedor de identidades de OIDC. Para Microsoft Entra ID, cree la aplicación haciendo lo siguiente:

  1. En el Azure Portal, vaya a Microsoft Entra ID.

  2. Haga clic en Registros de aplicaciones, seleccione Nuevo registro; y, luego, asigne un nombre a la aplicación.

    Si solo quiere que las cuentas del inquilino puedan iniciar sesión, mantenga activada la casilla Solo cuentas de este directorio.

  3. En Redirección de URI (opcional), seleccione Cliente público o nativo (móvil y escritorio) y escriba vcclient://openid/.

Si quiere probar qué notificaciones hay en el token de Microsoft Entra, haga lo siguiente:

  1. En el panel izquierdo, seleccione Autenticación>Agregar plataforma>Web.

  2. Para Redirect URI escriba https://jwt.ms, y después seleccione Tokens de identificador (usados para flujos implícitos e híbridos).

  3. Seleccione Configurar.

Cuando termine de probar el token de identificador, considere la posibilidad de quitar https://jwt.ms y la compatibilidad con flujos implícitos e híbridos.

Para Microsoft Entra: Puede probar el registro de la aplicación y, si ha habilitado la compatibilidad con la redirección a https://jwt.ms, puede obtener un token de identificador mediante la ejecución del siguiente contenido en el explorador:

https://login.microsoftonline.com/<your-tenantId>/oauth2/v2.0/authorize?client_id=<your-appId>&nonce=defaultNonce&redirect_uri=https%3A%2F%2Fjwt.ms&scope=openid%20profile&response_type=id_token&prompt=login

En el código, reemplace <your-tenantId> por el identificador de inquilino. Para obtener las notificaciones adicionales, debe tener perfil como parte del ámbito.

Para Azure Active Directory B2C, el proceso de registro de aplicaciones es el mismo, pero B2C tiene compatibilidad integrada en Azure Portal para así probar las directivas B2C a través de la funcionalidad Ejecutar flujo de usuario.

Notificaciones en el token de identificador del proveedor de identidades

Las notificaciones deben existir en el proveedor de identidades que se ha devuelto para que puedan rellenar los datos correctamente en la credencial verificable.

Si las notificaciones no existen, no hay ningún valor en la credencial verificable emitida. La mayoría de los proveedores de identidades de OIDC no emiten una notificación en un token de identificador si la notificación tiene un valor null en el perfil. Asegúrese de incluir la notificación en la definición del token de identificador y asegúrese de que ha escrito un valor para la notificación en el perfil de usuario.

Para Microsoft Entra ID: Para configurar las notificaciones que se van a incluir en el token, vea Proporcionar notificaciones opcionales a la aplicación. La configuración es por aplicación, por lo que esta configuración debe ser para la aplicación que tenga el identificador de aplicación especificado en el identificador de cliente en la definición de reglas.

Para que coincidan con las definiciones de visualización y reglas, debe hacer que el JSON optionalClaims de la aplicación tenga un aspecto similar al siguiente:

"optionalClaims": {
    "idToken": [
        {
            "name": "upn",
            "source": null,
            "essential": false,
            "additionalProperties": []
        },
        {
            "name": "family_name",
            "source": null,
            "essential": false,
            "additionalProperties": []
        },
        {
            "name": "given_name",
            "source": null,
            "essential": false,
            "additionalProperties": []
        },
        {
            "name": "preferred_username",
            "source": null,
            "essential": false,
            "additionalProperties": []
        }
    ],
    "accessToken": [],
    "saml2Token": []
},

Para Azure Active Directory B2C, la configuración de otras notificaciones en el token de identificador depende de si la directiva B2C es un flujo de usuario o una directiva personalizada. Para más información sobre los flujos de usuario, consulte Configuración de un flujo de registro e inicio de sesión en Azure Active Directory B2C. Para obtener información sobre la directiva personalizada, consulte Proporcionar notificaciones opcionales a la aplicación.

Para otros proveedores de identidades, consulte la documentación pertinente.

Configuración de los ejemplos para emitir y verificar la credencial personalizada

Para configurar el código de ejemplo para emitir y comprobar las credenciales personalizadas, necesita:

  • El identificador descentralizado (DID) del emisor del inquilino
  • Tipo de credencial
  • La dirección URL del manifiesto de la credencial

La manera más fácil de encontrar esta información para una credencial personalizada es ir a la credencial en Azure Portal. Seleccione Emitir credencial. Allí podrá acceder a un cuadro de texto con una carga JSON para la API de servicio de solicitud. Reemplace los valores de marcador de posición por la información de su entorno. El DID del emisor es el valor de autoridad.

Captura de pantalla del inicio rápido de emisión de credenciales personalizadas.

Pasos siguientes

Consulte las Referencia a las definiciones de reglas y visualización.