Schannel을 사용하여 인증 수행

모든 Schannel 프로토콜을 사용하려면 서버가 신뢰할 수 있는 CA(인증 기관)의 인증서를 ID 증명으로 제공해야 합니다. 이 프로세스를 서버 인증이라고 합니다. 클라이언트가 ID 증명을 제공하는 클라이언트 인증은 선택 사항이며 서버에서 언제든지 요청할 수 있습니다.

서버 인증

Schannel의 기본 동작은 WinVerifyTrust 함수를 사용하여 서버 인증서무결성 및 소유권을 확인하는 것입니다. 이 기능을 사용하지 않도록 설정하려면 InitializeSecurityContext(Schannel) 함수를 호출할 때 ISC_REQ_MANUAL_CRED_VALIDATION 지정합니다. 자세한 내용은 수동으로 Schannel 자격 증명 유효성 검사를 참조하세요.

클라이언트 인증

Schannel은 클라이언트의 인증서의 유효성을 검사하지 않습니다. 서버는 이 인증을 수동으로 수행해야 합니다. 일반적으로 서버는 사용자 계정 정보를 포함하는 데이터베이스에서 클라이언트의 ID를 검사. 인증서를 사용하여 클라이언트의 계정을 가져와야 하는 서버는 인증서 매핑을 참조하세요.

서버가 클라이언트 인증을 요청할 때 클라이언트는 서버 인증서 중 하나를 보내야 합니다. 기본적으로 Schannel은 클라이언트에 대한 알림 없이 클라이언트 인증서 를 찾아 서버로 보내려고 시도합니다. 이 기능을 사용하지 않도록 설정하기 위해 클라이언트는 InitializeSecurityContext(Schannel) 함수를 호출할 때 ISC_REQ_USE_SUPPLIED_CREDS 지정합니다. 이 플래그를 지정하면 서버가 인증을 요청하고 클라이언트가 이전에 인증서를 제공하지 않은 경우 Schannel은 클라이언트에 SEC_I_INCOMPLETE_CREDENTIALS 반환합니다.