2012-12-05 2 views
1

(IOCP를 사용하는) http.sys 기반 서버에서 Single Sign On을 구현하려고하는데 AcceptSecurityContext와 관련된 이상한 문제가 발생합니다.이 문제는 임의로 SEC_E_LOGON_DENIED와 함께 실패합니다.AcceptSecurityContext random SEC_E_LOGON_DENIED

하나의 클라이언트 만 HTTP 연결을 사용하는 경우에도 같은 클라이언트 컴퓨터에서 동일한 서버 컴퓨터 (약 50 %)에 연결할 때 임의로 오류가 발생합니다. 두 시스템 모두 동일한 도메인에 있으며 둘 다 도메인 제어기가 아닙니다.

실패한 호출은 시도 응답 시퀀스의 두 번째 (마지막) 호출이고 첫 번째 호출은 항상 성공합니다.

AcceptSecurityContext를 호출하기 전에 IDE에 중단 점이 있으면 (아무 것도 변경하지 않은 채로) 항상 인증이 성공합니다 (테스트 할 수있는 한).

타이밍 문제를 의심하고 호출하기 전에 Sleep()을 배치했지만 성공률은 향상되지 않았습니다.

또한 http 서버가 실행되는 동일한 시스템에서 연결할 때 인증은 항상 성공합니다.

동작은 클라이언트 브라우저 (IE 및 Chrome)와 관계없이 동일합니다.

아이디어가 있으십니까?

답변

1

이 문제는 한 문자 ('+')가 실수로 공간으로 변환되는 base64 데이터의 디코딩 문제와 관련되어 있으므로 해당 문자가있을 때만 문제가 발생했습니다.

왜 디버거 중단 점이 설정되었거나 로컬 연결에서 불분명하지만 ... 어쩌면 거기에 저장된 일부 타이밍 요소가 발생하지 않았습니다.