Объяснение многопользовательской модели Logto
Посмотрите, как мы разработали многопользовательскую модель Logto и какие преимущества она дает для приложений SaaS.
Путаница
Вы могли слышать о продуктах, которые используют термин «многопользовательская система», подразумевая изоляцию идентичностей: каждый арендатор имеет свой набор пользователей, ролей, разрешений и данных.
Это может показаться нелогичным, но на самом деле, «многопользовательская система» обозначает противоположное: несколько арендаторов разделяют ресурсы в одной инстанции. Для пользователей идентичность в приложении подобна водительскому удостоверению. Например, с одним водительским удостоверением вы можете водить в разных штатах (одна идентичность для нескольких организаций), вместо того, чтобы подавать заявку на новое удостоверение для каждого штата.
Модель Logto
В Logto мы заметили эту путаницу в начале нашего проектирования и стремились сделать всё правильно для ваших приложений и ваших пользователей. Вот наша модель:
- Арендатор может рассматриваться как одна инстанция Logto, которая имеет свой набор пользователей, разрешений и данных.
- Внутри арендатора может быть несколько организаций. Пользователь может быть членом нескольких организаций.
- Для каждой организации применяется модель управления доступом на основе ролей (RBAC) и и спользуется одинаковый набор ролей и разрешений организации. Этот набор называется шаблон организации.
- Роли и разрешения организации действительны только в контексте организации.
- Например, пользователь может быть «администратором» (роль) в одной организации, но «участником» (роль) в другой организации.
- Без контекста организации, роли и разрешения организации не имеют смысла.
- Используйте разрешения организации для управления доступом внутри организации, вместо ролей организации.
Эта модель обеспечивает гибкость и возможность повторного использования для управления идентичностями, особенно для приложений SaaS. Если мы взглянем на популярные приложения SaaS, мы увидим, что они все могут вписаться в эту модель. Термин «организация» может отличаться в разных приложениях, например, «рабочая область», «команда» и т.д., но концепция остается той же.
Например, в Notion (популярный инструмент для совместной работы):
- Вы можете создать и присоединиться к нескольким рабочим областям с одной учетной записью, вместо регистрации для каждой рабочей области с разными учетными записями.
- Для каждой рабочей области Notion определяет одинаковый набор у ровней доступа: «владелец рабочей области» и «участник», хотя вы могли бы ожидать разные уровни доступа для разных рабочих областей.
Таким образом, пользователи могут легко переключаться между рабочими областями, не меняя учетные записи и не входя заново, сохраняя изоляцию между рабочими областями. Переводя это на модель Logto, это означает:
- Шаблон организации определяет две роли: «владелец» и «участник».
- Если пользователь присоединился к рабочей области, это значит, что пользователь является членом организации и имеет роль «участник» в организации.
- Если пользователь создал рабочую область, это значит, что пользователь является членом организации и имеет роль «владелец» в организации.
В зависимости от ролей пользователь может иметь разные разрешения в разных рабочих областях (организациях).
Преимущества
Пользовательский опыт
Для пользователей это позволяет наслаждаться настоящим опытом единого входа. Переключение между организациями так же просто, как переключение между вкладками.
Повторное использование
Одно из преимуществ приложений SaaS заключается в том, что они стандартизированы и масштабируемы. Например, создавать новую рабочую область в Notion можно всего за несколько кликов, и она готова к использованию.
Когда ваше приложение растет, возможно, вы захотите добавить больше ролей и разрешений в каждую организацию. Например, новая роль «гость» и новое разрешение «пригласить:гостя». Это может стать кошмаром, если вам потребуется обновлять каждую существующую организацию по отдельности.
С Logto вы можете обновить шаблон организации, и все существующие организации будут автоматически обновлены.
Одна модель управления доступом, множественные сценарии использования
В Logto мы используем одну и ту же модель управления доступом (RBAC) как для организаций, так и для API-ресурсов. Это означает, что вам не нужно изучать новую модель управления доступом, если вы знакомы с RBAC. Тем временем, они изолированы друг от друга, так что вы можете использовать их для различных сценариев использования.
Самая интересная часть заключается в том, что вы можете использовать их одновременно. Давайте расширим пример с Notion:
- Для доступа к рабочим областям вы можете использовать организационный RBAC Logto.
- Для доступа и обновления ресурсов на уровне учетной записи (таких как профиль и информация о платежах) вы мож ете использовать RBAC для API-ресурсов Logto.
Большинство SDK Logto поддерживают оба типа RBAC.
Различия
Организационный RBAC и RBAC для API-ресурсов различаются по следующим аспектам:
- Организационный RBAC требует контекста организации, тогда как RBAC для API-ресурсов не требует.
- Организационный RBAC используется для управления доступом в рамках организации, а RBAC для API-ресурсов используется для управления доступом к API-ресурсам.
- Пользователь может иметь разные организационные роли в разных организациях, тогда как роли для API-ресурсов универсальны в арендаторе.
- Роли и разрешения изолированы между этими двумя типами RBAC.
Заключительные заметки
Создание SaaS-приложения сложно, и мы надеемся, что Logto поможет вам сосредоточиться на вашем основном бизнесе. Не стесняйтесь давать нам обратную связь, если у вас есть вопросы или предложения.