Condividi tramite


Transazione di autenticazione della DLL di sicurezza RAS

Il server RAS di Windows NT/Windows 2000 chiama la funzione rasSecurityDialogBegin della DLL di sicurezza per avviare un'autenticazione di un utente remoto. Il server RAS è bloccato e non può accettare altre chiamate fino a quando RasSecurityDialogBegin restituisce. Per questo motivo, RasSecurityDialogBegin deve copiare i parametri di input, creare un thread per eseguire l'autenticazione e restituire il più rapidamente possibile.

Il thread creato dalla DLL di sicurezza usa le funzionirasSecurityDialogSende RasSecurityDialogReceive per comunicare con il computer remoto. Queste funzioni non sono disponibili per l'importazione statica da alcuna libreria. Al contrario, la DLL di sicurezza deve usare ilLoadLibrarye Funzioni GetProcAddress per collegare dinamicamente queste funzioni in RASMAN.DLL.

Durante una transazione di autenticazione, la gestione connessione RAS nel computer remoto visualizza una finestra del terminale. Il thread della DLL di sicurezza chiama RasSecurityDialogSend per inviare un messaggio da visualizzare nella finestra del terminale. Il thread chiama quindi RasSecurityDialogReceive per ricevere l'input digitato dall'utente remoto nella finestra del terminale. Il thread può effettuare un numero qualsiasi di chiamate RasSecurityDialogSend, con ogni chiamata seguita da una chiamata RasSecurityDialogReceive. Dopo ogni chiamata a RasSecurityDialogReceive, il thread deve chiamare una delle funzioni di attesa, ad esempio WaitForSingleObject, per attendere il completamento delle operazioni di invio e ricezione asincrone. Il server RAS segnala un oggetto evento quando l'operazione di ricezione è stata completata o quando è trascorso un intervallo di timeout facoltativo.

Al termine dell'autenticazione dell'utente remoto, il thread chiama la funzione RasSecurityDialogComplete. Questa chiamata passa una struttura SECURITY_MESSAGE contenente i risultati della transazione di autenticazione al server RAS. Il server RAS esegue quindi una sequenza di pulizia che include una chiamata alla funzione RasSecurityDialogEnd della DLL. In questo modo la DLL di sicurezza offre l'opportunità di eseguire qualsiasi pulizia necessaria.

La DLL di sicurezza può chiamare la funzioneRasSecurityDialogGetInfo per recuperare informazioni sulla porta associata a una transazione di autenticazione. RasSecurityDialogGetInfo compila una struttura RAS_SECURITY_INFO che indica lo stato dell'ultimo RasSecurityDialogReceive chiamare per la porta.