Especificação de emissão da API REST do Serviço de Solicitação
A ID Verificada do Microsoft Entra inclui a API REST do Serviço de Solicitação. Essa API permite que você emita e verifique uma credencial. Este artigo especifica a API REST do Serviço de Solicitação para uma solicitação de emissão. Outro artigo descreve como chamar a API REST do Serviço de Solicitação.
Pedido HTTP
A solicitação de emissão da API REST do Serviço de Solicitação oferece suporte ao seguinte método HTTP:
Método | Notas |
---|---|
POST | Com carga JSON conforme especificado neste artigo. |
A solicitação de emissão da API REST do Serviço de Solicitação requer os seguintes cabeçalhos HTTP:
Nome | Valor |
---|---|
Authorization |
Anexe o token de acesso como um token de portador ao cabeçalho de autorização em uma solicitação HTTP. Por exemplo, Authorization: Bearer <token> . |
Content-Type |
application/json |
Construa uma solicitação HTTP POST para a API REST do Serviço de Solicitação.
https://verifiedid.did.msidentity.com/v1.0/verifiableCredentials/createIssuanceRequest
A seguinte solicitação HTTP demonstra uma solicitação para a API REST do Serviço de Solicitação:
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"
}
},
...
}
A permissão a seguir é necessária para chamar a API REST do Serviço de Solicitação. Para obter mais informações, consulte Conceder permissões para obter tokens de acesso.
Tipo de permissão | Permissão |
---|---|
Aplicação | 3db474b9-6a0c-4840-96ac-1fceb342124f/.default |
Carga útil de solicitação de emissão
A carga útil da solicitação de emissão contém informações sobre sua solicitação de emissão de credenciais verificáveis. O exemplo a seguir demonstra uma solicitação de emissão usando um fluxo de código PIN com declarações de usuário, como nome e sobrenome. O resultado desta solicitação retorna um código QR com um link para iniciar o processo de emissão.
{
"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"
}
O payload contém as seguintes propriedades:
Parâmetro | Tipo | Descrição |
---|---|---|
includeQRCode |
Booleano | Opcional. Determina se um código QR está incluído na resposta a este pedido. Apresente o código QR e peça ao utilizador para o digitalizar. A leitura do código QR inicia o aplicativo autenticador com essa solicitação de emissão. Os valores possíveis são true ou false (padrão). Ao definir o valor como false , use a propriedade return url para renderizar um link direto. |
callback |
Retorno de chamada | Obrigatório. Permite que o desenvolvedor obtenha informações assíncronas sobre o fluxo durante o processo de emissão de credenciais verificáveis. Por exemplo, o desenvolvedor pode querer uma chamada quando o usuário escaneou o código QR ou se a solicitação de emissão for bem-sucedida ou falhar. |
authority |
string | O identificador descentralizado do emissor (DID). Para obter mais informações, consulte Reunir credenciais e detalhes do ambiente para configurar seu aplicativo de exemplo. |
registration |
PedidoRegisto | Fornece informações sobre o emissor que podem ser exibidas no aplicativo autenticador. |
type |
string | O tipo de credencial verificável. Deve corresponder ao tipo definido no manifesto de credenciais verificável. Por exemplo: VerifiedCredentialExpert . Para obter mais informações, consulte Criar o cartão de especialista em credenciais verificadas no Azure. |
manifest |
string | A URL do documento de manifesto de credenciais verificável. Para obter mais informações, consulte Reunir credenciais e detalhes do ambiente para configurar seu aplicativo de exemplo. |
claims |
string | Opcional. Só pode ser usado para o fluxo de atestado de dica de token de ID para incluir uma coleção de afirmações feitas sobre o assunto na credencial verificável. |
pin |
PIN | Opcional. O código PIN só pode ser usado com o fluxo de atestado de dica de token de ID. Um número PIN para fornecer segurança extra durante a emissão. Você gera um código PIN e o apresenta ao usuário em seu aplicativo. O usuário deve fornecer o código PIN que você gerou. |
expirationDate |
string | Opcional. A expirationDate só pode ser usada com o fluxo de atestado de dica de token de ID. Se especificado, o valor precisa ser uma data expressa no formato ISO8601 . A data substituirá o validityInterval na definição de regras de credenciais para esta solicitação de emissão. Use essa configuração para controlar explicitamente quando uma credencial expira, como fim de dia, fim de mês ou fim de ano, independentemente de quando ela é emitida. Por favor, note que a data é expressa em formato UTC. Se você especificar o fim do ano, com o tempo definido como 23:59:59 , isso é de 1 segundo à meia-noite no horário UTC. Qualquer usuário em um fuso horário diferente obterá a data de expiração apresentada no fuso horário local no Microsoft Authenticator. Isso significa que, se você estiver no fuso horário CET, ele será apresentado como 1 de janeiro 1h.O contrato de credencial precisa ter o sinalizador allowOverrideValidityOnIssuance definido como true. |
Atualmente, existem quatro tipos de atestado de sinistros que você pode enviar na carga útil. O Microsoft Entra Verified ID usa quatro maneiras de inserir declarações em uma credencial verificável e atestar essas informações com o DID do emissor. A seguir estão os quatro tipos:
- Token de identificação
- Sugestão de token de ID
- Credenciais verificáveis através de uma apresentação verificável
- Alegações auto-atestadas
Você pode encontrar informações detalhadas sobre os tipos de entrada em Personalizando sua credencial verificável.
Tipo de RequestRegistration
O RequestRegistration
tipo fornece informações de registro para o emitente. O RequestRegistration
tipo contém as seguintes propriedades:
Propriedade | Type | Description |
---|---|---|
clientName |
string | Um nome para exibição do emissor da credencial verificável. |
logoUrl |
string | Opcional. O URL do logotipo do emissor. |
termsOfServiceUrl |
string | Opcional. A URL para os termos de uso da credencial verificável que você está emitindo. |
Nota
No momento, as RequestRegistration
informações não são apresentadas durante a emissão no aplicativo Microsoft Authenticator. Esta informação pode, no entanto, ser utilizada na carga útil.
Tipo de retorno de chamada
A API REST do Serviço de Solicitação gera vários eventos para o ponto de extremidade de retorno de chamada. Esses eventos permitem que você atualize a interface do usuário e continue o processo depois que os resultados forem retornados ao aplicativo. O Callback
tipo contém as seguintes propriedades:
Propriedade | Type | Description |
---|---|---|
url |
string | URI para o ponto de extremidade de retorno de chamada do seu aplicativo. O URI deve apontar para um ponto de extremidade acessível na Internet, caso contrário, o serviço lançará erro de URL de retorno de chamada ilegível. Formatos aceitos IPv4, IPv6 ou DNS resolvível nome de host. Para proteger a sua rede, consulte as Perguntas frequentes. |
state |
string | Correlaciona o evento de retorno de chamada com o estado passado na carga útil original. |
headers |
string | Opcional. Você pode incluir uma coleção de cabeçalhos HTTP exigidos pela extremidade recetora da mensagem POST. Os valores de cabeçalho suportados atuais são os api-key cabeçalhos ou os Authorization cabeçalhos. Qualquer outro cabeçalho lançará um erro de cabeçalho de retorno de chamada inválido |
Tipo de pino
O pin
tipo define um código PIN que pode ser exibido como parte da emissão. pin
é opcional e, se utilizado, deve ser sempre enviado para fora da banda. Ao usar um código PIN HASH, você deve definir as salt
propriedades , alg
e iterations
. pin
Contém as seguintes propriedades:
Propriedade | Type | Description |
---|---|---|
value |
string | Contém o valor PIN em texto sem formatação. Quando você estiver usando um PIN com hash, a propriedade value contém o hash salgado, codificado em base64. |
type |
string | O tipo do código PIN. Valor possível: numeric (padrão). |
length |
integer | O comprimento do código PIN. O comprimento padrão é 6, o mínimo é 4 e o máximo é 16. |
salt |
string | O sal do código PIN com hash. O sal é pré-fixado durante o cálculo de hash. Codificação: UTF-8. |
alg |
string | O algoritmo de hash para o PIN com hash. Algoritmo suportado: sha256 . |
iterations |
integer | O número de iterações de hash. Valor possível: 1 . |
Resposta com êxito
Se bem-sucedido, esse método retorna um código de resposta (HTTP 201 criado) e uma coleção de objetos de evento no corpo da resposta. O JSON a seguir demonstra uma resposta bem-sucedida:
{
"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>"
}
A resposta contém as seguintes propriedades:
Propriedade | Type | Description |
---|---|---|
requestId |
string | Um ID de solicitação gerado automaticamente. O retorno de chamada usa a mesma solicitação, permitindo que você acompanhe a solicitação de emissão e seus retornos de chamada. |
url |
string | Um URL que inicia o aplicativo autenticador e inicia o processo de emissão. Pode apresentar este URL ao utilizador se este não conseguir digitalizar o código QR. |
expiry |
integer | Indica quando a resposta expirará. |
qrCode |
string | Um código QR que o usuário pode escanear para iniciar o fluxo de emissão. |
Quando seu aplicativo recebe a resposta, o aplicativo precisa apresentar o código QR ao usuário. O usuário escaneia o código QR, que abre o aplicativo autenticador e inicia o processo de emissão.
Resposta de erro
Se houver um erro com a solicitação, uma resposta de erro será retornada e deve ser tratada adequadamente pelo aplicativo.
Eventos de retorno de chamada
O ponto de extremidade de retorno de chamada é chamado quando um usuário escaneia o código QR, usa o deep link do aplicativo autenticador ou conclui o processo de emissão.
Propriedade | Type | Description |
---|---|---|
requestId |
string | Mapeado para a solicitação original quando a carga foi postada no serviço de Credenciais Verificáveis. |
requestStatus |
string | O status retornado para a solicitação. Valores possíveis:
|
state |
string | Retorna o valor de estado que você passou na carga original. |
error |
error | Quando o valor da code propriedade é issuance_error , essa propriedade contém informações sobre o erro. |
error.code |
string | O código de erro de retorno. |
error.message |
string | A mensagem de erro. |
O exemplo a seguir demonstra uma carga de retorno de chamada quando o aplicativo autenticador inicia a solicitação de emissão:
{
"requestId": "799f23ea-5241-45af-99ad-cf8e5018814e",
"requestStatus":"request_retrieved",
"state": "de19cb6b-36c1-45fe-9409-909a51292a9c"
}
O exemplo a seguir demonstra uma carga de retorno de chamada depois que o usuário conclui com êxito o processo de emissão:
{
"requestId": "799f23ea-5241-45af-99ad-cf8e5018814e",
"requestStatus":"issuance_successful",
"state": "de19cb6b-36c1-45fe-9409-909a51292a9c"
}
Erros de retorno de chamada
O ponto de extremidade de retorno de chamada pode ser chamado com uma mensagem de erro. A tabela a seguir lista os códigos de erro:
Mensagem | Definição |
---|---|
fetch_contract_error |
Não é possível obter o contrato de credencial verificável. Esse erro geralmente acontece quando a API não pode buscar o manifesto especificado no objeto RequestIssuance de carga útil da solicitação. |
issuance_service_error |
O serviço de Credenciais Verificáveis não é capaz de validar requisitos ou algo deu errado em Credenciais Verificáveis. |
unspecified_error |
Este erro é incomum, mas vale a pena investigar. |
O exemplo a seguir demonstra uma carga de retorno de chamada quando ocorreu um erro:
{
"requestId": "799f23ea-5241-45af-99ad-cf8e5018814e",
"requestStatus": "issuance_error",
"state": "de19cb6b-36c1-45fe-9409-909a51292a9c",
"error": {
"code":"IssuanceFlowFailed",
"message":"issuance_service_error”,
}
}
Próximos passos
Saiba como chamar a API REST do Serviço de Solicitação.