Перейти к основному содержанию

Обзор

Casdoor - это платформа Identity Access Management (IAM) / Single-Sign-On (SSO) с веб-интерфейсом, поддерживающим OAuth 2.0, OIDC, SAML, CAS, LDAP, SCIM, WebAuthn, TOTP, MFA, RADIUS, Google Workspace, Active Directory и Kerberos.

Casdoor обслуживает как веб-интерфейс, так и запросы на вход от пользователей приложения.

Функции Casdoor

  1. Casdoor следует архитектуре разделения фронтенда и бэкенда, разработанной на Golang. Он поддерживает высокую конкуренцию, предоставляет веб-интерфейс для управления и поддерживает локализацию на 10+ языках.

  2. Casdoor поддерживает вход в сторонние приложения, такие как GitHub, Google, QQ и WeChat, и поддерживает расширение входа в сторонние приложения с помощью плагинов.

  3. Casdoor поддерживает управление авторизацией на основе Casbin. Он поддерживает ACL, RBAC, ABAC и модели контроля доступа RESTful.

  4. Casdoor предоставляет функции проверки кода по телефону, проверки кода по электронной почте и восстановления пароля.

  5. Casdoor поддерживает аудит и запись журналов доступа.

  6. Casdoor интегрируется с облачным хранилищем изображений Alibaba Cloud, Tencent Cloud и Qiniu Cloud.

  7. Casdoor позволяет настраивать страницы регистрации, входа и восстановления пароля.

  8. Casdoor поддерживает интеграцию с существующими системами посредством синхронизации баз данных, обеспечивая плавный переход на Casdoor.

  9. Casdoor поддерживает основные базы данных, такие как MySQL, PostgreSQL и SQL Server, и поддерживает расширение новых баз данных с помощью плагинов.

Как это работает

Принцип

Шаг 0 (Предварительные знания)

  1. 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, и Запрос авторизации будет выполнен.

Шаг 2 (Предоставление авторизации)

Этот шаг прост: пользователь перенаправляется на URL, составленный на шаге 1, и пользователь увидит страницу входа от Casdoor. Введя правильное имя пользователя и учетные данные на страницу входа, Casdoor теперь знает идентификацию пользователя и готов отправить два элемента информации обратно на URL обратного вызова, установленный на шаге 1: code и state.

Пользователь открывает URL и предоставляет учетные данные Casdoor. Casdoor скажет: "Выглядит хорошо ~ это пользователь (который авторизует приложение для получения code и state), которого я знаю в своей базе данных, и я отправлю code и state обратно в приложение с помощью URL обратного вызова (redirect_uri)".

С этими двумя элементами информации, отправленными обратно в ваше приложение, авторизация предоставляется приложению, и Предоставление авторизации завершено.

совет

Casdoor также предоставляет вход через сторонние приложения. В этом случае, вместо страницы ввода учетных данных, вы увидите список поставщиков сторонних приложений. Вы можете войти в свое приложение с помощью этих провайдеров, при этом Casdoor действует как промежуточный слой (промежуточное ПО).

Шаг 3 (Предоставление авторизации)

На этом шаге ваше приложение уже имеет код из шага 2, и оно обращается к Casdoor: "Эй, пользователь согласился дать мне code. Можете ли вы проверить этот code и дать мне access_token?"

Шаг 4 (Токен доступа)

Casdoor отвечает вашему приложению: "Знаешь что, этот code кажется подлинным. Вы должно быть правильное приложение. Вот access_token для вас." С этим code, Casdoor подтверждает, что это авторизованное приложение (авторизованное правильным пользователем на шаге 2), пытающееся получить access_token (который будет использоваться позже для доступа к большему количеству ресурсов).

Шаг 5 (Токен доступа)

На этом шаге ваше приложение говорит: "Отлично! Я только что получил свежий и вкусный access_token. Теперь я могу использовать его для доступа к более ценным ресурсам с Resource Server!"

Затем ваше приложение обращается к Resource Server и говорит: "Эй, приятель, можешь проверить этот access_token? Я получил его от Casdoor. Хотите проверить, является ли это правильным токеном, который вы выдали Casdoor?"

Шаг 6 (Защищенный ресурс)

Resource Server отвечает вашему приложению: "Неплохо. Он кажется таким же, как тот, что я выдал Casdoor, и Casdoor говорит, что тот, кто держит этот access_token, может получить доступ к этим Protected Resources. Так что давайте и возьмите его!"

И вот, в основном, как Casdoor работает с вашим приложением.

Подсказка

Casdoor может действовать как Authorization Server и Resource Server. Другими словами, Casdoor авторизует ваше приложение для доступа к ресурсам, обычно информации текущего зарегистрированного пользователя, из базы данных Casdoor.

Онлайн демо

Casdoor

Вот онлайн-демо, развернутое Casbin.

Вход для глобального администратора:

  • Имя пользователя: admin
  • Пароль: 123

Casbin-OA

Casbin-OA - одно из веб-приложений Casbin. Он использует Casdoor для аутентификации.

Casnode

Casnode - это официальный форум, разработанный сообществом Casbin.

Он использует Casdoor в качестве платформы аутентификации и управляет участниками.

Архитектура

Casdoor состоит из двух частей:

ИмяОписаниеЯзыкИсходный код
ФронтендВеб-интерфейс для CasdoorJavaScript + Reacthttps://github.com/casdoor/casdoor/tree/master/web
БэкендRESTful API бэкенд для CasdoorGolang + Beego + SQLhttps://github.com/casdoor/casdoor