Esempi di comunicazione del servizio autorità di certificazione
Il servizio ID verificato di Microsoft Entra può emettere credenziali verificabili recuperando attestazioni da un token ID generato dal provider di identità conforme a OpenID dell'organizzazione. Questo articolo illustra come configurare il provider di identità in modo che Authenticator possa comunicare con esso e recuperare il token ID corretto da passare al servizio emittente.
Per emettere una credenziale verificabile, Authenticator viene richiesto di scaricare il contratto per raccogliere l'input dall'utente e inviare tali informazioni al servizio emittente. Se è necessario usare un token ID, è necessario configurare il provider di identità per consentire a Authenticator di accedere a un utente usando il protocollo openID Connessione. Le attestazioni nel token ID risultante vengono usate per popolare il contenuto delle credenziali verificabili. Authenticator autentica l'utente usando il flusso del codice di autorizzazione openID Connessione. Il provider OpenID deve supportare le funzionalità openid Connessione seguenti:
Funzionalità | Descrizione |
---|---|
Tipo di concessione | Deve supportare il tipo di concessione del codice di autorizzazione. |
Formato token | Deve produrre JWT non crittografati. |
Algoritmo di firma | Deve produrre JWT firmati con RS 256. |
Documento di configurazione | Deve supportare OpenID Connessione documento di configurazione e jwks_uri . |
Registrazione client | Deve supportare la registrazione client pubblica usando il redirect_uri valore vcclient://openid/ . |
PKCE | Consigliato per motivi di sicurezza, ma non obbligatorio. |
Di seguito sono riportati alcuni esempi delle richieste HTTP inviate al provider di identità. Il provider di identità deve accettare e rispondere a queste richieste in conformità allo standard di autenticazione OpenID Connessione.
Per ricevere credenziali verificabili, gli utenti devono accedere al provider di identità dall'app Microsoft Authenticator.
Per abilitare questo scambio, registrare un'applicazione con il provider di identità. Se si usa Microsoft Entra ID, è possibile trovare le istruzioni qui. Usare i valori seguenti durante la registrazione.
Impostazione | valore |
---|---|
Nome applicazione | <Issuer Name> Verifiable Credential Service |
URI di reindirizzamento | vcclient://openid/ |
Dopo aver registrato un'applicazione con il provider di identità, registrarne l'ID client. Verrà usato nella sezione seguente. È anche necessario annotare l'URL dell'endpoint noto per il provider di identità compatibile con OIDC. Il servizio emittente usa questo endpoint per scaricare le chiavi pubbliche necessarie per convalidare il token ID dopo l'invio da Authenticator.
L'URI di reindirizzamento configurato viene usato da Authenticator in modo da sapere quando l'accesso viene completato e può recuperare il token ID.
La richiesta di autorizzazione inviata al provider di identità usa il formato seguente.
GET /authorize?client_id=<client-id>&redirect_uri=vcclient%3A%2F%2Fopenid%2F&response_mode=query&response_type=code&scope=openid&state=12345&nonce=12345 HTTP/1.1
Host: www.contoso.com
Connection: Keep-Alive
Parametro | Valore |
---|---|
client_id |
ID client ottenuto durante il processo di registrazione dell'applicazione. |
redirect_uri |
Deve usare vcclient://openid/ . |
response_mode |
Deve supportare query . |
response_type |
Deve supportare code . |
scope |
Deve supportare openid . |
state |
Deve essere restituito al client in base allo standard OpenID Connessione. |
nonce |
Deve essere restituito come attestazione nel token ID in base allo standard OpenID Connessione. |
Quando riceve una richiesta di autorizzazione, il provider di identità deve autenticare l'utente ed eseguire i passaggi necessari per completare l'accesso, ad esempio l'autenticazione a più fattori.
È possibile personalizzare il processo di accesso per soddisfare le proprie esigenze. È possibile chiedere agli utenti di fornire informazioni aggiuntive, accettare le condizioni di servizio, pagare le credenziali e altro ancora. Al termine di tutti i passaggi, rispondere alla richiesta di autorizzazione reindirizzando all'URI di reindirizzamento, come illustrato di seguito.
vcclient://openid/?code=nbafhjbh1ub1yhbj1h4jr1&state=12345
Parametro | Valore |
---|---|
code |
Codice di autorizzazione restituito dal provider di identità. |
state |
Deve essere restituito al client in base allo standard OpenID Connessione. |
La richiesta di token inviata al provider di identità avrà il formato seguente.
POST /token HTTP/1.1
Host: www.contoso.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 291
client_id=<client-id>&redirect_uri=vcclient%3A%2F%2Fopenid%2F&grant_type=authorization_code&code=nbafhjbh1ub1yhbj1h4jr1&scope=openid
Parametro | Valore |
---|---|
client_id |
ID client ottenuto durante il processo di registrazione dell'applicazione. |
redirect_uri |
Deve usare vcclient://openid/ . |
scope |
Deve supportare openid . |
grant_type |
Deve supportare authorization_code . |
code |
Codice di autorizzazione restituito dal provider di identità. |
Dopo aver ricevuto la richiesta di token, il provider di identità deve rispondere con un token ID.
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{
"id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjFlOWdkazcifQ.ewogImlzc
yI6ICJodHRwOi8vc2VydmVyLmV4YW1wbGUuY29tIiwKICJzdWIiOiAiMjQ4Mjg5
NzYxMDAxIiwKICJhdWQiOiAiczZCaGRSa3F0MyIsCiAibm9uY2UiOiAibi0wUzZ
fV3pBMk1qIiwKICJleHAiOiAxMzExMjgxOTcwLAogImlhdCI6IDEzMTEyODA5Nz
AKfQ.ggW8hZ1EuVLuxNuuIJKX_V8a_OMXzR0EHR9R6jgdqrOOF4daGU96Sr_P6q
Jp6IcmD3HP99Obi1PRs-cwh3LO-p146waJ8IhehcwL7F09JdijmBqkvPeB2T9CJ
NqeGpe-gccMg4vfKjkM8FcGvnzZUN4_KSP0aAp1tOJ1zZwgjxqGByKHiOtX7Tpd
QyHE5lcMiKPXfEIQILVq0pc_E2DzL7emopWoaoZTF_m0_N0YzFC6g6EJbOEoRoS
K5hoDalrcvRYLSrQAZZKflyuVCyixEoV9GfNQC3_osjzw2PAithfubEEBLuVVk4
XUVrWOLrLl0nx7RkKU8NXNHq-rvKMzqg"
}
Il token ID deve usare il formato di serializzazione compatta JWT e non deve essere crittografato. Il token ID deve contenere le attestazioni seguenti.
Richiesta di rimborso | valore |
---|---|
kid |
Identificatore di chiave della chiave usata per firmare il token ID, corrispondente a una voce nel provider OpenID.jwks_uri |
aud |
ID client ottenuto durante il processo di registrazione dell'applicazione. |
iss |
Deve essere il issuer valore nel documento di configurazione di OpenID Connessione. |
exp |
Deve contenere l'ora di scadenza del token ID. |
iat |
Deve contenere l'ora in cui è stato emesso il token ID. |
nonce |
Valore incluso nella richiesta di autorizzazione. |
Attestazioni aggiuntive | Il token ID deve contenere eventuali attestazioni aggiuntive i cui valori verranno inclusi nella credenziale verificabile che verrà rilasciata. In questa sezione è necessario includere gli attributi relativi all'utente, ad esempio il nome. |