Огляд
Casdoor - це платформа управління ідентичністю (IAM) / одноразового входу (SSO) з орієнтацією на користувацький інтерфейс з веб-UI, яка підтримує OAuth 2.0, OIDC, SAML, CAS, LDAP, SCIM, WebAuthn, TOTP, MFA, RADIUS, Google Workspace, Active Directory та Kerberos.
Casdoor обслуговує як веб-інтерфейс, так і запити на вхід від користувачів додатків.
Функції Casdoor
Casdoor дотримується архітектури з розділенням фронтенду та бекенду, розробленої на Golang. Він підтримує високу конкурентоспроможність, надає веб-інтерфейс для управління та підтримує локалізацію на 10+ мовах.
Casdoor підтримує вхід через сторонні додатки, такі як GitHub, Google, QQ та WeChat, і підтримує розширення стороннього входу за допомогою плагінів.
Casdoor підтримує управління авторизацією на основі Casbin. Він підтримує моделі контролю доступу ACL, RBAC, ABAC та RESTful.
Casdoor надає функції перевірки телефонного коду, електронного коду та відновлення пароля.
Casdoor підтримує аудит та запис логів доступу.
Casdoor інтегрується з хмарними сховищами Alibaba Cloud, Tencent Cloud та Qiniu Cloud image CDN.
Casdoor дозволяє налаштування сторінок реєстрації, входу та відновлення пароля.
Casdoor підтримує інтеграцію з існуючими системами за допомогою синхронізації баз даних, забезпечуючи плавний перехід на Casdoor.
Casdoor підтримує основні бази даних, такі як MySQL, PostgreSQL та SQL Server, і підтримує розширення нових баз даних за допомогою плагінів.
Як це працює
Крок 0 (Попередні знання)
- Casdoor дотримується процесу авторизації, побудованого на протоколі OAuth 2.0. Настійно рекомендується мати коротке розуміння того, як працює OAuth 2.0. Ви можете ознайомитися з цим вступом до OAuth 2.0.
Крок 1 (Запит на авторизацію)
Ваш додаток (який може бути веб-сайтом або будь-яким іншим додатком) повинен скласти URL у наступному форматі: endpoint/login/oauth/authorize?client_id=xxx&response_type=code&redirect_uri=xxx&scope=read&state=xxx
. Замініть endpoint
на URL-адресу хоста вашого Casdoor і xxx
на вашу власну інформацію.
Як заповнити частини xxx
?
Для
client_id
: ви можете знайти це під кожним окремим додаткомДля
redirect_uri
: ви повинні встановити це на URL-адресу зворотного виклику вашого додатка. Casdoor використовуватиме цю інформацію для надсилання відповіді після авторизації.Для
state
: ви повинні заповнити це назвою вашого додатка.
Додаток запропонує користувачу: "Привіт, мені потрібні деякі ресурси, і мені потрібен ваш дозвіл на доступ до цих ресурсів. Чи можете ви перейти за цим URL і ввести своє ім'я користувача та пароль для мене?" З правильно складеним URL ваш додаток змусить користувача зробити запит на цей URL, і Запит на авторизацію
завершено.
Цей крок простий: користувача перенаправляють на URL, складений на Кроці 1, і користувач побачить сторінку входу від Casdoor.
Крок 2 (Надання авторизації)
Вводячи правильне ім'я користувача та дані для входу на сторінку входу, Casdoor тепер знає особу користувача і готовий надіслати дві частини інформації назад на URL зворотного виклику, встановлений на Кроці 1: code
та state
. З цими двома частинами інформації, надісланими назад до вашого додатка, авторизація надається додатку, і Надання авторизації
завершено.
Користувач відкриває URL і вводить свої дані для входу в Casdoor. Casdoor скаже: "Виглядає добре ~ це користувач (який надає додатку дозвіл отримати code
та state
) якого я знаю у своїй базі даних, і я відправлю code
та state
назад до додатку використовуючи URL для зворотного виклику (redirect_uri
)."
Casdoor також надає сторонні входи.
У цьому випадку, замість сторінки введення даних, ви побачите список сторонніх провайдерів. Ви можете увійти в свій додаток за допомогою цих провайдерів, з Casdoor як проміжним шаром (проміжне програмне забезпечення). На цьому кроці ваш додаток вже має код з Кроку 2, і він звертається до Casdoor: "Привіт, користувач погодився дати мені code
. Чи можете ви перевірити цей code
і дати мені access_token
?"
Крок 3 (Надання авторизації)
Casdoor відповідає вашому додатку: "Знаєш що, цей code
виглядає законно. Ти повинен бути правильним додатком. Ось access_token
для тебе." З цим code
, Casdoor підтверджує, що це авторизований додаток (авторизований правильним користувачем на Кроці 2), який намагається отримати access_token
(який буде використовуватися пізніше для доступу до більшої кількості ресурсів). На цьому кроці ваш додаток каже: "Чудово! Я щойно отримав свіжий і смачний access_token
. Тепер я можу використовувати його для доступу до чогось більш цінного від Resource Server
!"
Крок 4 (Токен доступу)
Потім ваш додаток звертається до Resource Server
і каже: "Привіт, друже, чи можеш ти перевірити цей access_token
? Я отримав його від Casdoor. Чи хочеш ти перевірити, чи це правильний токен, який ти видав Casdoor?" Resource Server
відповідає вашому додатку: "Непогано. Він виглядає саме так, як я видав Casdoor, і Casdoor каже, що той, хто тримає цей access_token
, може отримати доступ до цих Protected Resources
. Так що йди і бери його!" І ось як Casdoor працює з вашим додатком.
Крок 5 (Токен доступу)
Casdoor може виступати як Authorization Server
, так і Resource Server
. Іншими словами, Casdoor авторизує ваш додаток для доступу до ресурсів, зазвичай інформації про поточного користувача, з бази даних Casdoor. Casbin-OA - один з веб-додатків Casbin.
Він використовує Casdoor для аутентифікації. Casnode - офіційний форум, розроблений спільнотою Casbin. Він використовує Casdoor як платформу аутентифікації та управління членами.
Крок 6 (Захищений ресурс)
Casdoor складається з двох частин: Casdoor скаже: "Виглядає добре ~ це користувач (який авторизує додаток для отримання code
та state
), якого я знаю у своїй базі даних, і я надішлю code
та state
назад до додатку, використовуючи URL зворотного виклику (redirect_uri
)". https://github.com/casdoor/casdoor/tree/master/web
https://github.com/casdoor/casdoor
Casdoor - це платформа управління ідентичністю (IAM) / одноразового входу (SSO) з веб-інтерфейсом, яка підтримує OAuth 2.0, OIDC, SAML, CAS, LDAP, SCIM, WebAuthn, TOTP, MFA, RADIUS, Google Workspace, Active Directory та Kerberos. Іншими словами, Casdoor надає вашому додатку дозвіл на доступ до ресурсів, зазвичай це інформація про поточного користувача, з бази даних Casdoor.
Онлайн-демонстрація
Casdoor
Ось онлайн-демонстрація, розгорнута Casbin.
Вхід для глобального адміністратора:
- Ім'я користувача:
admin
- Пароль:
123
Casbin-OA
Casbin-OA є одним з веб-додатків Casbin. Він використовує Casdoor для аутентифікації.
- Casbin-OA
- Вихідний код: https://github.com/casbin/casbin-oa
Casnode
Casnode - це офіційний форум, розроблений спільнотою Casbin.
Він використовує Casdoor як платформу аутентифікації та управління членами.
- Casnode
- Вихідний код: https://github.com/casbin/casnode
Архітектура
Casdoor складається з двох частин:
Назва | Опис | Мова | Вихідний код |
---|---|---|---|
Фронтенд | Веб-фронтенд UI для Casdoor | JavaScript + React | https://github.com/casdoor/casdoor/tree/master/web |
Бекенд | RESTful API бекенд для Casdoor | Golang + Beego + SQL | https://github.com/casdoor/casdoor |