Compartir vía


Llame a la API REST del servicio de solicitud

El Identificador Verificado de Microsoft Entra incluye la API REST del Servicio de Solicitudes. Esta API le permite emitir y comprobar las credenciales. En este artículo se muestra cómo empezar a usar la API REST del servicio de solicitud.

Token de acceso de API

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

Para obtener un token de acceso, la aplicación debe registrarse en la plataforma de identidad de Microsoft y ser autorizada por un administrador para acceder a la API rest del servicio de solicitud. Si no ha registrado la aplicación verifiable-credentials-app, consulte 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 usando la plataforma de identidad de Microsoft. Use una biblioteca de confianza para este propósito. En este tutorial, usamos la biblioteca de autenticación de Microsoft (MSAL). MSAL simplifica la adició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 Condición Descripción
Autoridad Obligatorio 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 Identificador de aplicación asignado a la aplicación. Puede encontrar esta información en Azure Portal, donde registró la aplicación.
Secreto de cliente Obligatorio El secreto de cliente que generaste para tu aplicación.
Ámbitos Obligatorio Debe establecerse en 3db474b9-6a0c-4840-96ac-1fceb342124f/.default. Este ajuste genera 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, consulte uno de los siguientes artículos:

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

Para emitir o comprobar una credencial verificable:

  1. Construya una solicitud HTTP POST a la API REST del servicio de solicitud. El identificador de inquilino ya no es necesario en la dirección URL porque está presente como una notificación 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 en 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 REST del servicio de solicitudes.

Request Service API devuelve un código de estado HTTP 201 Created en una llamada correcta. Si la llamada API devuelve un error, compruebe la documentación de referencia de error .

Ejemplo de solicitud de emisión

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

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 de idTokenHint:

{
    "authority": "did:web:verifiedid.contoso.com",
    "callback": {
        "url": "https://contoso.com/api/issuer/issuanceCallback",
        "state": "de19cb6b-36c1-45fe-9409-909a51292a9c",
        "headers": {
            "api-key": "OPTIONAL API-KEY for CALLBACK EVENTS"
        }
    },
    "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, consulte uno de los ejemplos de código siguientes:

Ejemplo de solicitud de presentación

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

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 un determinado tipo y emisor:

{
  "authority": "did:web:verifiedid.contoso.com",
  "callback": {
    "url": "https://contoso.com/api/verifier/presentationCallback",
    "state": "92d076dd-450a-4247-aa5b-d2e75a1a5d58",
    "headers": {
      "api-key": "OPTIONAL API-KEY for CALLBACK EVENTS"
    }
  },
  "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, consulte uno de los ejemplos de código siguientes:

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 a través del protocolo HTTPS. Request Service API llama al punto de conexión para informar a la aplicación de determinados eventos. Por ejemplo, estos eventos pueden ser cuando un usuario examina el código QR, usa el vínculo profundo a la aplicación autenticadora o finaliza el proceso de presentación.

En el siguiente diagrama se describen la llamada que realiza su aplicación a la API REST de servicios de solicitud 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 uno de los otros lenguajes de programación.

Pasos siguientes

Obtenga más información sobre estas especificaciones: