Единый вход через Интернет

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

На самом деле я не совсем уверен, правильно ли я использую этот термин - классическое определение SSO выглядит так: «после входа в систему у вас есть доступ к нескольким приложениям». Я ищу то, что позволяет иметь единый набор учетных данных для каждого пользователя для нескольких сайтов и веб-сервисов. Это не должно зависеть от внешних объектов, поэтому должна быть возможность запуска поставщика удостоверений на сервере организации.

Прежде чем я начал проводить исследования, я был убежден, что у меня есть базовое представление о том, как это работает. Прочитав несколько часов, я должен признать, что сбит с толку. Некоторые статьи в Интернете предупреждают, что SSO не следует путать с такими вещами, как OpenID. Однако в других местах OpenID Connect провозглашается будущим приложений единого входа. Он основан на протоколе OAuth2, который, как утверждается, настолько небезопасен, что один главный разработчик с криком убегает, но, похоже, все еще превратился в квазиотраслевой стандарт. И т.д., чем больше я читал, тем больше я запутался.

Также я не совсем уверен, может ли поставщик удостоверений обрабатывать разные уровни доступа или их нужно обрабатывать на уровне приложения. Мне нужно поместить пользователей в разные группы (им нужны разные разрешения на веб-сайтах — я думаю, какое разрешение относится к той группе, которая должна обрабатываться на уровне приложения).

Итак, вот мой список желаний:

  • Я ищу решение единого входа для нескольких веб-служб
  • нет внешнего провайдера, собственный хостинг
  • должен обрабатывать аутентификацию, а также управление пользователями (если это вообще возможно)
  • нужен как минимум PHP-клиент (и, возможно, Java)
  • Предпочтителен Open Source (из-за "бесплатно как на словах", а не "как в пиве" - есть бюджет)

На этом этапе я был бы уже рад некоторым общим намекам («да, OpenID Connect — это билет» или что-то в этом роде).

Некоторая информация, которая может исключить или принять некоторые решения. 1) Какой веб-сервер вы используете? Или, что более важно, вы используете серверы Windows? 2) Вы упомянули разные домены: независимо от ОС веб-сервера (ов), есть ли у доменов какая-либо форма доверительных отношений? 3) Какой бы ни была ОС любого веб-сервера (ов) или другого сервера (серверов), у пользователей вашей организации уже есть какие-то центральные полномочия пользователя (или полномочия с доверительными отношениями): наиболее распространенная ситуация заключается в том, что все в организация имеет учетную запись Windows для входа на свой компьютер.

Ответы (2)

OpenID

OpenID — отличное решение. Здесь есть несколько разных идей. Первой идеей был OpenID 1.0, который создан для авторизации и только для авторизации. Но по некоторым практическим причинам компании перешли на OAuth2, который предоставляет доступ, и они объединяют оба в OpenID Connect или просто используют OAuth2 в качестве системы аутентификации. Для справки вы можете посмотреть, какие системы используются для подключения к облачным API: http://passportjs.org/guide/providers/

Знаете ли вы, как управление пользователями/роли пользователей обрабатываются с помощью OpenId (то есть обрабатываются ли они вообще или OpenId просто проверяет подлинность, и приложение должно выяснить, к каким ресурсам может получить доступ пользователь)?

Посмотрите на Auth0 . In может обрабатывать аутентификацию, но также поддерживает авторизацию.

PS, я не аффилирован, но моя компания только что выбрала его, отсюда и подсказка