Я планирую использовать simplesamlphp как IdP. Я имею разумную сумму пользовательской базы данных, которая «может» обмениваться 5 различными приложениями.SSO. Нужно ли всегда сохранять базу данных пользователей в IdP и SP в случае ролевого приложения.
В настоящее время пользователь должен зайти в каждое приложение и указать имя пользователя и пароль, которые, безусловно, не то, что я хотел. Решение состоит в том, чтобы сохранить отдельный сервер аутентификации и использовать SSO для обслуживания 5 различных приложений (в качестве поставщика услуг).
Хотя приложение может совместно использовать одну и ту же пользовательскую базу данных, но службы полностью разные, и они в значительной степени зависят от ролей пользователей. Давайте возьмем пример из двух приложений: SP1 и SP2
SP1 - это система, основанная на laravel и основанная на ролях. В любой момент времени один пользователь может иметь 5-6 ролей, в зависимости от того, какое приложение выполняет/предоставляет информацию.
SP2 совершенно другой, это может быть просто сайт блога в drupal, где мы хотим собрать пользовательские данные, которые есть. Здесь у нас будут минимальные требования к роли.
Когда пользователь приходит на SP1 и пытается получить ограниченную страницу, тогда они перенаправляются на IdP, который может аутентифицировать пользователя. Если пользователь не существует в IdP, он вернет false; в противном случае возвращается к SP1 с некоторыми соответствующими атрибутами. Предположим, для SP1 это новый пользователь, у нас есть возможность сохранить этого пользователя в базе данных SP1 (на самом деле мы должны привязать этого пользователя с конкретной ролью SP1), но затем мы сохраняем пользователя в двух местах: IdP и SP1.
... И то же самое касается SP2. В этом случае мы сохраняем пользователя всего в 3 местах: IdP, SP1 и SP2. Единственное, что у нас получилось, - это то, что пользователю не нужно вводить имя пользователя и пароль на SP2, который автоматически обрабатывается нашим IdP.
Вопросы
- Мне нужно хранить пользователя в обоих SP1 и SP2 ли? Если нет, то как я могу обрабатывать все функции, специфичные для конкретной роли.
- Если нет, то как мне инициализировать сеанс пользователя и назначить специальные роли SP? на основе атрибутов SAML?
Хорошо. Я понял, что SAMLv2 не имеет понятия авторизации. Я буду исследовать больше на XACML с помощью simplesamlphp. –