Как выполнить единый вход между двумя веб-службами в интрасети?

#web-services #single-sign-on

#веб-службы #единый вход

Вопрос:

Две веб-службы (rest) запущены на отдельных экземплярах JVM со своей собственной аутентификацией.

Службы используются при входе внешнего пользователя, сервер2 предназначен для службы поддержки клиентов. После входа в систему для внешнего использования он может вызвать server2 для запроса. И наоборот, после того, как сотрудник службы поддержки клиентов войдет в server2, он также может вызвать server1 для изменения профиля внешнего пользователя.

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

Спасибо

Ответ №1:

У меня был хороший опыт работы с JOSSO:

  • Настройка относительно проста (шлюз и партнерские приложения)
  • Не навязчивый (для работы вашего приложения с ним не требуется больших изменений)
  • На основе JAAS
  • Поддерживает различные хранилища (LDAP, XML, DB …)
  • Работает с Java, PHP и ASP (мы используем Java и PHP в нашей компании, и это работает безупречно)

Комментарии:

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

2. Я хотел бы использовать JOSSO / CAS в качестве резервного плана. Спасибо

Ответ №2:

У вас есть много разных вариантов:

  • Вы могли бы внедрить свою собственную систему аутентификации. Это было бы именно то, что вам нужно, но вы можете отладить это самостоятельно.

  • Вы могли бы развернуть Kerberos. Немного старомодно, но это четко отличает серверы входа от серверов доверия.

  • Если вы уже работаете в среде с большим количеством MS, Active Directory может быть просто инструментом.

  • OpenID — новенький в блоке; используется StackOverflow 🙂 но реализации серверов и клиентов может быть сложнее найти.

  • LDAP — это простой способ получить доступ к службам каталогов всего сайта; на самом деле проверка подлинности с его помощью может потребовать немного больше работы. (Именно поэтому Active Directory так популярна, как есть — объединение LDAP с Kerberos в один механизм для аутентификации и авторизации на уровне всего сайта. Аккуратно.)

Комментарии:

1. В моем сценарии одна служба использует LDAP, а другая — DB. Это звучит как типичный случай единого входа, однако я не уверен, что производительность достаточна для использования стека технологий веб-единого входа. Kerberos звучит неплохо, если я создаю его бесплатным.