Spécification d’émission de l’API REST du service de requête
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 spécifie l’API REST du service de demande pour une demande d’émission. Un autre article explique comment appeler l’API REST du service de requête.
Demande HTTP
La demande d’émission de l’API REST du service de demande prend en charge la méthode HTTP suivante :
Méthode | Notes |
---|---|
POST | Avec la charge utile JSON spécifiée dans cet article. |
La demande d’émission de l’API REST du service de demande nécessite les en-têtes HTTP suivants :
Nom | Valeur |
---|---|
Authorization |
Attachez le jeton d’accès comme jeton du porteur à l’en-tête d’autorisation dans une requête HTTP. Par exemple : Authorization: Bearer <token> . |
Content-Type |
application/json |
Construisez une requête HTTP POST adressée à l’API REST du service de demande.
https://verifiedid.did.msidentity.com/v1.0/verifiableCredentials/createIssuanceRequest
La requête HTTP suivante illustre une demande adressée à l’API REST du service de demande :
POST https://verifiedid.did.msidentity.com/v1.0/verifiableCredentials/createIssuanceRequest
Content-Type: application/json
Authorization: Bearer <token>
{
"callback": {
"url": "https://contoso.com/api/issuer/issuanceCallback",
"state": "Aaaabbbb11112222",
"headers": {
"api-key": "an-api-key-can-go-here"
}
},
...
}
L’autorisation suivante est requise pour appeler l’API REST du service de demande. Pour plus d’informations, consultez Accorder des autorisations pour obtenir des jetons d’accès.
Type d'autorisation | Autorisation |
---|---|
Application | 3db474b9-6a0c-4840-96ac-1fceb342124f/.default |
Charge utile de la demande d’émission
La charge utile de la demande d’émission contient des informations sur votre demande d’émission de justificatifs vérifiables. L’exemple suivant montre une demande d’émission effectuée en utilisant un flux de code confidentiel avec des revendications d’utilisateur, telles que le prénom et le nom. Le résultat de cette requête renvoie un code QR avec un lien pour démarrer le processus d’émission.
{
"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",
"manifest": "https://verifiedid.did.msidentity.com/v1.0/tenants/aaaabbbb-0000-cccc-1111-dddd2222eeee/verifiableCredentials/contracts/MTIzNDU2NzgtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwdmVyaWZpZWRjcmVkZW50aWFsZXhwZXJ0/manifest",
"pin": {
"value": "3539",
"length": 4
},
"claims": {
"given_name": "Megan",
"family_name": "Bowen"
},
"expirationDate": "2024-12-31T23:59:59.000Z"
}
La charge utile contient les propriétés suivantes :
Paramètre | Type | Description |
---|---|---|
includeQRCode |
Boolean | Optionnel. Détermine si un code QR est inclus dans la réponse de cette demande. Présentez le code QR et demandez à l’utilisateur de le scanner. Le scan du code QR lance l’application d’authentification avec cette demande d’émission. Les valeurs possibles sont true ou false (par défaut). Lorsque vous définissez la valeur sur false , utilisez la propriété url de retour pour afficher un lien profond. |
callback |
Callback | Mandatory. Permet au développeur d’obtenir de façon asynchrone des informations sur le flux pendant le processus d’émission de justificatifs vérifiables. Par exemple, le développeur peut souhaiter un appel si l’utilisateur a scanné le code QR, ou si la demande d’émission a réussi ou échoué. |
authority |
chaîne | Identificateur décentralisé de l’émetteur (DID). Pour plus d’informations, consultez Collecter les informations d’identification et les détails de l’environnement pour configurer votre exemple d’application. |
registration |
RequestRegistration | Fournit des informations sur l’émetteur qui peuvent être affichées dans l’application d’authentification. |
type |
string | Type de justificatifs vérifiables. Doit correspondre au type défini dans le manifeste des justificatifs vérifiables. Par exemple : VerifiedCredentialExpert . Pour plus d’informations, consultez Créer la carte d’expert en justificatifs vérifiés dans Azure. |
manifest |
string | URL du document manifeste des justificatifs vérifiables. Pour plus d’informations, consultez Collecter les informations d’identification et les détails de l’environnement pour configurer votre exemple d’application. |
claims |
string | facultatif. Peut uniquement être utilisé pour le flux d’attestation d’indicateur de jeton d’ID afin d’inclure une collection d’assertions effectuées sur le sujet dans les justificatifs vérifiables. |
pin |
PIN | facultatif. Le code PIN ne peut servir qu’avec le flux d’attestation de l’indicateur de jeton d’ID. Numéro de code confidentiel pour fournir une sécurité supplémentaire lors de l’émission. Vous générez un code confidentiel et le présentez à l’utilisateur dans votre application. L’utilisateur doit fournir le code confidentiel que vous avez généré. |
expirationDate |
string | facultatif. L’expirationDate ne peut servir qu’avec le flux d’attestation de l’indicateur de jeton d’ID. Si elle est spécifiée, la valeur doit être une date exprimée au format ISO8601. La date remplace la validitéInterval dans la définition des règles d’identification pour cette demande d’émission. Utilisez ce paramètre pour contrôler explicitement lorsque des informations d’identification expirent, telles que la fin du jour, la fin du mois ou la fin de l’année, quel que soit le moment où elles sont émises. Notez que la date est exprimée au format UTC. Si vous spécifiez la fin de l’année, avec l’heure définie sur 23:59:59 , soit 1 seconde à minuit en heure UTC. Tout utilisateur d’un fuseau horaire différent obtient la date d’expiration présentée dans le fuseau horaire local dans Microsoft Authenticator. Cela signifie que si vous êtes dans le fuseau horaire CET, il sera présenté comme 1er janvier 1h00.Le contrat d’informations d’identification doit avoir l’indicateur allowOverrideValidityOnIssuance défini sur true. |
Il existe actuellement quatre types d’attestations de revendications que vous pouvez envoyer dans la charge utile. La vérification de l'identité Microsoft Entra utilise quatre façons d’insérer des revendications dans des justificatifs vérifiables et d’attester de ces informations avec le DID de l’émetteur. Les quatre types sont les suivants :
- Jeton d’ID
- Indicateur de jeton d’ID
- Informations d’identification vérifiables via une présentation vérifiable.
- Revendications attestées automatiquement
Pour des informations détaillées sur les types d’entrée, consultez Personnalisation de vos justificatifs vérifiables.
Type RequestRegistration
Le type RequestRegistration
fournit l’inscription des informations pour l’émetteur. Le type RequestRegistration
contient les propriétés suivantes :
Propriété | Type | Description |
---|---|---|
clientName |
string | Nom complet de l’émetteur des justificatifs vérifiables. |
logoUrl |
string | facultatif. URL du logo de l’émetteur. |
termsOfServiceUrl |
string | facultatif. URL des Conditions d’utilisation des justificatifs vérifiables que vous émettez. |
Notes
À ce stade, les informations RequestRegistration
ne sont pas présentées lors de l’émission de l’application Microsoft Authenticator. Toutefois, ces informations peuvent être utilisées dans la charge utile.
Type de rappel
L’API REST du service de demande génère plusieurs événements pour le point de terminaison de rappel. Ces événements vous permettent de mettre à jour l’interface utilisateur et de poursuivre le processus une fois que les résultats sont renvoyés à l’application. Le type Callback
contient les propriétés suivantes :
Propriété | Type | Description |
---|---|---|
url |
string | URI du point de terminaison de rappel de votre application. L’URI doit pointer vers un point de terminaison accessible sur Internet. Sinon, le service déclenchera une erreur d’URL de rappel non lisible. Formats acceptés IPv4, IPv6 ou NOM d’hôte résolvable DNS. Pour renforcer votre réseau, consultez faq. |
state |
string | Met en corrélation l’événement de rappel avec l’état passé dans la charge utile d’origine. |
headers |
string | facultatif. Vous pouvez inclure une collection d’en-têtes HTTP requis par le destinataire du message POST. Les valeurs d'en-tête actuellement prises en charge sont les en-têtes api-key ou Authorization . Tout autre en-tête générera une erreur d’en-tête de rappel non valide |
Épingler un type
Le pin
type définit un code confidentiel qui peut être affiché dans le cadre de l’émission. pin
est facultatif et, s’il est utilisé, doit toujours être envoyé hors bande. Lorsque vous utilisez un code confidentiel de hachage, vous devez définir les propriétés salt
, alg
et iterations
. pin
contient les propriétés suivantes :
Propriété | Type | Description |
---|---|---|
value |
string | Contient la valeur de code confidentiel en texte brut. Lors de l’utilisation d’un code confidentiel haché, la propriété value contient le code de hachage salé, codé en base64. |
type |
chaîne | Type du code confidentiel. Valeur possible : numeric (par défaut). |
length |
entier | Longueur du code confidentiel. La longueur par défaut est 6, la longueur minimale est 4 et la longueur maximale est 16. |
salt |
chaîne | Sel du code confidentiel haché. Le sel est ajouté au début du calcul du code de hachage. Encodage : UTF-8. |
alg |
string | Algorithme de hachage pour le code confidentiel haché. Algorithme pris en charge : sha256 . |
iterations |
entier | Nombre d’itérations de hachage. Valeur possible : 1 . |
Réponse correcte
En cas de réussite, cette méthode renvoie un code de réponse (HTTP 201 Créé) et une collection d’objets d’événement dans le corps de la réponse. Le code JSON suivant illustre une réponse réussie :
{
"requestId": "799f23ea-5241-45af-99ad-cf8e5018814e",
"url": "openid://vc?request_uri=https://verifiedid.did.msidentity.com/v1.0/00001111-aaaa-2222-bbbb-3333cccc4444/verifiableCredentials/request/178319f7-20be-4945-80fb-7d52d47ae82e",
"expiry": 1622227690,
"qrCode": "data:image/png;base64,iVBORw0KggoA<SNIP>"
}
La réponse contient les propriétés suivantes :
Propriété | Type | Description |
---|---|---|
requestId |
string | ID de demande généré automatiquement. Le rappel utilisant la même demande, vous pouvez garder une trace de la demande d’émission et de ses rappels. |
url |
string | URL qui lance l’application d’authentification et démarre le processus d’émission. Vous pouvez présenter cette URL à l’utilisateur s’il ne parvient pas à scanner le code QR. |
expiry |
entier | Indique quand la réponse expire. |
qrCode |
string | Code QR que l’utilisateur peut scanner pour démarrer le processus d’émission. |
Lorsque votre application reçoit la réponse, l’application doit présenter le code QR à l’utilisateur. L’utilisateur scanne le code QR, ce qui a pour effet d’ouvrir l’application d’authentification et de démarrer le processus d’émission.
Réponse d’erreur
S’il existe une erreur de requête, une réponse à l’erreur est retournée et doit être gérée de manière appropriée par l’application.
Événements de rappel
Le point de terminaison de rappel est appelé quand un utilisateur scanne le code QR, utilise le lien profond avec l’application d’authentification ou termine le processus d’émission.
Propriété | Type | Description |
---|---|---|
requestId |
string | Mappé à la demande d’origine lorsque la charge utile a été publiée sur le service Justificatifs vérifiables. |
requestStatus |
string | État retourné pour la requête. Valeurs possibles :
|
state |
chaîne | Renvoie la valeur d’état que vous avez transmise dans la charge utile d’origine. |
error |
error | Lorsque la valeur de la propriété code est issuance_error , cette propriété contient des informations sur l’erreur. |
error.code |
string | Code d’erreur de retour. |
error.message |
string | Message d’erreur. |
L’exemple suivant illustre une charge utile de rappel quand l’application d’authentification démarre la demande d’émission :
{
"requestId": "799f23ea-5241-45af-99ad-cf8e5018814e",
"requestStatus":"request_retrieved",
"state": "de19cb6b-36c1-45fe-9409-909a51292a9c"
}
L’exemple suivant illustre une charge utile de rappel une fois que l’utilisateur a terminé le processus d’émission :
{
"requestId": "799f23ea-5241-45af-99ad-cf8e5018814e",
"requestStatus":"issuance_successful",
"state": "de19cb6b-36c1-45fe-9409-909a51292a9c"
}
Erreurs de rappel
Le point de terminaison de rappel peut être appelé avec un message d’erreur. Le tableau suivant répertorie les codes d’erreur :
Message | Définition |
---|---|
fetch_contract_error |
Impossible de récupérer le contrat de justificatifs vérifiables. Cette erreur se produit généralement lorsque l’API ne parvient pas à extraire le manifeste que vous spécifiez dans l’objet RequestIssuance de la charge utile de la demande. |
issuance_service_error |
Le service des informations d’identification vérifiables n’est pas en mesure de valider les exigences, ou une erreur s’est produite dans les informations d’identification vérifiables. |
unspecified_error |
Cette erreur est rare mais mérite une investigation. |
L’exemple suivant illustre une charge utile de rappel lorsqu’une erreur s’est produite :
{
"requestId": "799f23ea-5241-45af-99ad-cf8e5018814e",
"requestStatus": "issuance_error",
"state": "de19cb6b-36c1-45fe-9409-909a51292a9c",
"error": {
"code":"IssuanceFlowFailed",
"message":"issuance_service_error”,
}
}
Étapes suivantes
Découvrez comment appeler de l’API REST du service de demande.