Appel de l’API REST du service de demande

Vérification d’identité Microsoft Entra inclut l’API REST du service de requête. Cette API vous permet d’émettre et de vérifier des informations d’identification. Cet article vous montre comment commencer à utiliser l’API REST du service de demande.

Jeton d’accès API

Votre application doit inclure un jeton d’accès valide avec les autorisations requises pour pouvoir accéder à l’API REST du service de demande. Les jetons d’accès émis par la plateforme d’identité Microsoft contiennent des informations (étendues) que l’API REST du service de demande utilise pour valider l’appelant. Un jeton d’accès assure que l’appelant dispose des autorisations nécessaires pour effectuer l’opération qu’il demande.

Pour obtenir un jeton d’accès, votre application doit être enregistrée sur la plateforme d’identité Microsoft et être autorisée par un administrateur à accéder à l’API REST du service de demande. Si vous n’avez pas inscrit l’application verifiable-credentials-app, consultez comment inscrire l’application puis générer un secret d’application.

Obtention d’un jeton d’accès

Utilisez le workflow d’octroi d’informations d’identification du client OAuth 2.0 pour obtenir le jeton d’accès à l’aide du de la plateforme d’identités Microsoft. Utilisez une bibliothèque approuvée à cet effet. Dans ce tutoriel, nous utilisons la bibliothèque d’authentification Microsoft (MSAL). MSAL simplifie l’ajout de l’authentification et de l’autorisation à une application qui peut appeler une API web sécurisée.

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

Dans le code précédent, fournissez les paramètres suivants :

Paramètre Condition Description
Authority Obligatoire Le locataire de l’annuaire sur lequel les plans d’application opèrent. Par exemple : https://login.microsoftonline.com/{your-tenant}. (Remplacez your-tenant par votre ID ou nom de locataire.)
ID client Obligatoire Copiez l’ID d’application affecté à votre application. Ces informations sont disponibles dans le portail Azure où vous avez inscrit votre application.
Clé secrète client Obligatoire La clé secrète client que vous avez générée pour votre application.
Étendues Obligatoire Cette propriété doit être définie sur 3db474b9-6a0c-4840-96ac-1fceb342124f/.default. Ce paramètre produit un jeton d’accès avec une revendication de rôles de VerifiableCredential.Create.All.

Pour plus d’informations sur la façon d’obtenir un jeton d’accès à l’aide de l’identité d’une application de console, consultez l’un des articles suivants :

Vous pouvez également accéder à la requête de jeton avec un certificat au lieu d’une clé secrète client.

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

Appeler l’API

Pour émettre ou vérifier des justificatifs vérifiables :

  1. Construisez une requête HTTP POST adressée à l’API REST du service de demande. L’ID de locataire n’est plus nécessaire dans l’URL, car il est présent sous la forme d’une revendication dans le jeton d’accès.

    problème

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

    Vérifier

    POST https://verifiedid.did.msidentity.com/v1.0/verifiableCredentials/createPresentationRequest
    
  2. Attachez le jeton d’accès comme jeton du porteur à l’en-tête d’autorisation dans une requête HTTP.

    Authorization: Bearer <token>
    
  3. Attribuez à l’en-tête Content-Type la valeur Application/json.

  4. Préparez et attachez la charge utile de demande Émissionou Présentation au corps de la demande.

  5. Envoyez la demande à l’API REST du service de demande.

L’API du service de requête retourne un code d’état HTTP 201 Created lors d’un appel réussi. Si l’appel d’API retourne une erreur, consultez la documentation de référence des erreurs.

Exemple de demande d’émission

L’exemple suivant illustre une demande d’émission de justificatif vérifiable. Pour plus d’informations sur la charge utile, consultez Spécification de l’émission de l’API REST du service de demande.

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

{...JSON payload...}

Demande d’émission à l’aide du flux d’attestation 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"
    }
}

Pour obtenir le code complet, consultez l’un des exemples de code suivants :

Exemple de demande de présentation

L’exemple suivant illustre une demande de présentation de justificatif vérifiable. Pour plus d’informations sur la charge utile, consultez Spécification de la présentation de l’API REST de Request Service.

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

{...JSON payload...}

Requête de présentation d’informations d’identification avec un certain type et émetteur :

{
  "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
        }
      }
    }
  ]
}

Pour obtenir le code complet, consultez l’un des exemples de code suivants :

Événements de rappel

La charge utile de la demande contient le point de terminaison de rappel d’émission et de présentation. Le point de terminaison fait partie de votre application web et doit être publiquement disponible par le biais du protocole HTTPS. L’API du service de requête appelle votre point de terminaison pour informer votre application lors de certains événements. Par exemple, lorsqu’un utilisateur scanne le code QR, utilise le lien ciblé avec son application d’authentification, ou termine le processus de présentation.

Le diagramme suivant décrit l’appel que votre application fait à l’API REST du service de demande, et les rappels à votre application.

Le diagramme montrant l’appel vers l’API et les événements de rappel.

Configurez votre point de terminaison pour écouter les requêtes HTTP POST entrantes. L’extrait de code suivant montre comment traiter la demande HTTP de rappel d’émission et mettre à jour l’interface utilisateur en conséquence :

Non applicable. Choisissez l’un des autres langages de programmation.

Étapes suivantes

En savoir plus sur ces spécifications :