Casdoor + OAuth 實現單點登錄 SSO


簡介

Casdoor 是一個基於 OAuth 2.0 / OIDC 的中心化的單點登錄(SSO)身份驗證平台,簡單來說,就是 Casdoor 可以幫你解決用戶管理的難題,你無需開發用戶登錄、注冊等與用戶鑒權相關的一系列功能,只需幾個步驟進行簡單配置,與你的主應用配合,便可完全托管你的用戶模塊,簡單省心,功能強大。Casdoor 目前作為 Casbin 社區項目統一使用的鑒權平台,並且項目已開源。

1

2

倉庫地址:https://github.com/casbin/casdoor

演示地址:https://door.casbin.com/

官網文檔:https://casdoor.org/

為什么要用 Casdoor?

3

用戶管理一直是項目中非常令人頭疼的一個問題,不僅要確保安全性,功能是否完整,方便使用也十分重要。目前大多數應用已從過去單一的賬號密碼登錄,逐漸升級為允許通過第三方平台登錄,例如 GitHub 、微信、QQ 等,但是這一套邏輯依然需要開發者去實現,大多數功能偏離了業務。

Casdoor 就是替開發者們解決這個難題,即提供一套統一的鑒權平台,只需要簡單配置便可完全托管用戶模塊,功能完備,配置簡單,上手難度低。它具有以下特性:

  1. 前后端分離的架構,前端使用react,后端使用 Go 語言開發,Casdoor 支持高並發,提供基於Web的用戶管理 UI,並支持中、英等多種語言

4

  1. Casdoor 支持 Github, Google, QQ, WeChat, Facebook, Gitee 等第三方應用程序登錄,並支持使用插件擴展第三方登錄

  2. 使用 Casbin 基於授權管理,Casdoor 支持 ACL, RBAC, ABAC, RESTful 等訪問控制模型

  3. 個性化的注冊、登錄和忘記密碼頁面。支持手機驗證碼、郵件驗證碼、找回密碼等功能

    4

    5

  4. 使用阿里雲、騰訊雲、七牛雲提供的圖片CDN雲存儲

  5. Casdoor 支持使用 db 同步方法與現有系統的集成,用戶可以順利過渡到Casdoor

  6. Casdoor 支持的主流數據庫: MySQL, SQL Server, PostgreSQL 等, 並支持擴展插件的新數據庫

工作原理

首先,Casdoor 的授權程序建立在 OAuth 2 的基礎上:OAuth 2 是一個工業級別的開發授權協議,可以使用戶授權第三方網站/應用訪問他們在特定網站上的信息,而不必向第三方網站/應用提供密碼。

整個過程如下圖所示,一共分成六個步驟:向用戶發送授權請求、獲得授權認證、向授權服務器發送授權認證並驗證、獲取訪問令牌、給資源服務器發送訪問令牌、獲得受保護的資源。

8

如何連接到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 的使用效果。

https://forum.casbin.com/

點擊右上角的登錄按鈕

9

進入登錄選擇界面,可以選擇一個你信任的或常用的平台進行授權

2

授權之后會進入登錄頁面,以 Google, Wechat, QQ, Gitee 為例

10

11

12

13

登錄成功之后可以在設置里查看用戶信息,並且可以綁定其他平台的賬號,以便下次登陸

14

寫在最后

我們希望 Casdoor 能幫助廣大開發者們解決用戶管理的難題,更專注主要業務,提高開發效率。同時作為一個開源項目,我們也非常希望獲得大家的使用建議,幫助我們更好地改善項目質量,從功能、易用性等方面更好地滿足大家的需求。

如果使用過程中有任何疑問,歡迎加入社區 QQ 群交流(QQ群:645200447),提 Issues、提 PR 也是十分歡迎的!

15


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM