簡介
Casdoor 是一個基於 OAuth 2.0 / OIDC 的中心化的單點登入(SSO)身份驗證平臺,簡單來說,就是 Casdoor 可以幫你解決使用者管理的難題,你無需開發使用者登入、註冊等與使用者鑑權相關的一系列功能,只需幾個步驟進行簡單配置,與你的主應用配合,便可完全託管你的使用者模組,簡單省心,功能強大。Casdoor 目前作為 Casbin 社群專案統一使用的鑑權平臺,並且專案已開源。
倉庫地址:https://github.com/casbin/casdoor
官網文件:https://casdoor.org/
為什麼要用 Casdoor?
使用者管理一直是專案中非常令人頭疼的一個問題,不僅要確保安全性,功能是否完整,方便使用也十分重要。目前大多數應用已從過去單一的賬號密碼登入,逐漸升級為允許通過第三方平臺登入,例如 GitHub 、微信、QQ 等,但是這一套邏輯依然需要開發者去實現,大多數功能偏離了業務。
Casdoor 就是替開發者們解決這個難題,即提供一套統一的鑑權平臺,只需要簡單配置便可完全託管使用者模組,功能完備,配置簡單,上手難度低。它具有以下特性:
- 前後端分離的架構,前端使用react,後端使用 Go 語言開發,Casdoor 支援高併發,提供基於Web的使用者管理 UI,並支援中、英等多種語言
-
Casdoor 支援 Github, Google, QQ, WeChat, Facebook, Gitee 等第三方應用程式登入,並支援使用外掛擴充套件第三方登入
-
使用 Casbin 基於授權管理,Casdoor 支援 ACL, RBAC, ABAC, RESTful 等訪問控制模型
-
個性化的註冊、登入和忘記密碼頁面。支援手機驗證碼、郵件驗證碼、找回密碼等功能
-
使用阿里雲、騰訊雲、七牛雲提供的圖片CDN雲端儲存
-
Casdoor 支援使用 db 同步方法與現有系統的整合,使用者可以順利過渡到Casdoor
-
Casdoor 支援的主流資料庫: MySQL, SQL Server, PostgreSQL 等, 並支援擴充套件外掛的新資料庫
工作原理
首先,Casdoor 的授權程式建立在 OAuth 2 的基礎上:OAuth 2 是一個工業級別的開發授權協議,可以使使用者授權第三方網站/應用訪問他們在特定網站上的資訊,而不必向第三方網站/應用提供密碼。
整個過程如下圖所示,一共分成六個步驟:向使用者傳送授權請求、獲得授權認證、向授權伺服器傳送授權認證並驗證、獲取訪問令牌、給資源伺服器傳送訪問令牌、獲得受保護的資源。
如何連線到Casdoor?
作為服務提供商(SP),Casdoor 支援兩項認證協議:OAuth 2.0 (OIDC) 和 SAML;作為身份提供商 (Idp),Casdoor 也支援兩個認證協議:OAuth 2.0 (OIDC) 和 CAS 2.0。
因此,您的應用程式將通過 OAuth 2.0 (OIDC) 與 Casdoor 連線。 具體而言,有三種方式:
1. 標準OIDC 客戶端
Casdoor 完全實現了OIDC協議。 如果您的應用程式已經執行了另一個 OAuth 2,那麼 (OIDC) 身份提供商一般會通過標準的 OIDC 客戶端庫提供服務,如果您想要遷移到Casdoor, 使用 OIDC discovery會幫助您非常容易地切換到Casdoor。Casdoor's OIDC discovery URL 是
<your-casdoor-backend-host>/.well-known/openid-configuration
2. Casdoor SDK
與標準的 OIDC 協議相比,Casdoor 在 SDK 中提供了更多的功能,如使用者管理、資源上傳等。 通過 Casdoor SDK 連線到 Casdoor 的成本比使用 OIDC 標準客戶端庫更高,並將提供靈活性最佳和最強大的 API。
Casdoor SDK可分為兩類:前端sdk和後端sdk
前端sdk | 原始碼地址 |
---|---|
JavaScript sdk | https://github.com/casdoor/casdoor-js-sdk |
Vue sdk | https://github.com/casdoor/casdoor-vue-sdk |
Android sdk | https://github.com/casdoor/casdoor-android-sdk |
IOS sdk | https://github.com/casdoor/casdoor-ios-sdk |
後端sdk | 原始碼地址 |
---|---|
Go sdk | https://github.com/casdoor/casdoor-go-sdk |
Java sdk | https://github.com/casdoor/casdoor-java-sdk |
Node.js sdk | https://github.com/casdoor/casdoor-nodejs-sdk |
Python sdk | https://github.com/casdoor/casdoor-python-sdk |
PHP sdk | https://github.com/casdoor/casdoor-php-sdk |
.NET sdk | https://github.com/casdoor/casdonet-sdk |
前後端配置的詳細方法請參考文件
https://casdoor.org/zh/docs/how-to-connect/sdk
3. Casdoor 外掛
如果您的應用是建立在一個流行的平臺上,並且Casdoor(或第三方) 已經為它提供了一個外掛或中介軟體,那麼就可以直接使用。它比手動使用 Casdoor SDK 更容易使用,因為前者是專門為平臺製作的。
Casdoor為一些熱門平臺提供外掛或中介軟體,例如Java的SpringBoot、PHP的WordPress、Python的Odoo等
效果演示
Casnode 是Casbin社群開發的官方論壇,它使用的就是 Casdoor 作為認證平臺並管理成員。下面以 Casnode 的登陸為例演示 Casdoor 的使用效果。
點選右上角的登入按鈕
進入登入選擇介面,可以選擇一個你信任的或常用的平臺進行授權
授權之後會進入登入頁面,以 Google, Wechat, QQ, Gitee 為例
登入成功之後可以在設定裡檢視使用者資訊,並且可以繫結其他平臺的賬號,以便下次登陸
寫在最後
我們希望 Casdoor 能幫助廣大開發者們解決使用者管理的難題,更專注主要業務,提高開發效率。同時作為一個開源專案,我們也非常希望獲得大家的使用建議,幫助我們更好地改善專案質量,從功能、易用性等方面更好地滿足大家的需求。
如果使用過程中有任何疑問,歡迎加入社群 QQ 群交流(QQ群:645200447),提 Issues、提 PR 也是十分歡迎的!