SaslAcceptSecurityContext 함수(sspi.h)
SaslAcceptSecurityContext 함수는 보안 지원 공급자 인터페이스AcceptSecurityContext(일반) 함수에 대한 표준 호출을 래핑하고 SASL 서버 쿠키 만들기를 포함합니다.
통사론
SECURITY_STATUS SEC_ENTRY SaslAcceptSecurityContext(
[in] PCredHandle phCredential,
[in, optional] PCtxtHandle phContext,
[in] PSecBufferDesc pInput,
[in] unsigned long fContextReq,
[in] unsigned long TargetDataRep,
[out] PCtxtHandle phNewContext,
[in, out] PSecBufferDesc pOutput,
[out] unsigned long *pfContextAttr,
[out, optional] PTimeStamp ptsExpiry
);
매개 변수
[in] phCredential
서버의 자격 증명에 대한 핸들입니다. 서버는 inBOUND 플래그가 설정된 AcquireCredentialsHandle 함수를 호출하여 이 핸들을 검색합니다.
[in, optional] phContext
CtxtHandle 구조체에 대한 포인터입니다. AcceptSecurityContext(일반)
[in] pInput
입력 버퍼 설명자를 포함하는 InitializeSecurityContext(일반) 함수에 대한 클라이언트 호출에 의해 생성된 SecBufferDesc 구조체에 대한 포인터입니다.
SASL에는 SECBUFFER_TOKEN형식의 단일 버퍼가 필요합니다. 버퍼는 AcceptSecurityContext(일반) 함수에 대한 첫 번째 호출에 대해 비어 있으며 두 번째 호출에 대해 클라이언트로부터 받은 챌린지 응답을 포함합니다.
[in] fContextReq
컨텍스트를 설정하는 데 서버에서 필요한 특성을 지정하는 비트 플래그입니다. 비트 플래그는 비트OR 작업을 사용하여 결합할 수 있습니다. 다음 표에서는 가능한 값을 보여줍니다.
값 | 의미 |
---|---|
|
메시지를 암호화하고 암호를 해독합니다.
SASL용 다이제스트 SSP에서만 유효합니다. |
|
HTTP용 다이제스트를 사용합니다. 다이제스트를 SASL 메커니즘으로 사용하려면 이 플래그를 생략합니다. |
[in] TargetDataRep
대상의 바이트 순서 지정과 같은 데이터 표현을 나타냅니다. 이 값은 SECURITY_NATIVE_DREP 또는 SECURITY_NETWORK_DREP 수 있습니다.
[out] phNewContext
CtxtHandle 구조체에 대한 포인터입니다. AcceptSecurityContext(일반)대한 첫 번째 호출에서 이 포인터는 새 컨텍스트 핸들을 받습니다. 후속 호출에서 phNewContextphContext 매개 변수에 지정된 핸들과 같을 수 있습니다.
[in, out] pOutput
출력 버퍼 설명자를 포함하는 SecBufferDesc 구조체에 대한 포인터입니다. 이 버퍼는 InitializeSecurityContext(일반)대한 추가 호출에 대한 입력을 위해 클라이언트로 전송됩니다. 함수가 SEC_E_OK 반환하는 경우에도 출력 버퍼가 생성될 수 있습니다. 생성된 모든 버퍼를 클라이언트 애플리케이션으로 다시 보내야 합니다.
[out] pfContextAttr
설정된 컨텍스트의 특성을 나타내는 비트 플래그 집합을 수신하는 변수에 대한 포인터입니다. 다양한 특성에 대한 설명은 컨텍스트 요구 사항참조하세요. 이 매개 변수에 사용되는 플래그에는 ASC_RET_DELEGATE 같은 ASC_RET 접두사로 지정됩니다.
최종 함수 호출이 성공적으로 반환될 때까지 보안 관련 특성을 확인하지 마세요. ASC_RET_ALLOCATED_MEMORY 플래그와 같이 보안과 관련이 없는 특성 플래그는 최종 반환 전에 확인할 수 있습니다.
[out, optional] ptsExpiry
컨텍스트의 만료 시간을 수신하는 TimeStamp 구조체에 대한 포인터입니다. 보안 패키지는 항상 현지 시간으로 이 값을 반환하는 것이 좋습니다.
반환 값
호출이 성공적으로 완료되면 이 함수는 SEC_E_OK 반환합니다. 다음 표에서는 몇 가지 가능한 오류 반환 값을 보여줍니다.
반환 코드 | 묘사 |
---|---|
|
Authz 처리는 허용되지 않습니다. |
|
메모리가 부족하여 요청을 완료할 수 없습니다. |
|
pOutput 매개 변수에 토큰 버퍼가 없거나 메시지의 암호를 해독하지 못했습니다. |
발언
SEC_E_OK 반환하는 AcceptSecurityContext(일반) 함수의 최종 호출이 식별됩니다. 반환 토큰이 생성되면 최종 토큰을 처리할 수 있도록 클라이언트로 한 번 왕복하는 동안 SASL 처리가 일시 중단됩니다. 교환이 완료되면 SEC_E_CONTINUE_NEEDED SSPI 메시지 함수로 암호화된 추가 SASL 서버 쿠키를 사용하여 애플리케이션에 반환됩니다. 초기 서버 쿠키는 INTEGRITY 및 PRIVACY가 지원되는지를 나타냅니다. 이 초기 서버 쿠키는 클라이언트에서 처리되고 클라이언트는 클라이언트가 요청하는 서비스를 나타내는 클라이언트 쿠키를 반환합니다. 그런 다음 클라이언트 쿠키는 서버에 의해 암호 해독되고 최종 서비스는 다음 메시지 트래픽에 대해 결정됩니다.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | 지원되지 않는 항목 |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | sspi.h(Security.h 포함) |
라이브러리 | Secur32.lib |
DLL | Secur32.dll |