Condividi tramite


Richiamare le DLL di estensione

Nota

Internet Authentication Service (IAS) è stato rinominato Server criteri di rete (NPS) a partire da Windows Server 2008. Il contenuto di questo argomento si applica sia a IAS che a NPS. In tutto il testo, i criteri di rete vengono usati per fare riferimento a tutte le versioni del servizio, incluse le versioni originariamente denominate IAS.

 

Le DLL dell'estensione NPS devono esportare almeno una delle seguenti funzioni di callback: RadiusExtensionProcess, RadiusExtensionProcessEx oRadiusExtensionProcess2. I criteri di rete chiamano queste funzioni per ogni pacchetto di autenticazione o contabilità valido che riceve dal server di accesso alla rete (NAS). I criteri di rete chiamano queste funzioni in ognuna delle DLL elencate sotto la chiave del Registro di sistema Parametri del server di rete. Le DLL vengono chiamate nell'ordine in cui sono elencate.

Se una DLL dell'estensione NPS esporta più di una delle funzioni precedenti, il server di rete richiama solo una di esse: la funzione più recente supportata dal sistema operativo.

Nota

IAS supportava originariamente solo RadiusExtensionProcess. IAS supporta anche RadiusExtensionProcessEx. IAS (e versioni successive di NPS) supporta anche RadiusExtensionProcess2.

 

Le DLL dell'estensione NPS possono anche esportare funzioni RadiusExtensionInit e RadiusExtensionTerm . Se sono presenti, i criteri di rete chiamano queste funzioni rispettivamente all'avvio e all'arresto del servizio.

Funzione callback RadiusExtensionProcess

In una DLL dell'estensione di autenticazione RadiusExtensionProcess riceve tutti gli attributi ricevuti da NPS nella richiesta di autenticazione o di contabilità. Usando questi attributi, la funzione può eseguire convalida aggiuntive, verificare le autorizzazioni dell'utente o inviare i record di contabilità a un server di stato centrale.

In una DLL dell'estensione di autorizzazione RadiusExtensionProcess riceve tutti gli attributi generati dal servizio di autorizzazione NPS. Questi sono gli attributi restituiti nel pacchetto Access-Accept.

Dopo aver chiamato RadiusExtensionProcess, l'azione eseguita da NPS dipende dal valore restituito radiusExtensionProcess e il valore restituito nel parametro pfAction . Questi valori sono elencati nella seguente tabella.

pfAction DLL dell'estensione di autenticazione DLL dell'estensione di autorizzazione
Accetta Ignora altre DLL dell'estensione di autenticazione e ignora anche il meccanismo di autenticazione dei criteri di rete. Accettare non consentito.
Rifiuto Ignora altre DLL dell'estensione di autenticazione e ignora anche il meccanismo di autenticazione dei criteri di rete. Access-Reject pacchetto viene inviato. Ignora tutte le DLL dell'estensione di autorizzazione aggiuntive.
Continua Il pacchetto viene inviato alla DLL dell'estensione di autenticazione successiva o al meccanismo di autenticazione dei criteri di rete se non sono elencate più DLL dell'estensione di autenticazione nel Registro di sistema. Il pacchetto viene inviato alla DLL dell'estensione di autorizzazione successiva o al log di contabilità dei criteri di rete se non sono elencate più DLL dell'estensione di autorizzazione nel Registro di sistema.

 

Per tutte le DLL di estensione, se RadiusExtensionProcess restituisce un errore, il pacchetto viene eliminato. I pacchetti eliminati a causa di un errore non vengono elaborati dal log di contabilità dei criteri di rete.

Se si verifica un errore, npS pubblica un evento di errore generico nel registro eventi. È consigliabile che la DLL dell'estensione fornisca una registrazione aggiuntiva degli errori.

Per altre informazioni e un diagramma che rappresenta il processo precedente, vedere Informazioni sulle estensioni dei criteri di rete.

RadiusExtensionProcess deve restituire un errore se non è in grado di verificare l'accettazione o il rifiuto del pacchetto. Questa situazione può verificarsi se un problema di rete impedisce a RadiusExtensionProcess di comunicare con il database di autenticazione utente.

Quando si elabora un pacchetto di contabilità, il parametro pfAction è NULL, quindi pfAction non può essere impostato. La restituzione di un errore dalla funzione RadiusExtensionProcess durante l'elaborazione di una richiesta di contabilità causa l'eliminazione della richiesta da parte dei criteri di rete.

Nota

Dopo aver ricevuto un'accettazione, il server di rete non chiama RadiusExtensionProcess nelle DLL rimanenti nella sequenza. Poiché alcune funzioni di autenticazione possono anche implementare le autorizzazioni, ignorare tali funzioni di autenticazione può causare l'omesso di autorizzazioni. Se un'istanza di RadiusExtensionProcess restituisce Accept, è importante non effettuare ipotesi sulle autorizzazioni recuperate.

 

Se viene restituito Continue o Accept, il profilo corrispondente all'area di autenticazione viene inviato nuovamente nel pacchetto Access-Accept.

Le DLL dell'estensione di autenticazione devono essere progettate per coesistere con i provider di autenticazione npS predefiniti e con altre DLL di estensione. Se un'estensione è applicabile solo a un determinato database utente (ad esempio Windows Active Directory), deve verificare l'attributo ratProvider passato nel parametro pAttrs , prima di elaborare la richiesta. L'attributo ratProvider è uno degli attributi a cui punta il parametro pAttrs .

Le DLL di estensione non devono rifiutare le richieste perché gli attributi obbligatori mancano. Ad esempio, se un'estensione di autenticazione richiede l'attributo User-Password, ratUserPassword e l'attributo non è presente, l'estensione deve restituire un'azione di raContinue per concedere ad altre estensioni e provider una possibilità di elaborare la richiesta.

I criteri di rete chiamano la funzione RadiusExtensionProcess dopo aver deciso di usare un database di autenticazione specifico, ma prima che l'utente venga autenticato. Di conseguenza, informazioni sul database di autenticazione da usare sono disponibili per la funzione, in modo che la funzione possa controllare le autorizzazioni dell'utente nel database di autenticazione appropriato. NpS supporta vari database di autenticazione, tra cui Windows Active Directory.

Funzione RadiusExtensionProcessEx Callback

Le DLL dell'estensione NPS possono esportare RadiusExtensionProcessEx anziché, oltre a RadiusExtensionProcess. Questa funzione consente alla DLL di aggiungere attributi di autorizzazione aggiuntivi alla risposta di autenticazione.

Le stesse informazioni descritte nella sezione Funzione Callback RadiusExtensionProcess si applicano alla funzione RadiusExtensionProcessEx .

RadiusExtensionProcessEx non può modificare o rimuovere uno degli attributi presenti. Se si verifica uno scenario in cui la DLL deve modificare o rimuovere attributi, l'unica opzione consiste nell'usare l'interfaccia utente del server di rete per assicurarsi che gli attributi non siano presenti. Per impostazione predefinita, non sono presenti attributi di autorizzazione. Qualsiasi elemento presente deve essere stato aggiunto tramite l'interfaccia utente.

Se sono configurate più DLL di autorizzazione e alcune di queste DLL implementano RadiusExtensionProcessEx, la funzione RadiusExtensionProcess/Ex in una determinata DLL non riceve gli attributi dalle DLL di autorizzazione denominate in precedenza. Riceve solo questi attributi generati dal servizio di autorizzazione npS.

Funzione callback RadiusExtensionProcess2

Le DLL dell'estensione NPS possono anche esportare RadiusExtensionProcess2 anziché, oltre a RadiusExtensionProcess e RadiusExtensionProcessExtensionProcessExtension. Questa funzione consente alla DLL di aggiungere, modificare e rimuovere attributi da e verso la richiesta di autenticazione o la risposta.

Le stesse informazioni descritte nella sezione RadiusExtensionProcessEx Callback Function si applicano alla funzione RadiusExtensionProcess2 , con le eccezioni seguenti:

  • In una DLL di autorizzazione RadiusExtensionProcess2 riceve sia gli attributi generati dal servizio di autorizzazione NPS sia gli attributi generati dalle DLL di autorizzazione denominate in precedenza.
  • RadiusExtensionProcess2 non ha un parametro pfAction . RadiusExtensionProcess2 imposta l'eliminazione finale della richiesta usando la funzione SetResponseType fornita nella struttura RADIUS_EXTENSION_CONTROL_BLOCK .
  • NpS chiama sempre la funzione RadiusExtensionProcess2 in tutte le DLL rimanenti, indipendentemente dal fatto che le funzioni nelle DLL precedenti restituite accettino.

Configurazione delle DLL di estensione

Attributi di identificazione utente