Realnewbie
@Realnewbie
Самоучка

Делаю single sign on. Правильно ли я настраиваю авторизацию?

Всем привет.

Преамбула:
Есть несколько PHP проектов. У каждого проекта в данное время есть своя таблица юзеров в которой: id, логин, пароль, роль. Никаких сложных ACL нет, грубо говоря всего 3 роли. Админ, менеджер, юзер. Проверяются с помощью контроллера и префиксов.

Требуется сделать единую аутентификацию = общую базу с пользователями и паролями. Возможность зайти на одном сайте и оказаться залогиненным на всех остальных
Но вопрос не по аутентификации. Будем считать, что оно работает.

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

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

Мне видится решение такое: в общей базе храним логины/пароли. Но у каждого проекта всё равно оставляем таблицу users где будет id и роль.
Так нормально или криво?

Спасибо.
  • Вопрос задан
  • 446 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Вопервых они не должны смотреть в общую базу, они все должны быть связаны с отдельным сервером авторизации.

Посмотрите как эту проблему решили в OAuth. Там просто за пользователем для конкретного ресурса закрепляются свои права.

то есть алгоритм такой:

- авторизуем чувака на сервере авторизации и получаем токен
- по токену получаем права доступные для определенного приложения. если у вас нет контроля за всеми приложениями можно для каждого еще приватный токен держать что бы одна апа не могла изменять права другой апы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
scherbuk
@scherbuk
а почему нельзя хранить отдельно?
login|pass|progect_1_role|progect_2_role|progect_3_role|...|progect_n_role|
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы