2017-02-20 3 views
0

Я планирую использовать 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.

Вопросы

  1. Мне нужно хранить пользователя в обоих SP1 и SP2 ли? Если нет, то как я могу обрабатывать все функции, специфичные для конкретной роли.
  2. Если нет, то как мне инициализировать сеанс пользователя и назначить специальные роли SP? на основе атрибутов SAML?

ответ

1

У SAMLv2 нет концепции авторизации, это технология для безопакового веб-единого входа. XACML будет основанной на стандартах технологией для авторизации/мелкозернистого контроля доступа/права.

Большинство приложений не имеют возможности отображать внутреннюю систему RBAC на что-то внешнее.

Если вы полагаетесь на информацию в утверждении SAML, например, на инструкции атрибутов (как правило, это делается), вам необходимо каким-то образом сопоставить значения атрибутов с ролями вашего приложения. Если приложение не может быть изменено для реализации такого сопоставления, вам необходимо каким-то образом указать идентификаторы и роли.

Обычно реализации IdP позволяют указывать разные сопоставления атрибутов для объекта SAML SP.

+0

Хорошо. Я понял, что SAMLv2 не имеет понятия авторизации. Я буду исследовать больше на XACML с помощью simplesamlphp. –

Смежные вопросы