Выдача прав при идентификации

Всё про контроль доступа пользователей: фильтры, RBAC, проверки
Ответить
mozgovoy
Сообщения: 8
Зарегистрирован: 2014.12.29, 15:35

Выдача прав при идентификации

Сообщение mozgovoy » 2017.04.24, 17:11

Продублирую свой вопрос в этом разделе более подходящем по тематике...
Начало истории тут: viewtopic.php?f=19&t=42821

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

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

К примеру домены:
site.ru
one.site.ru
two.site.ru
three.site.ru
И соответственно пользователи One Two Three

(если пользователь владелец - может делать всё на домене, если подписан - может читать комменты к постам и оставлять посты их, если не подписан - комменты к постам не видит, на усмотрение Владельца домена подписанным пользователям могут быть выделены дополнительные права, к примеру возможность писать посты или удалять комментарии)

на one.site.ru One - владелец, Two-подписан (при этом может писать посты т.к. One ему выдал разрешение), Three - подписан но без дополнительных разрешений от One (может лишь читать и писать комменты)

В итоге хочу добавить Single Sign On и в итоге к примеру если
One авторизовался на сайте site.ru и подписан на домене three.site.ru
Two авторизовался допустим на two.site.ru но не подписан на three.site.ru
Guest - обычный гость нигде не авторизован и вобще с поиска попал на three.site.ru
Далее по сценарию должно быть так при входе на three.site.ru:
One видит меню пользователя и соответственно может делать всё что разрешено подписавшемуся + то что разрешил Владелец
Two видит кнопку подписаться и нажав её видит меню (так же как One)
Guest - Может зарегистрироваться или авторизоваться, при регистрации автоматически подписывается

Сам вопрос в том где и в какой момент наделять этих пользователей правами ...
Я пока думаю про момент идентификации .... И не знаю... запихнуть это к примеру в findIdentity()
Ну и по системе авторизации может кто подскажет как это красивее/правильнее сделать согласно данным условиям

Аватара пользователя
maleks
Сообщения: 1764
Зарегистрирован: 2012.12.26, 12:56

Re: Выдача прав при идентификации

Сообщение maleks » 2017.04.25, 11:12

mozgovoy писал(а):
2017.04.24, 17:11
И выдача прав. Нормально ли всякий раз при идентификации пользователя в системе назначать права?
Аутентификация для всех поддоменов общая, но права при этом должны быть разные на различных поддоменах.
На лету права/роли ассоциируют обычно в самых простых случаях, по какому нибудь полю с ролью пользователя в таблице пользователей.
А у вас сложная система, со многими правами, и когда одни пользователи могут назначать права другим.
Плюс права у вас динамические, в зависимости от появления нового "поддомена" в систему должны добавляться права для него.
Все разрешения не как то "на лету", а как по умолчанию - в Assignments хранилище
Для всего этого надо выбирать тот rbac что сохраняет в базе, ,он все такое позволяет реализовать.

mozgovoy
Сообщения: 8
Зарегистрирован: 2014.12.29, 15:35

Re: Выдача прав при идентификации

Сообщение mozgovoy » 2017.04.25, 12:59

maleks писал(а):
2017.04.25, 11:12
На лету права/роли ассоциируют обычно в самых простых случаях, по какому нибудь полю с ролью пользователя в таблице пользователей.
У меня в любом случае будет таблица user_subscribe в которой можно будет сохранить роль к примеру будет user_id|domen_id|role
Думал про такую реализацию....
maleks писал(а):
2017.04.25, 11:12
А у вас сложная система, со многими правами, и когда одни пользователи могут назначать права другим.
Плюс права у вас динамические, в зависимости от появления нового "поддомена" в систему должны добавляться права для него.
Все разрешения не как то "на лету", а как по умолчанию - в Assignments хранилище
Для всего этого надо выбирать тот rbac что сохраняет в базе, ,он все такое позволяет реализовать.
Вы предлагаете не переопределять Роль/право для пользователя к примеру moderate_comment (что мне и не нравилось) А сохранять в базу Роли/права для домена к примеру по формату domen_moderate_comment

Минус при создании домена нового, а они будут постоянно добавляться. придется добавлять роли для для всех пользователей...
А если их 100000 это не малый такой инсерт будет....
Как вариант опять же добавлять даже дефолтную роль только когда пользователь заходит на данный момент. (потому что большинство из этих 100000 никогда и не узнают про какой либо домен)

Аватара пользователя
maleks
Сообщения: 1764
Зарегистрирован: 2012.12.26, 12:56

Re: Выдача прав при идентификации

Сообщение maleks » 2017.04.25, 14:00

mozgovoy писал(а):
2017.04.25, 12:59
Минус при создании домена нового, а они будут постоянно добавляться. придется добавлять роли для для всех пользователей...
А если их 100000 это не малый такой инсерт будет....
Зачем и какие роли для всех пользователей добавлять?
Думайте не ролями, думайте разрешениями.

mozgovoy
Сообщения: 8
Зарегистрирован: 2014.12.29, 15:35

Re: Выдача прав при идентификации

Сообщение mozgovoy » 2017.04.25, 16:40

maleks писал(а):
2017.04.25, 14:00
Зачем и какие роли для всех пользователей добавлять?
Думайте не ролями, думайте разрешениями.
Я прекрасно понимаю про разрешения просто надоело писать "Роль/право" поэтому и сократил до роли. К тому же в данном случае для нового домена наверное всё же делать привязку на базе какой то дефолтной роли с подготовленным списком разрешений всё же удобнее будет...

Ответить