Protocollo di accesso al digest
Il protocollo di accesso al digest specificato da RFC 2617 viene implementato dal provider di supporto per la sicurezza del digest Microsoft( SSP). L'implementazione è costituita da un set di funzioni del contesto di sicurezza SSPI ( Security Support Provider Interface ) chiamate dalle applicazioni client/server a:
- Stabilire un contesto di sicurezza per lo scambio di messaggi.
- Ottenere gli oggetti dati richiesti dal provider di servizi condivisi del digest, ad esempio credenziali e handle di contesto.
- Accedere ai meccanismi di integrità e riservatezza dei messaggi.
L'autenticazione di accesso al digest viene eseguita all'interno di transazioni di richiesta/risposta abbinate, con richieste provenienti dal client e dalle risposte provenienti dal server. Un'autenticazione di accesso digest riuscita richiede due coppie di richiesta/risposta.
Quando il provider di servizi condivisi digest viene usato per l'autenticazione HTTP, non viene mantenuta alcuna connessione tra la prima e la seconda coppia di richiesta/risposta. In altre parole, il server non attende la seconda richiesta dopo l'invio della prima risposta.
La figura seguente illustra i passaggi eseguiti sul percorso HTTP da un client e da un server per completare un'autenticazione usando il provider di servizi condivisi digest. Il meccanismo SASL usa l'autenticazione reciproca, quindi i dati di autenticazione vengono inviati alla chiamata finale del server del Centro sicurezza di Azure al client che verifica che il client comunichi con il server corretto.
Il processo inizia con il client che richiede una risorsa protetta dall'accesso dal server inviando la richiesta HTTP 1.
Il server riceve la richiesta HTTP 1 e determina che la risorsa richiede informazioni di autenticazione non incluse nella richiesta. Il server genera una richiesta per il client come indicato di seguito:
- Il server ottiene le credenziali chiamando la funzione AcquireCredentialsHandle .
- Il server genera la richiesta digest chiamando la funzione AcceptSecurityContext (Generale).
- Il server invia un'intestazione WWW-Authenticate come risposta alla richiesta del client (visualizzata come risposta HTTP 1). L'intestazione contiene la richiesta digest e una direttiva opaca che contiene un riferimento a un contesto di sicurezza parziale stabilito per il client. L'intestazione viene inviata con un codice di stato 401 che indica che la richiesta client ha generato un errore di accesso non autorizzato. Per altre informazioni sulla sfida digest, vedere Contenuto di una sfida digest e Generazione della sfida digest.
- Il client riceve la risposta HTTP 1, estrae la richiesta digest inviata dal server e genera una risposta di verifica digest come indicato di seguito:
- Le credenziali dell'utente vengono ottenute chiamando la funzione AcquireCredentialsHandle o richiedendo in modo interattivo all'utente le credenziali.
- Le informazioni sulla richiesta di verifica e le credenziali vengono passate alla funzione InitializeSecurityContext (Generale), che genera la risposta alla richiesta di verifica digest.
- Il client invia un'intestazione authorization che contiene la risposta di richiesta di verifica al server (visualizzata come richiesta HTTP 2). Per altre informazioni sulla risposta alla richiesta di verifica del digest, vedere Contenuto di una risposta alla richiesta di verifica del digest e Generazione della risposta alla richiesta di verifica del digest.
- Il server riceve la richiesta HTTP 2, estrae la risposta di verifica inviata dal client e autentica le informazioni chiamando la funzione AcceptSecurityContext (Generale). Per informazioni dettagliate sul processo di autenticazione, vedere Autenticazione iniziale con Microsoft Digest.
- Il server invia di nuovo la risposta HTTP 2 al client come seconda risposta finale richiesta dal protocollo di accesso al digest. Se l'autenticazione ha esito positivo, questa risposta contiene la risorsa richiesta.
Argomenti correlati