Соответствует ли парадигма единого входа правилам протокола HTTP? - PullRequest
1 голос
/ 10 декабря 2011

Мы используем сервер CAS для веб-приложения JAVA. Система аутентификации выглядит следующим образом:

  • Пользователь пытается получить доступ к ресурсу (1) в системе
  • Получает перенаправления ( 302 найдено )
  • Пользователь вводит имя пользователя, пароль
  • Сервер отвечает cookie и перенаправляет на исходную страницу (1)

Я спорю о том, что это взаимодействие уважает протокол HTTP.

Если у меня нет авторизации для доступа к ресурсу разве система не должна отвечать 401 Unauthorized или, что еще лучше, 407 Proxy Authentication Required ?

А Ресурс Авторизации, не может быть вместо строки Cookie полным ключом авторизации уровня SSL?

Добавлено: Дамп заголовка с использованием curl -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

1 Ответ

0 голосов
/ 10 декабря 2011

Вы правы - система SSO в ваших примерах действительно находится на другом уровне, чем сам протокол HTTP.Если приложение вернуло 401, то сам браузер, скорее всего, будет обрабатывать аутентификацию (например: запросить у пользователя имя пользователя / пароль, а затем отправить следующий запрос с этим base-64, закодированным в заголовке HTTP-авторизации).В случае базовой аутентификации HTTP имя пользователя и пароль будут отправляться с каждым запросом к вашей системе.Вы можете выполнить аутентификацию с помощью Kerberos или NTLM, и в этом случае аутентификация может быть прозрачной, если пользователь уже вошел в сеть.

При этом многие системы единого входа применяют подход перенаправления пользователя в HTML-код входаформы, а затем поддерживая состояние сеанса с помощью cookie.Одним из основных преимуществ является более полный контроль над интерфейсом входа в систему.С системой единого входа, имеющей файл cookie сеанса, она может взять на себя ответственность за поддержание состояния собственным (вероятно, проприетарным) способом.

...