Aufrufen der Erweiterungs-DLLs
Hinweis
Internet Authentication Service (IAS) wurde ab Windows Server 2008 in Network Policy Server (NPS) umbenannt. Der Inhalt dieses Themas gilt sowohl für IAS als auch für NPS. Im gesamten Text wird NPS verwendet, um auf alle Versionen des Diensts zu verweisen, einschließlich der Versionen, die ursprünglich als IAS bezeichnet wurden.
NPS-Erweiterungs-DLLs müssen mindestens eine der folgenden Rückruffunktionen exportieren: RadiusExtensionProcess, RadiusExtensionProcessExoder RadiusExtensionProcess2. NPS ruft diese Funktion für jedes gültige Authentifizierungs- oder Buchhaltungspaket auf, das er vom Network Access Server (NAS) empfängt. NPS ruft diese Funktionen in jeder der DLLs auf, die unterhalb des NPS-Registrierungsschlüssels Parameters aufgeführt sind. Die DLLs werden in der Reihenfolge aufgerufen, in der sie aufgeführt sind.
Wenn eine NPS-Erweiterungs-DLL mehr als eine der oben genannten Funktionen exportiert, ruft NPS nur eine von ihnen auf: die neueste Funktion, die vom Betriebssystem unterstützt wird.
Hinweis
IAS hat ursprünglich nur RadiusExtensionProcess unterstützt. IAS unterstützt auch RadiusExtensionProcessEx. IAS (und höher NPS) unterstützt auch RadiusExtensionProcess2.
NPS-Erweiterungs-DLLs können auch radiusExtensionInit- und RadiusExtensionTerm-Funktionen exportieren. Wenn sie vorhanden sind, ruft NPS diese Funktionen auf, wenn der Dienst gestartet bzw. beendet wird.
RadiusExtensionProcess-Rückruffunktion
In einer Authentifizierungserweiterungs-DLL empfängt RadiusExtensionProcess alle Attribute, die von NPS in der Authentifizierungs- oder Buchhaltungsanforderung empfangen werden. Mit diesen Attributen kann die Funktion zusätzliche Überprüfungen durchführen, die Autorisierungen des Benutzers überprüfen oder Buchhaltungsdatensätze an einen zentralen Zustandsserver senden.
In einer Autorisierungserweiterungs-DLL empfängt RadiusExtensionProcess alle Vom NPS-Autorisierungsdienst generierten Attribute. Dies sind die Attribute, die im Paket Access-Accept werden.
Nach dem Aufruf von RadiusExtensionProcess hängt die von NPS ausgeführte Aktion vom Rückgabewert von RadiusExtensionProcess und dem im pfAction-Parameter zurückgegebenen Wert ab. Diese Werte sind in der folgenden Tabelle aufgeführt.
| pfAction | Authentifizierungserweiterungs-DLL | Autorisierungserweiterungs-DLL |
|---|---|---|
| Akzeptieren | Umgeht alle weiteren Authentifizierungserweiterungs-DLLs und umgeht auch den NPS-Authentifizierungsmechanismus. | Akzeptieren ist nicht zulässig. |
| Reject | Umgeht alle weiteren Authentifizierungserweiterungs-DLLs und umgeht auch den NPS-Authentifizierungsmechanismus. Access-Reject paket wird gesendet. | Umgeht alle weiteren Autorisierungserweiterungs-DLLs. |
| Weiter | Das Paket wird an die nächste Authentifizierungserweiterungs-DLL oder an den NPS-Authentifizierungsmechanismus gesendet, wenn in der Registrierung keine mehr Authentifizierungserweiterungs-DLLs aufgeführt sind. | Das Paket wird an die nächste Autorisierungserweiterungs-DLL oder an das NPS-Kontoführungsprotokoll gesendet, wenn in der Registrierung keine weitere Autorisierungserweiterungs-DLLs aufgeführt sind. |
Wenn RadiusExtensionProcess für alle Erweiterungs-DLLs einen Fehler zurückgibt, wird das Paket verworfen. Pakete, die aufgrund eines Fehlers verworfen werden, werden nicht vom NPS-Kontoführungsprotokoll verarbeitet.
Wenn ein Fehler auftritt, veröffentlicht NPS ein generisches Fehlerereignis im Ereignisprotokoll. Es wird empfohlen, dass die Erweiterungs-DLL zusätzliche Fehlerprotokollierung bietet.
Weitere Informationen und ein Diagramm, das den vorherigen Prozess darstellt, finden Sie unter Informationen zu NPS-Erweiterungen.
RadiusExtensionProcess sollte einen Fehler zurückgeben, wenn die Annahme oder Ablehnung des Pakets nicht überprüft werden kann. Diese Situation kann auftreten, wenn ein Netzwerkproblem verhindert, dass RadiusExtensionProcess mit seiner Benutzerauthentifizierungsdatenbank kommuniziert.
Bei der Verarbeitung eines Kontoführungspakets ist der pfAction-Parameter NULL, sodass pfAction nicht festgelegt werden kann. Das Zurückgeben eines Fehlers von der RadiusExtensionProcess-Funktion beim Verarbeiten einer Buchhaltungsanforderung bewirkt, dass die Anforderung vom NPS verworfen wird.
Hinweis
Nach dem Empfang einer Accept-Datei wird RadiusExtensionProcess von NPS in den verbleibenden DLLs in der Sequenz nicht mehr aufruft. Da einige Authentifizierungsfunktionen möglicherweise auch Autorisierungen implementieren, kann das Überspringen solcher Authentifizierungsfunktionen dazu führen, dass Autorisierungen ausgelassen werden. Wenn eine Instanz von RadiusExtensionProcess Accept zurückgibt, ist es wichtig, keine Annahmen über die abgerufenen Autorisierungen zu treffen.
Wenn Continue oder Accept zurückgegeben wird, wird das Profil, das dem Bereich entspricht, im Access-Accept zurückgesandt.
Authentifizierungserweiterungs-DLLs sollten so konzipiert sein, dass sie mit den integrierten NPS-Authentifizierungsanbietern und anderen Erweiterungs-DLLs koexistiert. Wenn eine Erweiterung nur für eine bestimmte Benutzerdatenbank (z. B. Windows Active Directory) gilt, sollte sie das ratProvider-Attribut überprüfen, das im pAttrs-Parameter übergeben wurde, bevor die Anforderung verarbeitet wird. Das ratProvider-Attribut wäre eines einer Liste von Attributen, auf die der pAttrs-Parameter verweist.
Erweiterungs-DLLs sollten Anforderungen nicht ablehnen, da erforderliche Attribute fehlen. Wenn eine Authentifizierungserweiterung beispielsweise das User-Password-Attribut ratUserPassword erfordert und das -Attribut nicht vorhanden ist, sollte die Erweiterung eine Aktion von raContinue zurückgeben, um anderen Erweiterungen und Anbietern die Möglichkeit zu geben, die Anforderung zu verarbeiten.
NPS ruft die RadiusExtensionProcess-Funktion auf, nachdem die Entscheidung zur Verwendung einer bestimmten Authentifizierungsdatenbank getroffen wurde, aber bevor der Benutzer authentifiziert wird. Daher sind Informationen darüber, welche Authentifizierungsdatenbank verwendet werden soll, für die Funktion verfügbar, sodass die Funktion in der entsprechenden Authentifizierungsdatenbank nach den Autorisierungen des Benutzers überprüfen kann. NPS unterstützt verschiedene Authentifizierungsdatenbanken, einschließlich Windows Active Directory.
RadiusExtensionProcessEx-Rückruffunktion
NPS-Erweiterungs-DLLs können RadiusExtensionProcessEx anstelle von oder zusätzlich zu RadiusExtensionProcess exportieren. Mit dieser Funktion kann die DLL zusätzliche Autorisierungsattribute an die Authentifizierungsantwort anfügen.
Die gleichen Informationen, die im Abschnitt RadiusExtensionProcess Callback Function beschrieben werden, gelten für die RadiusExtensionProcessEx-Funktion.
RadiusExtensionProcessEx kann keines der vorhandenen Attribute ändern oder entfernen. Wenn ein Szenario auftritt, in dem die DLL Attribute ändern oder entfernen muss, besteht die einzige Möglichkeit in der Verwendung der NPS-Benutzeroberfläche, um sicherzustellen, dass die Attribute nicht vorhanden sind. Standardmäßig sind keine Autorisierungsattribute vorhanden. Alle vorhanden sind, müssen über die Benutzeroberfläche hinzugefügt worden sein.
Wenn mehrere Autorisierungs-DLLs konfiguriert sind und einige dieser DLLs RadiusExtensionProcessEximplementieren, erhält die RadiusExtensionProcess/Ex-Funktion in einer bestimmten DLL nicht die Attribute aus den zuvor als Autorisierungs-DLLs bezeichneten DLLs. Sie empfängt nur die Attribute, die vom NPS-Autorisierungsdienst generiert wurden.
RadiusExtensionProcess2-Rückruffunktion
NPS-Erweiterungs-DLLs können auch RadiusExtensionProcess2 anstelle von oder zusätzlich zu RadiusExtensionProcess und RadiusExtensionProcessEx exportieren. Diese Funktion ermöglicht der DLL das Hinzufügen, Ändern und Entfernen von Attributen zur und aus der Authentifizierungsanforderung oder -antwort.
Die gleichen Informationen, die im Abschnitt RadiusExtensionProcessEx Callback Function (RadiusExtensionProcessEx-Rückruffunktion) beschrieben werden, gelten für die RadiusExtensionProcess2-Funktion, mit den folgenden Ausnahmen:
- In einer Autorisierungs-DLL empfängt RadiusExtensionProcess2 sowohl die vom NPS-Autorisierungsdienst generierten Attribute als auch die Attribute, die aus zuvor als Autorisierungs-DLLs bezeichneten Generiert wurden.
- RadiusExtensionProcess2 verfügt nicht über einen pfAction-Parameter. RadiusExtensionProcess2 legt die endgültige Disposition der Anforderung mithilfe der SetResponseType-Funktion fest, die in der RADIUS EXTENSION CONTROL _ _ _ BLOCK-Struktur bereitgestellt wird.
- NPS ruft immer die RadiusExtensionProcess2-Funktion in allen verbleibenden DLLs auf, unabhängig davon, ob Funktionen in vorherigen DLLs Accept zurückgegeben haben.