Appel des DLL d’extension
Notes
Le service d’authentification Internet (IAS) a été renommé serveur de stratégie réseau (NPS) à partir de Windows Server 2008. Le contenu de cette rubrique s’applique à IAS et NPS. Tout au long du texte, NPS est utilisé pour faire référence à toutes les versions du service, y compris les versions initialement appelées IAS.
Les DLL d’extension NPS doivent exporter au moins une des fonctions de rappel suivantes : RadiusExtensionProcess, RadiusExtensionProcessEx ou RadiusExtensionProcess2. NPS appelle ces fonctions pour chaque paquet d’authentification ou de comptabilité valide qu’il reçoit du serveur d’accès réseau (NAS). NPS appelle ces fonctions dans chacune des DLL répertoriées sous la clé de Registre Parameters de NPS. Les DLL sont appelées dans l’ordre dans lequel elles sont répertoriées.
Si une DLL d’extension NPS exporte plusieurs fonctions ci-dessus, NPS n’appelle qu’une seule d’entre elles : la fonction la plus récente prise en charge par le système d’exploitation.
Notes
À l’origine, IAS ne prend en charge que RadiusExtensionProcess. IAS prend également en charge RadiusExtensionProcessEx. IAS (et NPS ultérieur) prend également en charge RadiusExtensionProcess2.
Les DLL d’extension NPS peuvent également exporter les fonctions RadiusExtensionInit et RadiusExtensionTerm . Si elles sont présentes, NPS appelle ces fonctions lorsque le service démarre et s’arrête, respectivement.
Fonction de rappel RadiusExtensionProcess
Dans une DLL d’extension d’authentification, RadiusExtensionProcess reçoit tous les attributs reçus par NPS dans la demande d’authentification ou de comptabilité. À l’aide de ces attributs, la fonction peut effectuer des validations supplémentaires, vérifier les autorisations de l’utilisateur ou envoyer des enregistrements comptables à un serveur d’état central.
Dans une DLL d’extension d’autorisation, RadiusExtensionProcess reçoit tous les attributs générés par le service d’autorisation NPS. Il s’agit des attributs retournés dans le paquet Access-Accept.
Après avoir appelé RadiusExtensionProcess, l’action effectuée par NPS dépend de la valeur de retour de RadiusExtensionProcess et de la valeur retournée dans le paramètre pfAction . Ces valeurs sont répertoriées dans le tableau suivant.
pfAction | DLL d’extension d’authentification | DLL d’extension d’autorisation |
---|---|---|
Accepter | Contourne toutes les DLL d’extension d’authentification supplémentaires et contourne également le mécanisme d’authentification NPS. | Accepter non autorisé. |
Rejeter | Contourne toutes les DLL d’extension d’authentification supplémentaires et contourne également le mécanisme d’authentification NPS. Access-Reject paquet est envoyé. | Contourne les DLL d’extension d’autorisation supplémentaires. |
Continuer | Le paquet est envoyé à la DLL d’extension d’authentification suivante ou au mécanisme d’authentification NPS si plus aucune DLL d’extension d’authentification n’est répertoriée dans le Registre. | Le paquet est envoyé à la DLL d’extension d’autorisation suivante ou au journal de comptabilité NPS si aucune dll d’extension d’autorisation supplémentaire n’est répertoriée dans le Registre. |
Pour toutes les DLL d’extension, si RadiusExtensionProcess retourne une erreur, le paquet est ignoré. Les paquets qui sont ignorés en raison d’une erreur ne sont pas traités par le journal de comptabilité NPS.
Si une erreur se produit, NPS publie un événement d’erreur générique dans le journal des événements. Il est recommandé que la DLL d’extension fournisse une journalisation des erreurs supplémentaire.
Pour plus d’informations et un diagramme qui représente le processus précédent, consultez À propos des extensions NPS.
RadiusExtensionProcess doit retourner une erreur s’il ne peut pas vérifier l’acceptation ou le rejet du paquet. Cette situation peut se produire si un problème réseau empêche RadiusExtensionProcess de communiquer avec sa base de données d’authentification utilisateur.
Lors du traitement d’un paquet de comptabilité, le paramètre pfAction a la valeur NULL. PfAction ne peut donc pas être défini. Le renvoi d’une erreur à partir de la fonction RadiusExtensionProcess lors du traitement d’une demande de comptabilité entraîne l’abandon de la demande par NPS.
Notes
Après avoir reçu une acceptation, NPS n’appelle pas RadiusExtensionProcess dans les DLL restantes dans la séquence. Étant donné que certaines fonctions d’authentification peuvent également implémenter des autorisations, le fait d’ignorer ces fonctions d’authentification peut entraîner l’omission des autorisations. Si un instance de RadiusExtensionProcess retourne Accept, il est important de ne pas faire d’hypothèses concernant les autorisations récupérées.
Si Continuer ou Accepter est retourné, le profil correspondant au domaine est renvoyé dans le paquet Access-Accept.
Les DLL d’extension d’authentification doivent être conçues pour coexister avec les fournisseurs d’authentification NPS intégrés et avec d’autres DLL d’extension. Si une extension s’applique uniquement à une base de données utilisateur spécifique (par exemple, Windows Active Directory), elle doit vérifier l’attribut ratProvider passé dans le paramètre pAttrs , avant de traiter la demande. L’attribut ratProvider fait partie d’une liste d’attributs pointés par le paramètre pAttrs .
Les DLL d’extension ne doivent pas rejeter les demandes, car les attributs requis sont manquants. Par exemple, si une extension d’authentification nécessite l’attribut User-Password, ratUserPassword et que l’attribut n’est pas présent, l’extension doit retourner une action de raContinue pour donner à d’autres extensions et fournisseurs une chance de traiter la demande.
NPS appelle la fonction RadiusExtensionProcess après la décision d’utiliser une base de données d’authentification particulière, mais avant l’authentification de l’utilisateur. Par conséquent, les informations sur la base de données d’authentification à utiliser sont disponibles pour la fonction, afin que la fonction puisse case activée pour les autorisations de l’utilisateur dans la base de données d’authentification appropriée. NPS prend en charge différentes bases de données d’authentification, notamment Windows Active Directory.
Fonction de rappel RadiusExtensionProcessEx
Les DLL d’extension NPS peuvent exporter RadiusExtensionProcessEx au lieu ou en plus de RadiusExtensionProcess. Cette fonction permet à la DLL d’ajouter des attributs d’autorisation supplémentaires à la réponse d’authentification.
Les mêmes informations décrites dans la section Fonction de rappel RadiusExtensionProcess s’appliquent à la fonction RadiusExtensionProcessEx .
RadiusExtensionProcessEx ne peut pas modifier ou supprimer aucun des attributs présents. Si un scénario se produit dans lequel la DLL doit modifier ou supprimer des attributs, la seule option consiste à utiliser l’interface utilisateur NPS pour s’assurer que les attributs ne sont pas présents. Par défaut, aucun attribut d’autorisation n’est présent. Tous les éléments présents doivent avoir été ajoutés via l’interface utilisateur.
Si plusieurs DLL d’autorisation sont configurées et que certaines de ces DLL implémentent RadiusExtensionProcessEx, la fonction RadiusExtensionProcess/Ex dans une DLL donnée ne reçoit pas les attributs des DLL d’autorisation précédemment appelées. Il reçoit uniquement les attributs générés par le service d’autorisation NPS.
Fonction de rappel RadiusExtensionProcess2
Les DLL d’extension NPS peuvent également exporter RadiusExtensionProcess2 au lieu ou en plus de RadiusExtensionProcess et RadiusExtensionProcessEx. Cette fonction permet à la DLL d’ajouter, de modifier et de supprimer des attributs dans et à partir de la demande ou de la réponse d’authentification.
Les mêmes informations décrites dans la section Fonction de rappel RadiusExtensionProcessEx s’appliquent à la fonction RadiusExtensionProcess2 , avec les exceptions suivantes :
- Dans une DLL d’autorisation, RadiusExtensionProcess2 reçoit à la fois les attributs générés par le service d’autorisation NPS et les attributs générés à partir de DLL d’autorisation précédemment appelées.
- RadiusExtensionProcess2 n’a pas de paramètre pfAction . RadiusExtensionProcess2 définit la disposition finale de la requête à l’aide de la fonction SetResponseType fournie dans la structure RADIUS_EXTENSION_CONTROL_BLOCK .
- NPS appelle toujours la fonction RadiusExtensionProcess2 dans les DLL restantes, que les fonctions dans les DLL précédentes retournent accept ou non.
Rubriques connexes