확장 DLL 호출
메모
IAS(인터넷 인증 서비스)는 Windows Server 2008부터 NPS(네트워크 정책 서버)로 이름이 바뀌었습니다. 이 항목의 내용은 IAS 및 NPS 모두에 적용됩니다. 텍스트 전체에서 NPS는 원래 IAS라고 하는 버전을 포함하여 서비스의 모든 버전을 참조하는 데 사용됩니다.
NPS 확장 DLL은 다음 콜백 함수 중 하나 이상을 내보내야 합니다. RadiusExtensionProcess, RadiusExtensionProcessEx또는 RadiusExtensionProcess2. NPS는 NAS(네트워크 액세스 서버)에서 수신하는 유효한 각 인증 또는 회계 패킷에 대해 이러한 함수를 호출합니다. NPS는 NPS의 Parameters 레지스트리 키아래에 나열된 각 DLL에서 이러한 함수를 호출합니다. DLL은 나열된 순서대로 호출됩니다.
NPS 확장 DLL이 위의 함수 중 하나 이상을 내보내는 경우 NPS는 운영 체제에서 지원하는 최신 함수 중 하나만 호출합니다.
메모
IAS는 원래 RadiusExtensionProcess만 지원했습니다. IAS 는 RadiusExtensionProcessEx도 지원하고 있습니다. IAS(그리고 나중에는 NPS)는 RadiusExtensionProcess2도 지원합니다.
또한 NPS 확장 DLL은 radiusExtensionInit및 RadiusExtensionTerm 함수를내보낼 수도 있습니다. 이러한 함수가 있는 경우 NPS는 서비스가 각각 시작 및 중지되면 이러한 함수를 호출합니다.
RadiusExtensionProcess 콜백 함수
인증 확장 DLL에서 RadiusExtensionProcess는 인증 또는 회계 요청 시 NPS가 수신한 모든 특성을 전달받습니다. 함수는 이러한 특성을 사용하여 추가 유효성 검사를 수행하거나, 사용자의 권한 부여를 확인하거나, 계정 레코드를 중앙 상태 서버로 보낼 수 있습니다.
권한 부여 확장 DLL에서 RadiusExtensionProcess NPS 권한 부여 서비스에서 생성된 모든 특성을 받습니다. Access-Accept 패킷에 반환되는 특성입니다.
RadiusExtensionProcess호출한 후 NPS에서 수행하는 작업은 RadiusExtensionProcess반환 값과 pfAction 매개 변수에 반환된 값에 따라 달라집니다. 이러한 값은 다음 표에 나와 있습니다.
pfAction | 인증 확장 DLL | 권한 부여 확장 DLL |
---|---|---|
받아들이다 | 추가 인증 확장 DLL을 무시하고 NPS 인증 메커니즘도 무시합니다. | 허용되지 않습니다. |
거절하다 | 추가 인증 확장 DLL을 무시하고 NPS 인증 메커니즘도 무시합니다. Access-Reject 패킷이 전송됩니다. | 추가 권한 부여 확장 DLL을 무시합니다. |
계속하다 | 레지스트리에 더 이상 인증 확장 DLL이 나열되지 않으면 패킷이 다음 인증 확장 DLL 또는 NPS 인증 메커니즘으로 전송됩니다. | 레지스트리에 더 이상 권한 부여 확장 DLL이 나열되지 않으면 패킷이 다음 권한 부여 확장 DLL 또는 NPS 계정 로그로 전송됩니다. |
모든 확장 DLL의 경우 RadiusExtensionProcess 오류를 반환하면 패킷이 삭제됩니다. 오류로 인해 삭제된 패킷은 NPS 계정 로그에서 처리되지 않습니다.
오류가 발생하면 NPS는 이벤트 로그에 일반 오류 이벤트를 게시합니다. 확장 DLL은 추가 오류 로깅을 제공하는 것이 좋습니다.
이전 프로세스를 나타내는 다이어그램 및 자세한 내용은 NPS 확장참조하세요.
RadiusExtensionProcess 패킷의 수락 또는 거부를 확인할 수 없는 경우 오류를 반환해야 합니다. 네트워크 문제로 인해 RadiusExtensionProcess 사용자 인증 데이터베이스와 통신할 수 없는 경우 이 상황이 발생할 수 있습니다.
회계 패킷을 처리할 때 pfAction 매개 변수가 NULL이므로 pfAction을(를) 설정할 수 없습니다. 회계 요청을 처리하는 동안 RadiusExtensionProcess 함수에서 오류를 반환하면 NPS에서 요청을 삭제합니다.
메모
수락을 받은 후 NPS는 시퀀스의 나머지 DLL에서 RadiusExtensionProcess 호출하지 않습니다. 일부 인증 함수는 권한 부여를 구현할 수도 있으므로 이러한 인증 함수를 건너뛰면 권한 부여가 생략될 수 있습니다. RadiusExtensionProcess 인스턴스가 Accept를 반환하는 경우 검색된 권한 부여에 대해 어떠한 가정도 하지 않는 것이 중요합니다.
Continue 또는 Accept가 반환되면 영역에 해당하는 프로필이 Access-Accept 패킷으로 다시 전송됩니다.
인증 확장 DLL은 기본 제공 NPS 인증 공급자 및 다른 확장 DLL과 공존하도록 설계되어야 합니다. 확장이 특정 사용자 데이터베이스(예: Windows Active Directory)에만 적용되는 경우 요청을 처리하기 전에 pAttrs 매개 변수에 전달된 ratProvider 특성을 확인해야 합니다. ratProvider 특성은 pAttrs 매개 변수가 가리키는 특성 목록 중 하나입니다.
필요한 특성이 없기 때문에 확장 DLL은 요청을 거부해서는 안 됩니다. 예를 들어 인증 확장에 User-Password 특성, ratUserPassword가 필요하고 특성이 없는 경우 확장은 raContinue의 작업을 반환하여 다른 확장 및 공급자에게 요청을 처리할 기회를 제공해야 합니다.
NPS는 특정 인증 데이터베이스를 사용하기로 결정한 후 사용자가 인증되기 전에 RadiusExtensionProcess 함수를 호출합니다. 따라서 함수가 적절한 인증 데이터베이스에서 사용자의 권한 부여를 확인할 수 있도록 사용할 인증 데이터베이스에 대한 정보를 함수에 사용할 수 있습니다. NPS는 Windows Active Directory를 비롯한 다양한 인증 데이터베이스를 지원합니다.
RadiusExtensionProcessEx 콜백 함수
NPS 확장 DLL은 RadiusExtensionProcess대신에, 또는 이에 추가하여, RadiusExtensionProcessEx을(를) 내보낼 수 있습니다. 이 함수를 사용하면 DLL이 인증 응답에 추가 권한 부여 특성을 추가할 수 있습니다.
RadiusExtensionProcess 콜백 함수 섹션에 설명된 것과 동일한 정보가 RadiusExtensionProcessEx 함수에 적용됩니다.
RadiusExtensionProcessEx 있는 특성을 수정하거나 제거할 수 없습니다. DLL이 특성을 수정하거나 제거해야 하는 시나리오가 발생하는 경우 유일한 옵션은 NPS 사용자 인터페이스를 사용하여 특성이 없는지 확인하는 것입니다. 기본적으로 권한 부여 특성은 없습니다. 존재하는 모든 항목은 사용자 인터페이스를 통해 추가되어야 합니다.
여러 권한 부여 DLL이 구성되고 이러한 DLL 중 일부가 RadiusExtensionProcessEx구현하는 경우 지정된 DLL의 RadiusExtensionProcess/Ex 함수는 이전에 호출된 권한 부여 DLL에서 특성을 수신하지 않습니다. NPS 권한 부여 서비스에서 생성된 특성만 받습니다.
RadiusExtensionProcess2 콜백 함수
또한 NPS 확장 DLL은 RadiusExtensionProcess 및 RadiusExtensionProcessEx대신 또는 그 외에 RadiusExtensionProcess2를 내보낼 수도 있습니다. 이 함수를 사용하면 DLL이 인증 요청 또는 응답에서 특성을 추가, 수정 및 제거할 수 있습니다.
RadiusExtensionProcessEx 콜백 함수 섹션에 설명된 동일한 정보는 다음 예외를 제외하고 RadiusExtensionProcess2 함수에 적용됩니다.
- 권한 부여 DLL에서 RadiusExtensionProcess2 NPS 권한 부여 서비스에서 생성된 특성과 이전에 호출된 권한 부여 DLL에서 생성된 특성을 모두 받습니다.
- RadiusExtensionProcess2pfAction 매개 변수가 없습니다. RadiusExtensionProcess2RADIUS_EXTENSION_CONTROL_BLOCK 구조에 제공된 SetResponseType 함수를 사용하여 요청의 최종 처리를 설정합니다.
- NPS는 이전 DLL의 함수가 Accept를 반환했는지 여부에 관계없이 나머지 DLL에서 항상 RadiusExtensionProcess2 함수를 호출합니다.
관련 항목