Вызов библиотек DLL расширений
Примечание
Служба проверки подлинности в Интернете (IAS) была переименована в сервер политики сети (NPS), начиная с Windows Server 2008. Содержание этого раздела относится как к IAS, так и к NPS. В тексте NPS используется для обозначения всех версий службы, включая версии, первоначально называемые IAS.
Библиотеки DLL расширения NPS должны экспортировать по крайней мере одну из следующих функций обратного вызова: RadiusExtensionProcess, RadiusExtensionProcessEx или RadiusExtensionProcess2. NPS вызывает эти функции для каждого допустимого пакета проверки подлинности или учета, полученного от сервера доступа к сети (NAS). NPS вызывает эти функции в каждом из библиотек DLL, перечисленных под разделом реестра "Параметры NPS". Библиотеки DLL вызываются в порядке их перечисления.
Если библиотека DLL расширения NPS экспортирует более одной из описанных выше функций, NPS вызывает только одну из них: новейшую функцию, поддерживаемую операционной системой.
Примечание
Первоначально IAS поддерживал только RadiusExtensionProcess. IAS также поддерживает RadiusExtensionProcessEx. IAS (и более поздние версии NPS) поддерживает также RadiusExtensionProcess2.
Библиотеки DLL расширения NPS также могут экспортировать функции RadiusExtensionInit и RadiusExtensionTerm . Если они присутствуют, NPS вызывает эти функции при запуске и остановке службы соответственно.
Функция обратного вызова RadiusExtensionProcess
В библиотеке DLL расширения проверки подлинности RadiusExtensionProcess получает все атрибуты, полученные NPS в запросе проверки подлинности или бухгалтерского учета. Используя эти атрибуты, функция может выполнять дополнительные проверки, проверять разрешения пользователя или отправлять учетные записи на центральный сервер состояний.
В библиотеке DLL расширения авторизации RadiusExtensionProcess получает все атрибуты, созданные службой авторизации NPS. Эти атрибуты возвращаются в пакете Access-Accept.
После вызова RadiusExtensionProcess действие, выполняемое NPS, зависит от возвращаемого значения RadiusExtensionProcess и значения, возвращаемого в параметре pfAction . Эти значения перечислены в следующей таблице.
pfAction | Библиотека DLL расширения проверки подлинности | Библиотека DLL расширения авторизации |
---|---|---|
Принять | Обходит все дополнительные библиотеки DLL расширения проверки подлинности, а также обходит механизм проверки подлинности NPS. | Принимать запрещено. |
Reject | Обходит все дополнительные библиотеки DLL расширения проверки подлинности, а также обходит механизм проверки подлинности NPS. Access-Reject отправляется пакет. | Обходит все дополнительные библиотеки DLL расширения авторизации. |
Продолжить | Пакет отправляется в следующую библиотеку DLL расширения проверки подлинности или в механизм проверки подлинности NPS, если в реестре больше не указаны библиотеки DLL расширения проверки подлинности. | Пакет отправляется в следующую библиотеку DLL расширения авторизации или в журнал учета NPS, если в реестре больше нет библиотек DLL расширения авторизации. |
Если radiusExtensionProcess возвращает ошибку для всех библиотек DLL расширений, пакет удаляется. Пакеты, отбрасываемые из-за ошибки, не обрабатываются журналом учета NPS.
При возникновении ошибки NPS отправляет общее событие ошибки в журнал событий. Рекомендуется, чтобы библиотека DLL расширения предоставляла дополнительные журналы ошибок.
Дополнительные сведения и схему, представляющую предыдущий процесс, см. в разделе О расширениях NPS.
RadiusExtensionProcess должен возвращать ошибку, если ему не удается проверить принятие или отклонение пакета. Такая ситуация может возникнуть, если проблема в сети не позволяет RadiusExtensionProcess взаимодействовать со своей базой данных проверки подлинности пользователей.
При обработке пакета учета параметр pfAction имеет значение NULL, поэтому pfAction нельзя задать. При возврате ошибки из функции RadiusExtensionProcess при обработке запроса учета запрос отклоняется NPS.
Примечание
После получения подтверждения NPS не вызывает RadiusExtensionProcess в остальных библиотеках DLL в последовательности. Поскольку некоторые функции проверки подлинности также могут реализовывать авторизацию, пропуск таких функций проверки подлинности может привести к пропуску авторизации. Если экземпляр RadiusExtensionProcess возвращает Accept, важно не делать никаких предположений о полученных авторизациях.
Если возвращается значение Continue или Accept, профиль, соответствующий области, отправляется обратно в пакете Access-Accept.
Библиотеки DLL для расширений проверки подлинности должны сосуществовать со встроенными поставщиками проверки подлинности NPS и другими библиотеками DLL расширений. Если расширение применимо только к определенной пользовательской базе данных (например, Windows Active Directory), ему следует проверить атрибут ratProvider , переданный в параметре pAttrs , перед обработкой запроса. Атрибут ratProvider будет одним из списка атрибутов, на которые указывает параметр pAttrs .
Библиотеки DLL расширений не должны отклонять запросы, так как отсутствуют необходимые атрибуты. Например, если для расширения проверки подлинности требуется атрибут User-Password ratUserPassword, а атрибут отсутствует, расширение должно вернуть действие raContinue, чтобы предоставить другим расширениям и поставщикам возможность обработать запрос.
NPS вызывает функцию RadiusExtensionProcess после принятия решения об использовании определенной базы данных проверки подлинности, но до проверки подлинности пользователя. Таким образом, сведения об используемой базе данных проверки подлинности доступны функции, чтобы функция проверка для авторизации пользователя в соответствующей базе данных проверки подлинности. NPS поддерживает различные базы данных проверки подлинности, включая Windows Active Directory.
Функция обратного вызова RadiusExtensionProcessEx
Библиотеки DLL расширения NPS могут экспортировать RadiusExtensionProcessEx вместо RadiusExtensionProcess или в дополнение к radiusExtensionProcess. Эта функция позволяет библиотеке DLL добавлять дополнительные атрибуты авторизации в ответ проверки подлинности.
Те же сведения, описанные в разделе Функция обратного вызова RadiusExtensionProcess , относятся к функции RadiusExtensionProcessEx .
RadiusExtensionProcessEx не может изменять или удалять имеющиеся атрибуты. Если возникает сценарий, в котором библиотека DLL должна изменять или удалять атрибуты, единственным вариантом является использование пользовательского интерфейса NPS, чтобы убедиться, что атрибуты отсутствуют. По умолчанию атрибуты авторизации отсутствуют. Все присутствующие должны быть добавлены через пользовательский интерфейс.
Если настроено несколько библиотек DLL авторизации и некоторые из них реализуют RadiusExtensionProcessEx, функция RadiusExtensionProcess/Ex в данной библиотеке DLL не получает атрибуты из ранее называемых библиотек DLL авторизации. Он получает только атрибуты, созданные службой авторизации NPS.
Функция обратного вызова RadiusExtensionProcess2
Библиотеки DLL расширения NPS также могут экспортировать RadiusExtensionProcess2 вместо RadiusExtensionProcess и RadiusExtensionProcessExtensionProcessExex или в дополнение к ним. Эта функция позволяет библиотеке DLL добавлять, изменять и удалять атрибуты в запросе или ответе проверки подлинности.
Те же сведения, описанные в разделе Функция обратного вызова RadiusExtensionProcessEx, относятся к функции RadiusExtensionProcess2 , за следующими исключениями:
- В библиотеке DLL авторизации RadiusExtensionProcess2 получает атрибуты, созданные службой авторизации NPS, и атрибуты, созданные из ранее называемых библиотек DLL авторизации.
- RadiusExtensionProcess2 не имеет параметра pfAction . RadiusExtensionProcess2 задает окончательную ликвидацию запроса с помощью функции SetResponseType , предоставленной в структуре RADIUS_EXTENSION_CONTROL_BLOCK .
- NPS всегда вызывает функцию RadiusExtensionProcess2 во всех оставшихся библиотеках DLL независимо от того, возвращали ли функции в предыдущих библиотеках DLL Accept.
Связанные темы