
Casdoor + OAuth實現(xiàn)單點登錄 SSO
聲明:該文章來自(Casbin開源軟件)版權(quán)由原作者所有,K2OS渲染引擎提供網(wǎng)頁加速服務。
Casdoor 是一個基于 OAuth 2.0 / OIDC 的中心化的單點登錄(SSO)身份驗證平臺,簡單來說,就是 Casdoor 可以幫你解決用戶管理的難題,你無需開發(fā)用戶登錄、注冊等與用戶鑒權(quán)相關的一系列功能,只需幾個步驟進行簡單配置,與你的主應用配合,便可完全托管你的用戶模塊,簡單省心,功能強大。Casdoor 目前作為 Casbin 社區(qū)項目統(tǒng)一使用的鑒權(quán)平臺,并且項目已開源。
倉庫地址:https://github.com/casbin/casdoor
演示地址:https://door.casbin.com/
官網(wǎng)文檔:https://casdoor.org/
為什么要用 Casdoor?
用戶管理一直是項目中非常令人頭疼的一個問題,不僅要確保安全性,功能是否完整,方便使用也十分重要。目前大多數(shù)應用已從過去單一的賬號密碼登錄,逐漸升級為允許通過第三方平臺登錄,例如 GitHub 、微信、QQ 等,但是這一套邏輯依然需要開發(fā)者去實現(xiàn),大多數(shù)功能偏離了業(yè)務。
Casdoor 就是替開發(fā)者們解決這個難題,即提供一套統(tǒng)一的鑒權(quán)平臺,只需要簡單配置便可完全托管用戶模塊,功能完備,配置簡單,上手難度低。它具有以下特性:
1.? 前后端分離的架構(gòu),前端使用react,后端使用 Go 語言開發(fā),Casdoor 支持高并發(fā),提供基于Web的用戶管理 UI,并支持中、英等多種語言
2. Casdoor 支持 Github, Google, QQ, WeChat, Facebook, Gitee 等第三方應用程序登錄,并支持使用插件擴展第三方登錄
3. 使用?Casbin?基于授權(quán)管理,Casdoor 支持 ACL, RBAC, ABAC, RESTful 等訪問控制模型
4. 個性化的注冊、登錄和忘記密碼頁面。支持手機驗證碼、郵件驗證碼、找回密碼等功能
5. 使用阿里云、騰訊云、七牛云提供的圖片CDN云存儲
6. Casdoor 支持使用 db 同步方法與現(xiàn)有系統(tǒng)的集成,用戶可以順利過渡到Casdoor?
7. Casdoor 支持的主流數(shù)據(jù)庫: MySQL, SQL Server, PostgreSQL 等, 并支持擴展插件的新數(shù)據(jù)庫
工作原理
首先,Casdoor 的授權(quán)程序建立在?OAuth 2?的基礎上:OAuth 2 是一個工業(yè)級別的開發(fā)授權(quán)協(xié)議,可以使用戶授權(quán)第三方網(wǎng)站/應用訪問他們在特定網(wǎng)站上的信息,而不必向第三方網(wǎng)站/應用提供密碼。
整個過程如下圖所示,一共分成六個步驟:向用戶發(fā)送授權(quán)請求、獲得授權(quán)認證、向授權(quán)服務器發(fā)送授權(quán)認證并驗證、獲取訪問令牌、給資源服務器發(fā)送訪問令牌、獲得受保護的資源。
如何連接到Casdoor?
作為服務提供商(SP),Casdoor 支持兩項認證協(xié)議:OAuth 2.0 (OIDC) 和 SAML;作為身份提供商 (Idp),Casdoor 也支持兩個認證協(xié)議:OAuth 2.0 (OIDC) 和 CAS 2.0
因此,您的應用程序?qū)⑼ㄟ^ OAuth 2.0 (OIDC) 與 Casdoor 連接。具體而言,有三種方式:
1.??標準OIDC 客戶端
Casdoor 完全實現(xiàn)了OIDC協(xié)議。如果您的應用程序已經(jīng)運行了另一個 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 協(xié)議相比,Casdoor 在 SDK 中提供了更多的功能,如用戶管理、資源上傳等。通過 Casdoor SDK 連接到 Casdoor 的成本比使用 OIDC 標準客戶端庫更高,并將提供靈活性最佳和最強大的 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
前后端配置的詳細方法請參考文檔
https://casdoor.org/zh/docs/how-to-connect/sdk
3.??Casdoor 插件:如果您的應用是建立在一個流行的平臺上,并且Casdoor(或第三方) 已經(jīng)為它提供了一個插件或中間件,那么就可以直接使用。它比手動使用 Casdoor SDK 更容易使用,因為前者是專門為平臺制作的。
Casdoor為一些熱門平臺提供插件或中間件,例如Java的SpringBoot、PHP的WordPress、Python的Odoo等
效果演示
Casnode 是Casbin社區(qū)開發(fā)的官方論壇,它使用的就是 Casdoor 作為認證平臺并管理成員。下面以 Casnode 的登錄為例演示 Casdoor 的使用效果。
https://forum.casbin.com/
點擊右上角的登錄按鈕
進入登錄選擇界面,可以選擇一個你信任的或常用的平臺進行授權(quán)
授權(quán)之后會進入登錄頁面,以 Google, Wechat, QQ, Gitee 為例
登錄成功之后可以在設置里查看用戶信息,并且可以綁定其他平臺的賬號,以便下次登陸
寫在最后
我們希望 Casdoor 能幫助廣大開發(fā)者們解決用戶管理的難題,更專注主要業(yè)務,提高開發(fā)效率。同時作為一個開源項目,我們也非常希望獲得大家的使用建議,幫助我們更好地改善項目質(zhì)量,從功能、易用性等方面更好地滿足大家的需求。
[超站]友情鏈接:
四季很好,只要有你,文娛排行榜:https://www.yaopaiming.com/
關注數(shù)據(jù)與安全,洞悉企業(yè)級服務市場:https://www.ijiandao.com/
- 1 豐收時節(jié)感悟總書記的“三農(nóng)”情懷 7904059
- 2 深圳機場飛機被“五花大綁”防臺風 7808158
- 3 疑追風觀浪 香港一對母子被卷入海 7712647
- 4 盤點新疆的全國之“最” 7616071
- 5 驢肉價格上漲 中國正面臨缺驢問題 7519937
- 6 用一條毛巾避免大窗玻璃離家出走 7427771
- 7 護網(wǎng):社交賬號不受控制?木馬在作祟 7332351
- 8 鴻蒙智行秋季新品發(fā)布會 7235372
- 9 “晚1秒就撞 我肯定不慣著他” 7135906
- 10 中國每年吃掉約70億只白羽肉雞 7048841