Creazione di un contesto di sicurezza Schannel
Per stabilire un contesto di sicurezza che proteggerà le comunicazioni tra un client e un server, entrambi devono partecipare al processo di scambio di informazioni seguente:
Client
- Il client chiama la funzione InitializeSecurityContext (Generale).
- Schannel inizia a creare un contesto di sicurezza in base alle regole del protocollo di sicurezza selezionato. Il codice restituito della funzione indica se il client deve chiamare nuovamente la funzione. InitializeSecurityContext (Generale) può restituire un token che rappresenta il contesto.
- Se è stato restituito un token, il client lo invia al server.
- Quando InitializeSecurityContext (Generale) restituisce SEC_E_OK, il client viene eseguito. Se la funzione restituisce SEC_I_CONTINUE_NEEDED, il client deve attendere che il server invii un token. Quando il client ha il token dal server, deve chiamare di nuovo la funzione InitializeSecurityContext (General).When the client has the token from the server, it must call the InitializeSecurityContext (General)function again. (Tornare al passaggio 2.)
Server
- Il server attende che un client invii un messaggio contenente un token di sicurezza. Il server passa il token ricevuto dal client alla funzione AcceptSecurityContext (Generale).
- Schannel si basa sul contesto di sicurezza parziale rappresentato dal token. Schannel restituisce un token al server e un codice restituito che indica se il server deve chiamare nuovamente la funzione.
- Se è stato restituito un token, il server lo invia al client.
- Quando AcceptSecurityContext (Generale) restituisce SEC_E_OK, il server viene eseguito. Se la funzione restituisce SEC_I_CONTINUE_NEEDED, il server deve attendere che il client invii un token. Quando il server ha il token dal client, deve chiamare nuovamente la funzione AcceptSecurityContext (Generale). (Tornare al passaggio 2.)
Se una delle due funzioni restituisce un valore diverso da SEC_E_OK, SEC_I_CONTINUE_NEEDED o SEC_E_INCOMPLETE_MESSAGE (vedere il paragrafo seguente) si è verificato un errore. Il client e il server devono chiamare la funzione DeleteSecurityContext per eliminare il contesto di sicurezza parzialmente stabilito.
Un caso speciale che può modificare l'elaborazione client e server è quando troppe informazioni vengono inviate al client o al server dall'altra parte. Nel caso di informazioni troppo piccole, entrambe le funzioni restituiscono SEC_E_INCOMPLETE_MESSAGE. Per informazioni sul riconoscimento e la gestione di informazioni insufficienti o in eccesso, vedere Buffer aggiuntivi restituiti da Schannel.
Argomenti correlati