2011-12-10 2 views
1

우리는 JAVA 웹 응용 프로그램에 CAS 서버를 사용하고 있습니다. 인증 시스템은 다음과 같다 :Single Sign On 패러다임은 HTTP 프로토콜 규칙을 준수합니까?

  • 사용자가 시스템의 리소스 (1)에 액세스하려고
  • 이 얻을 리디렉션 (302 발견)
  • 사용자는 사용자 이름 암호를 입력
  • 서버가 쿠키로 응답하고 원래 페이지로 리디렉션됩니다 (1)

이 상호 작용이 H를 존중한다는 사실에 대해 논했습니다. TTP 프로토콜.

나는 자원 에 액세스 할 수있는 권한이없는 경우해야하지 않는 401 권한 또는 더 나은 407 프록시 인증 필요와 시스템 대답?

인증 리소스는 쿠키 문자열 대신 전체 SSL 수준 인증 키일 수 없었습니까?

추가 : 컬 -L을 사용하여 헤더 덤프 -D

HTTP/1.1 301 Moved Permanently 
Server: nginx/0.8.54 
Date: Sat, 10 Dec 2011 02:07:55 GMT 
Content-Type: text/html 
Content-Length: 185 
Connection: keep-alive 
Location: https://server.com/service/ 

HTTP/1.1 302 Found 
Server: nginx/0.8.54 
Date: Sat, 10 Dec 2011 02:07:55 GMT 
Transfer-Encoding: chunked 
Connection: keep-alive 
Cache-Control: no-store, max-age=0, must-revalidate 
Expires: Thu, 01-Jan-1970 00:00:00 GMT 
Set-Cookie: JSESSIONID=q7rjikj4spvd1fxaowjl9XXX 
Location: https://server.com/login/ 

HTTP/1.1 200 OK 
Server: nginx/0.8.54 
Date: Sat, 10 Dec 2011 02:07:55 GMT 
Content-Type: text/html; charset=UTF-8 
Connection: keep-alive 
X-Powered-By: PHP/5.3.2 
Content-Length: 6650 
+0

사용자 이름 암호를 입력하라는 메시지와 함께 302 Found 후에 전송 된 페이지가 어떤 HTTP Status를 반환하는지 궁금합니다. 401 Unauthorized 상태가 될 수 있습니까? (407은 실제로 프록시가 아니므로 적당하지 않다고 생각합니다.) 예를 들어 파이어 폭스에서 라이브 HTTP 헤더를 사용하여 HTTP 헤더를 캡처하면 관계없이 여기에있는 것이 정말 좋을 것입니다. – ziesemer

+0

프록시는 일반적인 HTTP 프록시 서비스 대신 "다른 서비스"라고 생각합니다. HTTP 헤더를 추가했습니다. 그리고 내가 생각한 것보다 더 나빠질 것입니다. – fabrizioM

답변

0

네 말이 맞아 - 당신의 예에서 SSO 시스템은 HTTP 프로토콜 자체보다 다른 수준에서 정말입니다. 응용 프로그램이 401을 반환하면 브라우저 자체가 인증을 처리합니다 (예 : 사용자에게 사용자 이름/암호를 묻는 메시지를 보낸 다음 HTTP Authorization 헤더에 인코딩 된이 base-64로 다음 요청을 보냅니다). HTTP 기본 인증의 경우 사용자 이름이 &이고 시스템에 요청할 때마다 암호가 전송됩니다. Kerberos 또는 NTLM을 사용하여 인증을 수행 할 수 있습니다.이 경우 사용자가 이미 네트워크에 로그인 한 경우 인증이 투명해질 수 있습니다.

즉, 많은 SSO 시스템은 사용자를 로그인 HTML 양식으로 리디렉션 한 다음 쿠키를 사용하여 세션 상태를 유지 관리하는 방식을 사용합니다. 주요 이점 중 하나는 모양을 더 잘 제어 할 수 있다는 점입니다. & 로그인 인터페이스의 느낌. 세션 쿠키가있는 SSO 시스템을 사용하면 자체 (가능성이 독점적 인) 방식으로 상태를 유지 관리하는 소유권을 가질 수 있습니다.