Огляд
Casdoor is a UI-first Identity Access Management (IAM) / Single-Sign-On (SSO) platform with a web UI that supports OAuth 2.0, OIDC, SAML, CAS, LDAP, SCIM, WebAuthn, TOTP, MFA, RADIUS, Google Workspace, Active Directory, and Kerberos.
Casdoor обслуговує як веб-інтерфейс, так і запити на вхід від користувачів додатків.
Функції Casdoor
Casdoor follows a frontend-backend separation architecture and is developed in Golang. It supports high concurrency, provides a web-based UI for management, and supports localization in over 10 languages.
Casdoor supports third-party application login options, such as GitHub, Google, QQ, and WeChat, and supports extending third-party login capabilities with plugins.
Casdoor підтримує управління авторизацією на основі Casbin. Він підтримує моделі контролю доступу ACL, RBAC, ABAC та RESTful.
Casdoor provides phone verification codes, email verification codes, and password retrieval functionality.
Casdoor supports auditing and recording of access logs.
Casdoor integrates with Alibaba Cloud, Tencent Cloud, and Qiniu Cloud for image CDN and cloud storage.
Casdoor дозволяє налаштування сторінок реєстрації, входу та відновлення пароля.
Casdoor supports integration with existing systems through database synchronization, enabling a smooth transition to Casdoor.
Casdoor supports mainstream databases such as MySQL, PostgreSQL, and SQL Server, and supports extending to new databases with plugins.
Як це працює

Крок 0 (Попередні знання)
- Casdoor дотримується процесу авторизації, побудованого на протоколі OAuth 2.0. We highly recommend gaining a brief understanding of how OAuth 2.0 works. Ви можете ознайомитися з цим вступом до OAuth 2.0.

Крок 1 (Запит на авторизацію)
Ваш додаток (який може бути веб-сайтом або будь-яким іншим додатком) повинен скласти URL у наступному форматі: endpoint/login/oauth/authorize?client_id=xxx&response_type=code&redirect_uri=xxx&scope=read&state=xxx. Replace endpoint with your Casdoor host URL and xxx with your own information.
Як заповнити частини xxx?
For
client_id: you can find this under each individual Application.Для
redirect_uri: ви повинні встановити це на URL-адресу зворотного виклику вашого додатка. Casdoor використовуватиме цю інформацію для надсилання відповіді після авторизації.Для
state: ви повинні заповнити це назвою вашого додатка.
Додаток запропонує користувачу: "Привіт, мені потрібні деякі ресурси, і мені потрібен ваш дозвіл на доступ до цих ресурсів. Чи можете ви перейти за цим URL і ввести своє ім'я користувача та пароль для мене?" З правильно складеним URL ваш додаток змусить користувача зробити запит на цей URL, і Запит на авторизацію завершено.
Цей крок простий: користувача перенаправляють на URL, складений на Кроці 1, і користувач побачить сторінку входу від Casdoor.
Крок 2 (Надання авторизації)
Вводячи правильне ім'я користувача та дані для входу на сторінку входу, Casdoor тепер знає особу користувача і готовий надіслати дві частини інформації назад на URL зворотного виклику, встановлений на Кроці 1: code та state. З цими двома частинами інформації, надісланими назад до вашого додатка, авторизація надається додатку, і Надання авторизації завершено.
The user opens the URL and provides credentials to Casdoor. Casdoor will say: "Looking good ~ this is the user (who is authorizing the Application to receive the code and state) I know in my database, and I will send the code and state back to the Application using the callback URL (redirect_uri)".
Casdoor також надає сторонні входи.
У цьому випадку, замість сторінки введення даних, ви побачите список сторонніх провайдерів. Ви можете увійти в свій додаток за допомогою цих провайдерів, з Casdoor як проміжним шаром (проміжне програмне забезпечення). You can log in to your app using these providers, with Casdoor acting as middleware.
Крок 3 (Надання авторизації)
Casdoor відповідає вашому додатку: "Знаєш що, цей code виглядає законно. Ти повинен бути правильним додатком. Ось access_token для тебе." З цим code, Casdoor підтверджує, що це авторизований додаток (авторизований правильним користувачем на Кроці 2), який намагається отримати access_token (який буде використовуватися пізніше для доступу до більшої кількості ресурсів). На цьому кроці ваш додаток каже: "Чудово! Я щойно отримав свіжий і смачний access_token. Тепер я можу використовувати його для доступу до чогось більш цінного від Resource Server!"
Крок 4 (Токен доступу)
Потім ваш додаток звертається до Resource Server і каже: "Привіт, друже, чи можеш ти перевірити цей access_token? Я отримав його від Casdoor. Чи хочеш ти перевірити, чи це правильний токен, який ти видав Casdoor?" You must be the authorized Application. І ось як Casdoor працює з вашим додатком.
Крок 5 (Токен доступу)
Casdoor може виступати як Authorization Server, так і Resource Server. I just got the fresh access_token. 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 |