Schannel 보안 컨텍스트 만들기
클라이언트와 서버 간의 통신을 보호하는 보안 컨텍스트 를 설정하려면 둘 다 다음 정보 교환 프로세스에 참여해야 합니다.
클라이언트
- 클라이언트는 InitializeSecurityContext(일반) 함수를 호출합니다.
- Schannel은 선택한 보안 프로토콜의 규칙에 따라 보안 컨텍스트를 만들기 시작합니다. 함수의 반환 코드는 클라이언트가 함수를 다시 호출해야 하는지 여부를 나타냅니다. InitializeSecurityContext(일반) 는 컨텍스트를 나타내는 토큰을 반환할 수 있습니다.
- 토큰이 반환된 경우 클라이언트는 토큰을 서버로 보냅니다.
- InitializeSecurityContext(일반)가 SEC_E_OK 반환하면 클라이언트가 수행됩니다. 함수가 SEC_I_CONTINUE_NEEDED 반환하는 경우 클라이언트는 서버가 토큰을 보낼 때까지 기다려야 합니다. 클라이언트에 서버의 토큰이 있는 경우 InitializeSecurityContext(일반)함수를 다시 호출해야 합니다. (2단계로 돌아갑니다.)
서버
- 서버는 클라이언트가 보안 토큰이 포함된 메시지를 보낼 때까지 기다립니다. 서버는 클라이언트에서 받은 토큰을 AcceptSecurityContext(일반) 함수로 전달합니다.
- Schannel은 토큰이 나타내는 부분 보안 컨텍스트를 기반으로 합니다. Schannel은 서버에 토큰을 반환하고 서버가 함수를 다시 호출해야 하는지 여부를 나타내는 반환 코드를 반환합니다.
- 토큰이 반환된 경우 서버는 토큰을 클라이언트로 보냅니다.
- 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에서 반환된 추가 버퍼를 참조하세요.
관련 항목