2012-07-03 5 views
0

다음과 같은 문제가 있습니다. SSL을 통해 래핑 된 소켓 연결을 허용하는 서버 응용 프로그램이 있습니다. 클라이언트는 사용자/암호가 맞으면 서버를 통해 사용자와 암호를 전송합니다.클라이언트에서 서버로 socket.error 올리기

사용자/암호가 잘못되면 서버가 클라이언트에 Socket.error를 보내길 원합니다. 지금 당장 떠오르는 유일한 생각은 클라이언트 "잘못된 암호"로 되돌려 보내는 것입니다.하지만 내장 된 오류를 사용하는 것이 더 안전하다고 생각합니다. 이렇게하면 try except 문을 통해 코드를 왜곡 할 수 있습니다.

어쨌든 서버에서 클라이언트로 소켓 오류를 보내는 것이 있습니까?

답변

0

가장 쉬운 방법은 일종의 리턴 코드를 보내고 클라이언트가 서버의 리턴 코드를 보게되면 예외 자체를 던집니다.

+0

실제로 인증을받지 못했다면 어떻게 인증을 받았는지 고객에게 말하고 있습니까? – Trickfire

+0

그것은 그저 조금 복잡합니다. 지금 당장 SSL 연결을 통해 연결이 안전하게 될 것입니다. 즉, 인증서가있는 것입니다. 사용자가 신뢰할 수있는 사용자가 될 것이라는 것을 알고 있지만, 사용자가 누구인지를 확인해야합니다. 2 번째 체크가 필요한 이유입니다. 그 이유는 ZeroMQ를위한 새 채널을 만드는 것입니다. 인증서는 공개되어 있으므로 모든 사용자에 대해 인증서를 만들 수 없기 때문에 해당 애플리케이션을 사용하는 모든 사람이 인증서를 갖게됩니다. (해당 애플리케이션을 사용하는 사용자가 최대 1600 명임) – Daerum

+0

오해가 아닌 한 정상적인 인증 설정처럼 들립니다. 소켓을 강제로 닫으 려하지 않는 한 클라이언트에 소켓 오류를 보낼 수 없습니다 (클라이언트가 소켓에서 강제로 오류를 읽으려고하면 오류가 발생합니다). 하지만 좀 더 정상적으로하려면 클라이언트가 인증되었는지 여부를 알려주는 인증을 보내야합니다. 서버가 돌아오고 인증되지 않는다고 말하면 원하는 모든 오류 (소켓 포함)를 던질 수 있습니다. 오류). – Trickfire

관련 문제