Кейс: Создание мультитенантности с Logto Organizations
Узнайте, как настроить надежную и масштабируемую основу идентификации для мультитенантности с Logto Organizations.
Сегодня мультитенантность становится важной частью приложения или SaaS. Это часто включает в себя сложные отношения между пользователями, организациями, ролями и разрешениями. Например, пользователь может быть участником нескольких организаций, и наоборот; пользователь также может иметь разные роли в разных организациях.
Проблема
Это может привести к головной боли не только в начале, но и при долгосрочной поддержке приложения. Традиционная модель ролевого управления доступом (RBAC) может частично решить эту пробле му, но быстро становится кошмаром, когда количество пользователей и организаций растет.
Например, в начале у вас может быть только две роли в каждой организации: admin
и member
. Когда у вас есть 10 организаций, вы будете управлять 20 ролями; когда у вас есть 1,000 организаций, вы будете управлять 2,000 ролей.
С ростом бизнеса, вам может понадобиться добавить больше ролей, таких как guest
, developer
и т.д. Сложность модели RBAC будет расти в геометрической прогрессии.
У нас была та же проблема, когда мы строили Logto Cloud. Мы вскоре поняли, что это распространенная проблема для отрасли, и нам нужно решить её. И Logto Organizations приходит на помощь.
Шаблон организации
Быстрый вопрос: почему SaaS-приложения являются SaaS? Мы считаем, что масштабируемость является одной из самых важных причин. Другими словами, что работает для одного клиента, должно работать для всех клиентов.
Это приводит к концепции "шаблон организации". Шаблон организации — это план модели управления доступом для каждой организации: он определяет роли и разрешения, применимые ко всем организациям.
Скажем, у нас есть две роли для каждой организации:
admin
: может управлять организацией, включая добавление / удаление участников, изменение ролей и т.д.member
: может получать доступ к ресурсам организации и приглашать новых участников.
Мы можем создать шаблон организации со следующей конфигурацией:
Добавление пользователей в организации
После настройки шаблона организации, управление пользователями становится легким и естественным. Вы можете добавить пользователя в организацию через Logto Console (веб-UI) или через Logto Management API.
Смотрите Настройка организаций для получения дополнительной информации.
Мы добавили две организации со следующей настройкой:
- Организация A: и Алиса, и Боб являются участниками. Алиса имеет роль
admin
, а Боб — рольmember
. - Организация B: только Алиса является участником, и у нее роль
member
.
Запрос токенов организаций в вашем приложении
Теперь в вашем клиентском приложении вы можете запросить токен доступа к организации (токен организации) от Logto. Токен организации — это JWT токен, который содержит необходимую информацию для вашей службы, чтобы проверить, есть ли у пользователя разрешение в организации.
Подробные шаги запроса токена организации описаны в Интеграция организаций с вашим приложением.
Предположим, что Алиса вошла в ваше приложение и хочет удалить пользователя в Организации A. Ваше приложение может запросить токен организации для "Организации A" с разрешением remove:member
(область действия). Logto проверит, есть ли у Алисы разрешение в организации, и вернет токен организации, так как у нее роль admin
:
Вот некоторые примеры ошибок:
- Если Боб захочет удалить пользователя в Организации A, Logto вернет ошибку, поскольку у него нет роли
admin
в Организации A. - Если Алиса захочет удалить пользователя в Организации B, Logto также вернет ошибку, так как у неё нет роли
admin
в Организации B. - Если Боб захочет получить токен организации с любым разрешением в Организации B, Logto вернет ошибку, так как у него нет членства в Организации B.
После получения вашим приложением токена организации, оно может вызвать вашу службу с этим токеном, добавив его в заголовок Authorization
.
Проверка токенов организаций в вашей службе
В вашей службе вы можете проверить токен организации стандартным процессом верификации JWT. Подробнее читайте в статье Проверка токенов организаций.
Обновление шаблона организации
Когда вам необходимо обновить шаблон организации, например, добавить новую роль под названием developer
, вы можете сделать это в Logto Console или через Logto Management API. Изменение автоматически применится ко всем организациям без какого-либо простоя.
Заключение
С Logto Organizations управление и масштабирование мультитенантности становится стандартным и комфортным. Вы можете сосредоточиться на бизнес-логике и оставить идентификацию и управление доступом Logto.