다음을 통해 공유


Schannel 보안 컨텍스트 만들기

클라이언트와 서버 간의 통신을 보호하는 보안 컨텍스트 를 설정하려면 둘 다 다음 정보 교환 프로세스에 참여해야 합니다.

클라이언트

  1. 클라이언트는 InitializeSecurityContext(일반) 함수를 호출합니다.
  2. Schannel은 선택한 보안 프로토콜의 규칙에 따라 보안 컨텍스트를 만들기 시작합니다. 함수의 반환 코드는 클라이언트가 함수를 다시 호출해야 하는지 여부를 나타냅니다. InitializeSecurityContext(일반) 는 컨텍스트를 나타내는 토큰을 반환할 수 있습니다.
  3. 토큰이 반환된 경우 클라이언트는 토큰을 서버로 보냅니다.
  4. InitializeSecurityContext(일반)가 SEC_E_OK 반환하면 클라이언트가 수행됩니다. 함수가 SEC_I_CONTINUE_NEEDED 반환하는 경우 클라이언트는 서버가 토큰을 보낼 때까지 기다려야 합니다. 클라이언트에 서버의 토큰이 있는 경우 InitializeSecurityContext(일반)함수를 다시 호출해야 합니다. (2단계로 돌아갑니다.)

서버

  1. 서버는 클라이언트가 보안 토큰이 포함된 메시지를 보낼 때까지 기다립니다. 서버는 클라이언트에서 받은 토큰을 AcceptSecurityContext(일반) 함수로 전달합니다.
  2. Schannel은 토큰이 나타내는 부분 보안 컨텍스트를 기반으로 합니다. Schannel은 서버에 토큰을 반환하고 서버가 함수를 다시 호출해야 하는지 여부를 나타내는 반환 코드를 반환합니다.
  3. 토큰이 반환된 경우 서버는 토큰을 클라이언트로 보냅니다.
  4. AcceptSecurityContext(일반)가 SEC_E_OK 반환하면 서버가 완료됩니다. 함수가 SEC_I_CONTINUE_NEEDED 반환하는 경우 서버는 클라이언트가 토큰을 보낼 때까지 기다려야 합니다. 서버에 클라이언트의 토큰이 있는 경우 AcceptSecurityContext(일반) 함수를 다시 호출해야 합니다. (2단계로 돌아갑니다.)

함수가 SEC_E_OK, SEC_I_CONTINUE_NEEDED 또는 SEC_E_INCOMPLETE_MESSAGE 이외의 값을 반환하는 경우(다음 단락 참조) 오류가 발생했습니다. 클라이언트와 서버는 DeleteSecurityContext 함수를 호출하여 부분적으로 설정된 보안 컨텍스트를 삭제해야 합니다.

클라이언트 및 서버 처리를 변경할 수 있는 특별한 경우는 너무 적거나 너무 많은 정보가 다른 당사자로부터 클라이언트 또는 서버로 전송되는 경우입니다. 정보가 너무 적은 경우 두 함수 모두 SEC_E_INCOMPLETE_MESSAGE 반환합니다. 불충분하거나 과도한 정보를 인식하고 처리하는 방법에 대한 자세한 내용은 Schannel에서 반환된 추가 버퍼를 참조하세요.

Schannel을 사용하여 인증 수행

인증서 매핑

수동으로 Schannel 자격 증명 유효성 검사