Condividi tramite


Chiamata delle DLL di estensione

Nota

Internet Authentication Service (IAS) è stato rinominato Server dei 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, NPS viene usato 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 funzioni di callback seguenti: RadiusExtensionProcess, RadiusExtensionProcessExo RadiusExtensionProcess2. I criteri del server NPS invocano queste funzioni per ogni pacchetto di autenticazione o contabilità valido ricevuto dal NAS (Network Access Server). NPS chiama queste funzioni in ognuna delle DLL elencate sotto la chiave del Registro di sistema NPS "Parametri ". Le DLL vengono chiamate nell'ordine in cui sono elencate.

Se una DLL dell'estensione NPS esporta più di una delle funzioni precedenti, NPS 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 NPS) supporta anche RadiusExtensionProcess2.

 

Le DLL dell'estensione NPS possono anche esportare le funzioni RadiusExtensionInit e le funzioni RadiusExtensionTerm. Se presenti, NPS invoca 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 (server dei criteri di rete) nella richiesta di autenticazione o rendicontazione. Usando questi attributi, la funzione può eseguire convalide aggiuntive, verificare le autorizzazioni dell'utente o inviare record contabili 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 di RadiusExtensionProcesse dal valore restituito nel parametro pfAction . Questi valori sono elencati nella tabella seguente.

pfAction Estensione di autenticazione DLL DLL dell'estensione di autorizzazione
Accettare Bypassa qualsiasi altra DLL dell'estensione di autenticazione e bypassa anche il meccanismo di autenticazione NPS. Accettazione non consentita.
Rifiutare Ignora altre DLL dell'estensione di autenticazione e bypassa anche il meccanismo di autenticazione NPS. Il pacchetto Access-Reject viene inviato. Ignora eventuali altre DLL dell'estensione di autorizzazione.
Continuare Il pacchetto viene inviato alla DLL dell'estensione di autenticazione successiva o, se nel Registro di sistema non sono elencate altre DLL dell'estensione di autenticazione, al meccanismo di autenticazione NPS. Il pacchetto viene inviato alla DLL dell'estensione di autorizzazione successiva o al log contabile nps se nel Registro di sistema non sono elencate altre DLL dell'estensione di autorizzazione.

 

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

Se si verifica un errore, NPS (Server dei criteri di rete) invia un evento di errore generico al 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 About NPS Extensions.

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 RadiusExtensionProcess di comunicare con il database di autenticazione utente.

Quando si elabora un pacchetto di contabilità, il parametro pfAction è NULL, pertanto non è possibile impostare pfAction. Restituire un errore dalla funzione RadiusExtensionProcess durante l'elaborazione di una richiesta di accounting provoca che la richiesta venga scartata da NPS.

Nota

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

 

Se viene restituito Continue o Accept, il profilo corrispondente al realm viene restituito nel pacchetto Access-Accept.

Le DLL di estensione per l'autenticazione devono essere progettate per coesistere con i provider di autenticazione NPS integrati 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 della lista a cui punta il parametro pAttrs, indicato da.

Le DLL di estensione non devono rifiutare le richieste perché mancano gli attributi obbligatori. 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 fornire ad altre estensioni e provider la possibilità di elaborare la richiesta.

NPS chiama la funzione RadiusExtensionProcess dopo aver deciso di utilizzare un particolare database di autenticazione, ma prima che l'utente venga autenticato. Di conseguenza, le 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.

La funzione di callback RadiusExtensionProcessEx

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

Le stesse informazioni descritte nella sezione funzione di callback RadiusExtensionProcess si applicano alla funzione RadiusExtensionProcessEx.

RadiusExtensionProcessEx non può modificare o rimuovere gli 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 nps per assicurarsi che gli attributi non siano presenti. Per impostazione predefinita, non sono presenti attributi di autorizzazione. Tutti gli elementi presenti devono essere stati aggiunti 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 gli attributi generati dal servizio di autorizzazione nps.

Funzione di callback RadiusExtensionProcess2

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

Le stesse informazioni descritte nella sezione Funzione di callback RadiusExtensionProcessEx si applicano alla funzioneRadiusExtensionProcess2, 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 precedentemente chiamate.
  • radiusExtensionProcess2 non dispone di 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 restituiscano Accept.

Configurazione delle DLL di estensione

attributi di identificazione utente