Share via


Llamar a la API de REST del servicio de solicitudes

Verified ID de Microsoft Entra incluye la API REST del servicio de solicitudes. Esta API le permite emitir y comprobar credenciales. En este artículo se muestra cómo empezar a usar la API de REST del servicio de solicitudes.

Token de acceso a la API

La aplicación necesita incluir un token de acceso válido con los permisos necesarios para que pueda acceder a la API de REST del servicio de solicitud. Los tokens de acceso emitidos por la Plataforma de identidad de Microsoft contienen información (ámbitos) que la API de REST del servicio de solicitudes usa para validar al autor de la llamada. Un token de acceso garantiza que el autor de llamada tenga los permisos adecuados para realizar la operación que solicita.

Para obtener un token de acceso, la aplicación debe estar registrada en Plataforma de identidad de Microsoft y tener la autorización de un administrador para acceder a la API de REST de solicitud de servicio. Si no ha registrado la aplicación verifiable-credentials-app, vea cómo registrar la aplicación y luego genere un secreto de aplicación.

Obtención de un token de acceso

Use el flujo de concesión de credenciales de cliente de OAuth 2.0 para adquirir el token de acceso mediante Plataforma de identidad de Microsoft. Use una biblioteca de confianza para este fin. En este tutorial, usamos la biblioteca de autenticación de Microsoft (MSAL). MSAL simplifica la incorporación de autenticación y autorización a una aplicación que puede llamar a una API web segura.

POST /{tenant}/oauth2/v2.0/token HTTP/1.1           //Line breaks for clarity
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&scope=3db474b9-6a0c-4840-96ac-1fceb342124f/.default
&client_secret=sampleCredentia1s
&grant_type=client_credentials

En el código anterior, proporcione los parámetros siguientes:

Parámetro Condition Descripción
Autoridad Requerido Inquilino del directorio en el que la aplicación tiene previsto funcionar. Por ejemplo: https://login.microsoftonline.com/{your-tenant}. (Remplace your-tenant por el identificador o nombre de inquilino).
Id. de cliente Obligatorio El identificador de la aplicación que está asignado a la aplicación. Puede encontrar esta información en Azure Portal, donde ha registrado la aplicación.
Secreto del cliente Requerido Secreto de cliente que ha generado para la aplicación.
Ámbitos Obligatorio Se debe establecer en 3db474b9-6a0c-4840-96ac-1fceb342124f/.default. Esto generará un token de acceso con una notificación roles con el valor VerifiableCredential.Create.All.

Para obtener más información sobre cómo obtener un token de acceso mediante la identidad de una aplicación de consola, vea alguno de los artículos siguientes:

También puede acceder a una solicitud de token con un certificado en lugar de un secreto de cliente.

POST /{tenant}/oauth2/v2.0/token HTTP/1.1   //Line breaks for clarity
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&scope=3db474b9-6a0c-4840-96ac-1fceb342124f/.default
&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer
&client_assertion=eyJhbGciOiJSUzI1NiIsIng1dCI6Imd4OHRHeXN5amNScUtqRlBuZDdSRnd2d1pJMCJ9.eyJ{a lot of characters here}M8U3bSUKKJDEg
&grant_type=client_credentials

Llamada a la API

Emitir o verificar una credencial verificable:

  1. Cree una solicitud HTTP POST para la API de REST del servicio de solicitudes. El ID del inquilino ya no es necesario en la URL porque está presente como reclamo en el token de acceso.

    Problema

    POST https://verifiedid.did.msidentity.com/v1.0/verifiableCredentials/createIssuanceRequest
    

    Verify

    POST https://verifiedid.did.msidentity.com/v1.0/verifiableCredentials/createPresentationRequest
    
  2. Adjunte el token de acceso como token de portador al encabezado de autorización de una solicitud HTTP.

    Authorization: Bearer <token>
    
  3. Establezca el encabezado Content-Type en Application/json.

  4. Prepare y adjunte la carga de la solicitud de emisión o presentación al cuerpo de la solicitud.

  5. Envíe la solicitud a la API de REST del servicio de solicitudes.

La API del servicio de solicitudes devuelve un código de estado HTTP 201 Created en una llamada correcta. Si la llamada API devuelve un error, consulte la documentación de referencia de errores.

Ejemplo de solicitud de emisión

En el siguiente ejemplo se muestra una solicitud de emisión de credenciales verificables. Para obtener más información sobre la carga, vea Especificación de la emisión de la API de REST Request Service.

POST https://verifiedid.did.msidentity.com/v1.0/verifiableCredentials/createIssuanceRequest
Content-Type: application/json
Authorization: Bearer  <token>

{...JSON payload...}

Solicitud de emisión mediante el flujo de atestación idTokenHint:

{
    "includeQRCode": false,
    "callback": {
        "url": "https://contoso.com/api/issuer/issuanceCallback",
        "state": "de19cb6b-36c1-45fe-9409-909a51292a9c",
        "headers": {
            "api-key": "OPTIONAL API-KEY for CALLBACK EVENTS"
        }
    },
    "authority": "did:web:verifiedid.contoso.com",
    "registration": {
        "clientName": "Verifiable Credential Expert Sample"
    },
    "type": "VerifiedCredentialExpert",
    "manifestUrl": "https://verifiedid.did.msidentity.com/v1.0/00001111-aaaa-2222-bbbb-3333cccc4444/verifiableCredentials/contracts/VerifiedCredentialExpert1",
    "pin": {
        "value": "3539",
        "length": 4
    },
    "claims": {
        "given_name": "Megan",
        "family_name": "Bowen"
    }
}

Para obtener el código completo, vea alguno de los siguientes ejemplos de código:

Ejemplo de solicitud de presentación

En el siguiente ejemplo se muestra una solicitud de presentación de credenciales verificables. Para obtener más información sobre la carga, vea Especificación de presentación de la API de REST del servicio de solicitudes.

POST https://verifiedid.did.msidentity.com/v1.0/verifiableCredentials/createPresentationRequest
Content-Type: application/json
Authorization: Bearer  <token>

{...JSON payload...}

Solicitud de presentación de una credencial con cierto tipo y emisor.

{
  "includeQRCode": true,
  "callback": {
    "url": "https://contoso.com/api/verifier/presentationCallback",
    "state": "92d076dd-450a-4247-aa5b-d2e75a1a5d58",
    "headers": {
      "api-key": "OPTIONAL API-KEY for CALLBACK EVENTS"
    }
  },
  "authority": "did:web:verifiedid.contoso.com",
  "registration": {
    "clientName": "Veritable Credential Expert Verifier"
  },
  "includeReceipt": true,
  "requestedCredentials": [
    {
      "type": "VerifiedCredentialExpert",
      "purpose": "So we can see that you a veritable credentials expert",
      "acceptedIssuers": [
        "did:web:verifiedid.contoso.com"
      ],
      "configuration": {
        "validation": {
          "allowRevoked": true,
          "validateLinkedDomain": true
        }
      }
    }
  ]
}

Para obtener el código completo, vea alguno de los siguientes ejemplos de código:

Eventos de devolución de llamada

La carga de la solicitud contiene el punto de conexión de devolución de llamada de emisión y de presentación. El punto de conexión forma parte de la aplicación web y debe estar disponible públicamente mediante el protocolo HTTPS. La API del servicio de solicitudes llama al punto de conexión para informar a la aplicación de determinados eventos. Por ejemplo, estos eventos pueden ser que un usuario digitalice el código QR, use el vínculo profundo de la aplicación de autenticación o finalice el proceso de presentación.

En el siguiente diagrama se describen la llamada que realiza su aplicación a la API de REST del servicio de solicitudes y las devoluciones de llamada a la aplicación.

Diagrama que muestra la llamada a la API y los eventos de devolución de llamada.

Configure el punto de conexión para escuchar las solicitudes HTTP POST entrantes. En el siguiente fragmento de código se muestra cómo controlar la solicitud HTTP de devolución de llamada de emisión y cómo actualizar la interfaz de usuario en consecuencia:

No aplicable. Elija alguno de los demás lenguajes de programación.

Pasos siguientes

Más información sobre estas especificaciones: