2016-08-25 3 views
0

У меня есть несколько веб-приложений, которые общаются друг с другом с помощью Restful web-сервисов. Связь между приложениями небезопасна (не реализована аутентификация/авторизация).SSO для безопасности на основе безопасности для нескольких веб-приложений

Я хочу создать новое приложение, которое будет действовать как сервер аутентификации для всех других приложений, что означает, что любой запрос, поступающий в любое приложение, будет аутентифицирован сервером аутентификации первым и после успешной аутентификации сервер вернет токен или приложите файл cookie, чтобы запросить дальнейшую связь.

Я рассматриваю возможность использования Spring безопасности для реализации сервера аутентификации.

Кроме того, я хочу создать клиент с использованием весенней безопасности, который будет интегрирован с другим приложением для взаимодействия с сервером аутентификации.

Как достичь этого?

Ниже приводится схематическое представление постановки задачи enter image description here

ответ

2

одна важная вещь, чтобы отметить, что аутентификация и управление сеансами разные вопросы, и вы хотите, чтобы принять во внимание при проектировании системы.

Аутентификация состоит в ответе на вопрос «Кто вы? Вы действительно являетесь тем, кем вы утверждаете?». Обычно это делается либо тем, что пользователь имеет (например, частный ключ), то, что пользователь знает (например, пароль), или что-то, что пользователь (например, отпечаток пальца).

Управление сеансом - это другой вопрос. После аутентификации пользователя вам необходимо привязать этот аутентифицированный идентификатор к нескольким вызовам с течением времени. Что-то вроде SSH, это встроено в протокол. Тем не менее, HTTP не имеет статуса, поэтому вам нужно создать какое-то переданное состояние (например, куки), которое отслеживает эту идентификацию с течением времени.

Для необработанного сервера аутентификации вы можете посмотреть в OpenId Connect Protocol. Это, по сути, расширение OAuth, предназначенное для борьбы с идентичностью. Кроме того, обязательно прочитайте OWASP Authentication Cheat Sheet.

Для управления сеансом OWASP Session Management Cheat Sheet является полезным ресурсом.

1

SSO может обрабатываться несколькими протоколами: CAS, SAML, OpenID Connect и даже OAuth.

Я бы не создать новое приложение, чтобы сделать это, но выбрать существующую реализацию и правильно настроить его (Примеры:. https://www.apereo.org/projects/cas, https://github.com/mitreid-connect/OpenID-Connect-Java-Spring-Server..)

Учитывая у вас есть взаимодействие пользовательского интерфейса и приложения для взаимодействия приложений, OpenID Connect является хороший выбор, см. превосходную презентацию: https://vimeo.com/113604459

И spring-security-pac4j может работать со всеми этими протоколами.