Invocar los archivos DLL de extensión
Nota
A partir de Windows Server 2008, se cambió el nombre del servicio de autenticación de Internet (IAS). El contenido de este tema se aplica tanto a IAS como a NPS. A lo largo del texto, NPS se usa para hacer referencia a todas las versiones del servicio, incluidas las versiones a las que se hace referencia originalmente como IAS.
Los archivos DLL de extensión NPS deben exportar al menos una de las siguientes funciones de devolución de llamada: RadiusExtensionProcess, RadiusExtensionProcessEx o RadiusExtensionProcess2. NPS llama a esta función para cada paquete de contabilidad o autenticación válido que recibe del servidor de acceso a la red (NAS). NPS llama a estas funciones en cada uno de los archivos DLL enumerados debajo de la clave del Registro parameters de NPS. Se llama a los archivos DLL en el orden en que se muestran.
Si un archivo DLL de extensión NPS exporta más de una de las funciones anteriores, NPS invoca solo una de ellas: la función más reciente compatible con el sistema operativo.
Nota
IAS solo admite originalmente RadiusExtensionProcess. IAS también admite RadiusExtensionProcessEx. IAS (y versiones posteriores NPS) también admite RadiusExtensionProcess2.
Los archivos DLL de extensión NPS también pueden exportar funciones RadiusExtensionInit y RadiusExtensionTerm . Si están presentes, NPS llama a estas funciones cuando el servicio se inicia y se detiene, respectivamente.
Función de devolución de llamada RadiusExtensionProcess
En un archivo DLL de extensión de autenticación, RadiusExtensionProcess recibe todos los atributos recibidos por NPS en la solicitud de autenticación o contabilidad. Con estos atributos, la función puede realizar validaciones adicionales, comprobar las autorizaciones del usuario o enviar registros contables a un servidor de estado central.
En un archivo DLL de extensión de autorización, RadiusExtensionProcess recibe todos los atributos generados por el servicio de autorización NPS. Estos son los atributos que se devuelven en el paquete Access-Accept.
Después de llamar a RadiusExtensionProcess, la acción realizada por NPS depende del valor devuelto de RadiusExtensionProcess y del valor devuelto en el parámetro pfAction . Los valores se muestran en la tabla siguiente.
pfAction | DLL de extensión de autenticación | DLL de extensión de autorización |
---|---|---|
Aceptar | Omite cualquier archivo DLL de extensión de autenticación adicional y también omite el mecanismo de autenticación NPS. | No se permite aceptar. |
Reject | Omite cualquier archivo DLL de extensión de autenticación adicional y también omite el mecanismo de autenticación NPS. Access-Reject se envía el paquete. | Omite cualquier archivo DLL de extensión de autorización adicional. |
Continuar | El paquete se envía al siguiente archivo DLL de extensión de autenticación o al mecanismo de autenticación NPS si no se muestran más archivos DLL de extensión de autenticación en el registro. | El paquete se envía al siguiente archivo DLL de extensión de autorización o al registro de contabilidad de NPS si no se muestran más archivos DLL de extensión de autorización en el registro. |
Para todos los archivos DLL de extensión, si RadiusExtensionProcess devuelve un error, el paquete se descarta. El registro de contabilidad de NPS no procesa los paquetes descartados debido a un error.
Si se produce un error, NPS publica un evento de error genérico en el registro de eventos. Se recomienda que el archivo DLL de extensión proporcione un registro de errores adicional.
Para obtener más información y un diagrama que representa el proceso anterior, vea Acerca de las extensiones NPS.
RadiusExtensionProcess debe devolver un error si no puede comprobar la aceptación o el rechazo del paquete. Esta situación puede surgir si un problema de red impide que RadiusExtensionProcess se comunique con su base de datos de autenticación de usuario.
Al procesar un paquete de contabilidad, el parámetro pfAction es NULL, por lo que no se puede establecer pfAction . Devolver un error de la función RadiusExtensionProcess mientras procesa una solicitud de contabilidad hace que NPS descarte la solicitud.
Nota
Después de recibir una aceptación, NPS no llama a RadiusExtensionProcess en los archivos DLL restantes de la secuencia. Dado que algunas funciones de autenticación también pueden implementar autorizaciones, omitir estas funciones de autenticación puede hacer que se omitan las autorizaciones. Si una instancia de RadiusExtensionProcess devuelve Accept, es importante no realizar ninguna suposición sobre las autorizaciones recuperadas.
Si se devuelve Continue o Accept, el perfil correspondiente al dominio kerberos se devuelve en el paquete Access-Accept.
Los archivos DLL de extensión de autenticación deben diseñarse para coexistir con los proveedores de autenticación NPS integrados y con otros archivos DLL de extensión. Si una extensión solo es aplicable a una base de datos de usuario determinada (por ejemplo, Windows Active Directory), debe comprobar el atributo ratProvider pasado en el parámetro pAttrs , antes de procesar la solicitud. El atributo ratProvider sería una de las listas de atributos a los que apunta el parámetro pAttrs .
Los archivos DLL de extensión no deben rechazar las solicitudes porque faltan los atributos necesarios. Por ejemplo, si una extensión de autenticación requiere el atributo User-Password, ratUserPassword y el atributo no está presente, la extensión debe devolver una acción de raContinue para dar a otras extensiones y proveedores la oportunidad de procesar la solicitud.
NPS llama a la función RadiusExtensionProcess después de tomar la decisión de usar una base de datos de autenticación determinada, pero antes de que el usuario se autentique. Por lo tanto, la información sobre qué base de datos de autenticación usar está disponible para la función, de modo que la función pueda comprobar las autorizaciones del usuario en la base de datos de autenticación adecuada. NPS admite varias bases de datos de autenticación, incluido Windows Active Directory.
Función de devolución de llamada RadiusExProcessEx
Los archivos DLL de extensión NPS pueden exportar RadiusExtensionProcessEx en lugar de RadiusExtensionProcess, o además de RadiusExtensionProcess. Esta función permite que el archivo DLL anexe atributos de autorización adicionales a la respuesta de autenticación.
La misma información descrita en la sección Función de devolución de llamada RadiusExtensionProcess se aplica a la función RadiusExtensionProcessEx .
RadiusExtensionProcessEx no puede modificar ni quitar ninguno de los atributos que están presentes. Si surge un escenario en el que el archivo DLL debe modificar o quitar atributos, la única opción es usar la interfaz de usuario NPS para asegurarse de que los atributos no están presentes. De forma predeterminada, no hay atributos de autorización presentes. Todos los que estén presentes se deben haber agregado a través de la interfaz de usuario.
Si se configuran varios archivos DLL de autorización y algunos de estos archivos DLL implementan RadiusExtensionProcessEx, la función RadiusExtensionProcess/Ex en un archivo DLL determinado no recibe los atributos de los archivos DLL de autorización denominados anteriormente. Recibe solo los atributos generados por el servicio de autorización NPS.
Función de devolución de llamada RadiusExtensionProcess2
Los archivos DLL de extensión NPS también pueden exportar RadiusExtensionProcess2 en lugar de, o además de RadiusExtensionProcess y RadiusExtensionProcessEx. Esta función permite que el archivo DLL agregue, modifique y quite atributos a y desde la solicitud o respuesta de autenticación.
La misma información descrita en la sección Función de devolución de llamada RadiusExtensionProcessEx se aplica a la función RadiusExtensionProcess2 , con las siguientes excepciones:
- En un archivo DLL de autorización, RadiusExtensionProcess2 recibe los atributos generados por el servicio de autorización NPS y los atributos generados a partir de archivos DLL de autorización denominados anteriormente.
- RadiusExtensionProcess2 no tiene un parámetro pfAction . RadiusExtensionProcess2 establece la disposición final de la solicitud mediante la función SetResponseType proporcionada en la estructura RADIUS_EXTENSION_CONTROL_BLOCK .
- NPS siempre llama a la función RadiusExtensionProcess2 en los archivos DLL restantes, independientemente de si las funciones de los archivos DLL anteriores devolvieron Accept.
Temas relacionados