Casdoor + OAuth实现单点登录 SSO
Casdoor 是一个基于 OAuth 2.0 / OIDC 的中心化的单点登录(SSO)身份验证平台,简单来说,就是 Casdoor 可以帮你解决用户管理的难题,你无需开发用户登录、注册等与用户鉴权相关的一系列功能,只需几个步骤进行简单配置,与你的主应用配合,便可完全托管你的用户模块,简单省心,功能强大。Casdoor 目前作为 Casbin 社区项目统一使用的鉴权平台,并且项目已开源。
仓库地址:https://github.com/casbin/casdoor
演示地址:https://door.casbin.com/
官网文档:https://casdoor.org/
为什么要用 Casdoor?
用户管理一直是项目中非常令人头疼的一个问题,不仅要确保安全性,功能是否完整,方便使用也十分重要。目前大多数应用已从过去单一的账号密码登录,逐渐升级为允许通过第三方平台登录,例如 GitHub 、微信、QQ 等,但是这一套逻辑依然需要开发者去实现,大多数功能偏离了业务。
Casdoor 就是替开发者们解决这个难题,即提供一套统一的鉴权平台,只需要简单配置便可完全托管用户模块,功能完备,配置简单,上手难度低。它具有以下特性:
1. 前后端分离的架构,前端使用react,后端使用 Go 语言开发,Casdoor 支持高并发,提供基于Web的用户管理 UI,并支持中、英等多种语言
2. Casdoor 支持 Github, Google, QQ, WeChat, Facebook, Gitee 等第三方应用程序登录,并支持使用插件扩展第三方登录
3. 使用 Casbin 基于授权管理,Casdoor 支持 ACL, RBAC, ABAC, RESTful 等访问控制模型
4. 个性化的注册、登录和忘记密码页面。支持手机验证码、邮件验证码、找回密码等功能
5. 使用阿里云、腾讯云、七牛云提供的图片CDN云存储
6. Casdoor 支持使用 db 同步方法与现有系统的集成,用户可以顺利过渡到Casdoor
7. 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
源码地址
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(或第三方) 已经为它提供了一个插件或中间件,那么就可以直接使用。它比手动使用 Casdoor SDK 更容易使用,因为前者是专门为平台制作的。
Casdoor为一些热门平台提供插件或中间件,例如Java的SpringBoot、PHP的WordPress、Python的Odoo等
效果演示
Casnode 是Casbin社区开发的官方论坛,它使用的就是 Casdoor 作为认证平台并管理成员。下面以 Casnode 的登录为例演示 Casdoor 的使用效果。
https://forum.casbin.com/
点击右上角的登录按钮
进入登录选择界面,可以选择一个你信任的或常用的平台进行授权
授权之后会进入登录页面,以 Google, Wechat, QQ, Gitee 为例
登录成功之后可以在设置里查看用户信息,并且可以绑定其他平台的账号,以便下次登陆
写在最后
我们希望 Casdoor 能帮助广大开发者们解决用户管理的难题,更专注主要业务,提高开发效率。同时作为一个开源项目,我们也非常希望获得大家的使用建议,帮助我们更好地改善项目质量,从功能、易用性等方面更好地满足大家的需求。
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/