Casdoor + OAuth 實現單點登入 SSO

Casbin開源社群發表於2022-04-12

簡介

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

相關文章