概览
Casdoor 是一个Web界面优美的基于 OAuth 2.0 / OIDC 的中心化的的单点登录(SSO)身份验证平台。
Casdoor 可为网页UI和应用程序用户的登录请求提供服务。
Casdoor 的特性:
前后端分离的架构,使用 Go 语言开发,Casdoor 支持高并发,提供基于Web的用户管理 UI,并支持中、英等多种语言。
Casdoor 支持 Github、Google、QQ、WeChat 第三方应用程序登录,并支持使用插件扩展第三方登录。
使用 Casbin 基于授权管理,Casdoor 支持 ACL,RBAC,ABAC,RESTful 等访问控制模型。
支持手机验证码、邮件验证码、找回密码等功能。
审查和记录访问日志。
使用阿里云、腾讯云、七牛云提供的图片CDN云存储。
个性化的注册、登录和忘记密码页面。
Casdoor 支持使用 db 同步方法与现有系统的集成,用户可以顺利过渡到Casdoor 。
Casdoor 支持主流数据库: MySQL、PostgreSQL、SQL Server 等, 并支持扩展插件的新数据库。
如何操作?
步骤0 (前置知识)
- Casdoor 的授权程序建立在 OAuth 2 的基础上。因此,强烈建议简单了解 OAuth 2.0 的工作原理。 OAuth 2.0 简介。
步骤 1 (授权请求)
您的应用(或网站等)应该以 endpoint/login/oauth/authorize?client_id=xxx&response_type=code&redirect_uri=xxx&scope=read&state=xxx
这种格式编写 URL。 在此 URL 中,使用 Casdoor 的主机 URL 替换 endpoint
,并用您的信息替换 xxx
。
提示
如何填充 xxx
个零件?
对于
client_id
: 您可以在每个应用程序下找到它对于
重定向_uri
: 你应该将此设置为你自己的应用程序回调URL, 通过这个信息,Casdoor 可以知道在授权后向哪里发送信息对于
状态
: 您应该用您的应用程序名称填写这个内容 :::
应用程序将与用户说话: “嘿,现在我需要一些资源,我需要您的许可才能拿这些资源。 您愿意跳转到这个URL,填写您的用户名和密码吗?
使用正确的URL,您的应用程序将会让用户向此 URL 发起请求, 授权请求
已完成。
步骤 2(授权认证)
这一步骤直截了当:用户被重定向到上面的 URL,并能看到 Casdoor 的登录页面。
通过在登录表单中输入正确的用户名和凭据,Casdoor 知道了用户的身份,并发送两个关键词: code
和 state
。然后,返回步骤 1 设置的回调 URL。
用户打开网址并向Casdoor提供凭据。 Casdoor 说: “好~ 这是我在数据库中知道的用户(授权应用获取 code
和 state
)。 然后我将使用回调 URL 发送 code
和 state
返回应用 (redirect_uri
)”
随着这两个关键词回到您的申请中,现在已经授予应用认证,至此就完成了 授权
操作。
tip
Casdoor 也提供第三方登录。在这种情况下,您将不会看到凭据输入页面,而是会看到第三方提供商列表。 您可以使用这些提供商登录到您的应用,而 Casdoor 是中间层(中间件)。
步骤 3(授权认证)
在这个步骤中,您的应用程序已经有了来自第 2 步的代码,并且它将会告诉 Casdoor: “嘿, 现在用户同意给我 code
,你想检查这个 code
并给我 access_token
吗?
步骤 4(访问令牌)
这一步骤中,Casdoor 会通知应用程序: “这个 code
应该是合法的,你一定就是那个正确的应用程序。 这是 access_token
。
使用相关的 code
,Casdoor 知道它是一个授权的应用(第二步中正确用户给予的授权),试图获取 access_token
(稍后将被用来获取更有用的信息)。
步骤 5(访问令牌)
在这个步骤中,您的应用程序说: “很好,刚刚获得了最新的 访问权
我现在可以使用它从 资源服务器
获得更多宝贵的东西!
您的应用程序转向 资源服务器
: “Hey buddy, 想检查这个 access_token
吗? 我从 Casdoor 得到了访问令牌,你想看看这是否与 Casdoor 的一致?
步骤 6 (受保护资源)
Resource Server
又要涉及到您的应用程序: “不是坏~ 它似乎就像我在 Casdoor 中的那个一样。 Casdoor 说谁拥有这个 access_token
谁就可以拥有这些 受保护的资源
现在,你拿走了!”
这就是Casdoor 如何与您的应用程序一起工作。
提示
Casdoor 可以同时运行认证服务器
和 资源服务器
配件,也就是说: Casdoor 授权我们的应用程序从Casdoor的数据库获取资源 (例如通常是当前登录用户的信息)。
在线演示
Casdoor
这里是一个由Casbin部署的在线演示。
全局管理员登录:
- 用户名:
admin
- 密码:
123
Casbin-OA
Casbin-OA是Casbin 的web 应用程序之一。 它使用 Casdoor 作为身份验证。
Casnode
Casnode 是Cassbin社区开发的官方论坛。
它使用 Casdoor 作为认证平台并管理成员。
结构
Casdoor包含两个部分:
名称 | 描述 | 语言 | 源代码 |
---|---|---|---|
前端 | Casdoor的前端Web界面 | JavaScript + React | https://github.com/casdoor/casdoor/tree/master/web |
后端 | Casdoor后端RESTful API | Golang + Beego + SQL | https://github.com/casdoor/casdoor |