
Casdoor + OAuth實(shí)現(xiàn)單點(diǎn)登錄 SSO
Casdoor 是一個(gè)基于 OAuth 2.0 / OIDC 的中心化的單點(diǎn)登錄(SSO)身份驗(yàn)證平臺(tái),簡(jiǎn)單來說,就是 Casdoor 可以幫你解決用戶管理的難題,你無需開發(fā)用戶登錄、注冊(cè)等與用戶鑒權(quán)相關(guān)的一系列功能,只需幾個(gè)步驟進(jìn)行簡(jiǎn)單配置,與你的主應(yīng)用配合,便可完全托管你的用戶模塊,簡(jiǎn)單省心,功能強(qiáng)大。Casdoor 目前作為 Casbin 社區(qū)項(xiàng)目統(tǒng)一使用的鑒權(quán)平臺(tái),并且項(xiàng)目已開源。
倉(cāng)庫(kù)地址:https://github.com/casbin/casdoor
演示地址:https://door.casbin.com/
官網(wǎng)文檔:https://casdoor.org/
為什么要用 Casdoor?
用戶管理一直是項(xiàng)目中非常令人頭疼的一個(gè)問題,不僅要確保安全性,功能是否完整,方便使用也十分重要。目前大多數(shù)應(yīng)用已從過去單一的賬號(hào)密碼登錄,逐漸升級(jí)為允許通過第三方平臺(tái)登錄,例如 GitHub 、微信、QQ 等,但是這一套邏輯依然需要開發(fā)者去實(shí)現(xiàn),大多數(shù)功能偏離了業(yè)務(wù)。
Casdoor 就是替開發(fā)者們解決這個(gè)難題,即提供一套統(tǒng)一的鑒權(quán)平臺(tái),只需要簡(jiǎn)單配置便可完全托管用戶模塊,功能完備,配置簡(jiǎn)單,上手難度低。它具有以下特性:
1.? 前后端分離的架構(gòu),前端使用react,后端使用 Go 語言開發(fā),Casdoor 支持高并發(fā),提供基于Web的用戶管理 UI,并支持中、英等多種語言
2. Casdoor 支持 Github, Google, QQ, WeChat, Facebook, Gitee 等第三方應(yīng)用程序登錄,并支持使用插件擴(kuò)展第三方登錄
3. 使用?Casbin?基于授權(quán)管理,Casdoor 支持 ACL, RBAC, ABAC, RESTful 等訪問控制模型
4. 個(gè)性化的注冊(cè)、登錄和忘記密碼頁面。支持手機(jī)驗(yàn)證碼、郵件驗(yàn)證碼、找回密碼等功能
5. 使用阿里云、騰訊云、七牛云提供的圖片CDN云存儲(chǔ)
6. Casdoor 支持使用 db 同步方法與現(xiàn)有系統(tǒng)的集成,用戶可以順利過渡到Casdoor?
7. Casdoor 支持的主流數(shù)據(jù)庫(kù): MySQL, SQL Server, PostgreSQL 等, 并支持?jǐn)U展插件的新數(shù)據(jù)庫(kù)
工作原理
首先,Casdoor 的授權(quán)程序建立在?OAuth 2?的基礎(chǔ)上:OAuth 2 是一個(gè)工業(yè)級(jí)別的開發(fā)授權(quán)協(xié)議,可以使用戶授權(quán)第三方網(wǎng)站/應(yīng)用訪問他們?cè)谔囟ňW(wǎng)站上的信息,而不必向第三方網(wǎng)站/應(yīng)用提供密碼。
整個(gè)過程如下圖所示,一共分成六個(gè)步驟:向用戶發(fā)送授權(quán)請(qǐng)求、獲得授權(quán)認(rèn)證、向授權(quán)服務(wù)器發(fā)送授權(quán)認(rèn)證并驗(yàn)證、獲取訪問令牌、給資源服務(wù)器發(fā)送訪問令牌、獲得受保護(hù)的資源。
如何連接到Casdoor?
作為服務(wù)提供商(SP),Casdoor 支持兩項(xiàng)認(rèn)證協(xié)議:OAuth 2.0 (OIDC) 和 SAML;作為身份提供商 (Idp),Casdoor 也支持兩個(gè)認(rèn)證協(xié)議:OAuth 2.0 (OIDC) 和 CAS 2.0
因此,您的應(yīng)用程序?qū)⑼ㄟ^ OAuth 2.0 (OIDC) 與 Casdoor 連接。具體而言,有三種方式:
1.??標(biāo)準(zhǔn)OIDC 客戶端
Casdoor 完全實(shí)現(xiàn)了OIDC協(xié)議。如果您的應(yīng)用程序已經(jīng)運(yùn)行了另一個(gè) OAuth 2,那么 (OIDC) 身份提供商一般會(huì)通過標(biāo)準(zhǔn)的 OIDC 客戶端庫(kù)提供服務(wù),如果您想要遷移到Casdoor, 使用 OIDC discovery會(huì)幫助您非常容易地切換到Casdoor。Casdoor's OIDC discovery URL 是
<your-casdoor-backend-host>/.well-known/openid-configuration
2.?Casdoor SDK
與標(biāo)準(zhǔn)的 OIDC 協(xié)議相比,Casdoor 在 SDK 中提供了更多的功能,如用戶管理、資源上傳等。通過 Casdoor SDK 連接到 Casdoor 的成本比使用 OIDC 標(biāo)準(zhǔn)客戶端庫(kù)更高,并將提供靈活性最佳和最強(qiáng)大的 API。
Casdoor SDK可分為兩類:前端sdk和后端sdk
前端sdk
源碼地址
JS 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
Python sdk
https://github.com/casdoor/casdonet-sdk
前后端配置的詳細(xì)方法請(qǐng)參考文檔
https://casdoor.org/zh/docs/how-to-connect/sdk
3.??Casdoor 插件:如果您的應(yīng)用是建立在一個(gè)流行的平臺(tái)上,并且Casdoor(或第三方) 已經(jīng)為它提供了一個(gè)插件或中間件,那么就可以直接使用。它比手動(dòng)使用 Casdoor SDK 更容易使用,因?yàn)榍罢呤菍iT為平臺(tái)制作的。
Casdoor為一些熱門平臺(tái)提供插件或中間件,例如Java的SpringBoot、PHP的WordPress、Python的Odoo等
效果演示
Casnode 是Casbin社區(qū)開發(fā)的官方論壇,它使用的就是 Casdoor 作為認(rèn)證平臺(tái)并管理成員。下面以 Casnode 的登錄為例演示 Casdoor 的使用效果。
https://forum.casbin.com/
點(diǎn)擊右上角的登錄按鈕
進(jìn)入登錄選擇界面,可以選擇一個(gè)你信任的或常用的平臺(tái)進(jìn)行授權(quán)
授權(quán)之后會(huì)進(jìn)入登錄頁面,以 Google, Wechat, QQ, Gitee 為例
登錄成功之后可以在設(shè)置里查看用戶信息,并且可以綁定其他平臺(tái)的賬號(hào),以便下次登陸
寫在最后
我們希望 Casdoor 能幫助廣大開發(fā)者們解決用戶管理的難題,更專注主要業(yè)務(wù),提高開發(fā)效率。同時(shí)作為一個(gè)開源項(xiàng)目,我們也非常希望獲得大家的使用建議,幫助我們更好地改善項(xiàng)目質(zhì)量,從功能、易用性等方面更好地滿足大家的需求。
[超站]友情鏈接:
四季很好,只要有你,文娛排行榜:https://www.yaopaiming.com/
關(guān)注數(shù)據(jù)與安全,洞悉企業(yè)級(jí)服務(wù)市場(chǎng):https://www.ijiandao.com/

隨時(shí)掌握互聯(lián)網(wǎng)精彩
- 1 看總書記關(guān)心的清潔能源這樣發(fā)電 7904660
- 2 今年最強(qiáng)臺(tái)風(fēng)來襲 7809288
- 3 澳加英宣布承認(rèn)巴勒斯坦國(guó) 7713203
- 4 長(zhǎng)春航空展這些“首次”不要錯(cuò)過 7617258
- 5 43歲二胎媽媽患阿爾茨海默病 7523513
- 6 iPhone 17橙色斜挎掛繩賣斷貨 7424229
- 7 女兒發(fā)現(xiàn)父親500多萬遺產(chǎn)用于保健 7333364
- 8 英國(guó)航母從南?!傲锪恕?/a> 7237252
- 9 中國(guó)消失的森林正“全盤復(fù)活” 7139593
- 10 三所“零近視”小學(xué)帶來的啟示 7040964