다음을 통해 공유


확장 DLL 호출

참고

IAS(인터넷 인증 서비스)의 이름이 Windows Server 2008부터 NPS(네트워크 정책 서버)로 바뀌었습니다. 이 항목의 내용은 IAS 및 NPS 모두에 적용됩니다. 텍스트 전체에서 NPS는 원래 IAS라고 하는 버전을 포함하여 서비스의 모든 버전을 참조하는 데 사용됩니다.

 

NPS 확장 DLL은 RadiusExtensionProcess, RadiusExtensionProcessEx 또는 RadiusExtensionProcess2 콜백 함수 중 하나 이상을 내보내야 합니다. NPS는 NAS(네트워크 액세스 서버)에서 수신하는 유효한 각 인증 또는 회계 패킷에 대해 이러한 함수를 호출합니다. NPS는 NPS의 매개 변수 레지스트리 키 아래에 나열된 각 DLL에서 이러한 함수를 호출합니다. DLL은 나열된 순서대로 호출됩니다.

NPS 확장 DLL이 위의 함수 중 하나 이상을 내보내는 경우 NPS는 운영 체제에서 지원하는 최신 함수 중 하나만 호출합니다.

참고

IAS는 원래 RadiusExtensionProcess만 지원했습니다. IAS는 RadiusExtensionProcessEx도 지원합니다. IAS(이상 NPS)는 RadiusExtensionProcess2도 지원합니다.

 

NPS 확장 DLL은 RadiusExtensionInitRadiusExtensionTerm 함수를 내보낼 수도 있습니다. 이 함수가 있는 경우 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의 instance 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에서 생성된 특성을 모두 받습니다.
  • RadiusExtensionProcess2 에는 pfAction 매개 변수가 없습니다. RadiusExtensionProcess2RADIUS_EXTENSION_CONTROL_BLOCK 구조에 제공된 SetResponseType 함수를 사용하여 요청의 최종 처리를 설정합니다.
  • NPS는 이전 DLL의 함수가 Accept를 반환했는지 여부에 관계없이 나머지 DLL에서 항상 RadiusExtensionProcess2 함수를 호출합니다.

확장 DLL 설정

사용자 식별 특성