Chamar a API REST de Serviço de Solicitação

A ID Verificada do Microsoft Entra inclui a API REST do Serviço de Solicitação. Essa API permite emitir e verificar credenciais. Este artigo mostra como começar a usar a API REST de Serviço de Solicitação.

Token de acesso da API

Seu aplicativo precisa incluir um token de acesso válido com as permissões necessárias para poder acessar a API REST de Serviço da Solicitação. Os tokens de acesso emitidos pela plataforma de identidade da Microsoft contêm informações (escopos) que a API REST de Serviço de Solicitação usa para validar o chamador. Um token de acesso garante que o chamador tenha as permissões apropriadas para executar a operação que está solicitando.

Para obter um token de acesso, seu aplicativo deve ser registrado com a plataforma de identidade da Microsoft e ser autorizado por um administrador para acessar a API REST de Serviço de Solicitação. Se você ainda não registrou o aplicativo verifiable-credentials-app, confiracomo registrar o aplicativo, em seguida gere o segredo do aplicativo.

Obter um token de acesso

Use o fluxo de concessão de credenciais do cliente OAuth 2.0 para adquirir o token de acesso usando a plataforma de identidade da Microsoft. Use uma biblioteca confiável para essa finalidade. Neste tutorial, usamos a Biblioteca de Autenticação da Microsoft (MSAL). A MSAL simplifica a adição de autenticação e autorização a um aplicativo que pode chamar uma 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=535fb089-9ff3-47b6-9bfb-4f1264799865
&scope=3db474b9-6a0c-4840-96ac-1fceb342124f/.default
&client_secret=sampleCredentia1s
&grant_type=client_credentials

No código anterior, forneça os seguintes parâmetros:

Parâmetro Condição Descrição
Authority Obrigatório O locatário do diretório no qual o aplicativo planeja operar. Por exemplo: https://login.microsoftonline.com/{your-tenant}. (Substitua your-tenant pela ID de Locatário ou nome.)
ID do Cliente Obrigatório A ID do aplicativo atribuído ao aplicativo. É possível encontrar essas informações no portal do Azure, onde você registrou seu aplicativo.
Segredo do cliente Obrigatório O segredo do cliente gerado para seu aplicativo.
Escopos Obrigatório Deve ser definido como 3db474b9-6a0c-4840-96ac-1fceb342124f/.default. Essa configuração produz um token de acesso com uma declaração de funções de VerifiableCredential.Create.All.

Para obter mais informações sobre como obter um token de acesso usando a identidade de um aplicativo de console, consulte um dos seguintes artigos:

Você também pode Acessar uma solicitação de token com um certificado, ao invés do segredo do 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=12345678-0000-0000-00000000000000000
&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

Chamar a API

Para emitir ou verificar uma credencial verificável:

  1. Construa uma solicitação HTTP POST para a API REST de Serviço de Solicitação. A ID de locatário não é mais necessária na URL porque está presente como uma declaração no token de acesso.

    Problema

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

    Verificar

    POST https://verifiedid.did.msidentity.com/v1.0/verifiableCredentials/createPresentationRequest
    
  2. Anexe o token de acesso como um token de portador ao cabeçalho de autorização em uma solicitação HTTP.

    Authorization: Bearer <token>
    
  3. Defina o cabeçalho Content-Type como Application/json.

  4. Prepare e anexe o conteúdo de solicitação emissão ou presentação ao corpo da solicitação.

  5. Envie a solicitação para a API REST de Serviço de Solicitação.

A API de Serviço de Solicitação retorna um Código de Status HTTP 201 Created em uma chamada bem-sucedida. Se a chamada à API retornar um erro, verifique a documentação de referência de erro.

Exemplo de solicitação de emissão

O exemplo a seguir demonstra uma solicitação de emissão de credenciais verificáveis. Para obter informações sobre o conteúdo, consulte especificação de emissão da API REST de Serviço de Solicitação.

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

{...JSON payload...}

Solicitação de emissão utilizando o fluxo de atestado 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/12345678-0000-0000-0000-000000000000/verifiableCredentials/contracts/VerifiedCredentialExpert1",
    "pin": {
        "value": "3539",
        "length": 4
    },
    "claims": {
        "given_name": "Megan",
        "family_name": "Bowen"
    }
}

Para o código completo, consulte um dos exemplos de código a seguir:

Exemplo de solicitação de apresentação

O exemplo a seguir demonstra uma solicitação de apresentação de credenciais verificáveis. Para obter informações sobre o conteúdo, consulte especificação de apresentação da API REST de Serviço de Solicitação.

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

{...JSON payload...}

Solicitação de apresentação para uma credencial com determinado tipo e emissor:

{
  "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 o código completo, consulte um dos exemplos de código a seguir:

Eventos de retorno de chamada

O conteúdo da solicitação contém os pontos de extremidade do retorno de chamada emissão e apresentação. O ponto de extremidade faz parte do aplicativo Web e deve estar disponível publicamente por meio do protocolo HTTPS. A API de Serviço de Solicitação chama o ponto de extremidade para informar determinados eventos ao aplicativo. Por exemplo, tais eventos podem ocorrer quando um usuário verifica o código QR, usa o link profundo para o aplicativo autenticador ou termina o processo de apresentação.

O diagrama a seguir descreve a chamada que seu aplicativo faz para a API REST de Serviço de Solicitação e os retornos de chamada para seu aplicativo.

O diagrama que descreve a chamada à API e os eventos de retorno de chamada.

Configure seu ponto de extremidade para atender as solicitações HTTP POST de entrada. O trecho de código a seguir demonstra como tratar a solicitação HTTP de retorno de chamada de emissão e atualizar a interface do usuário em conformidade:

Não aplicável. Escolha uma das outras linguagens de programação.

Próximas etapas

Saiba mais sobre essas especificações: