概览

Casdoor 是一个Web界面优美的基于 OAuth 2.0 / OIDC 的中心化的的单点登录(SSO)身份验证平台。

Casdoor 可为网页UI和应用程序用户的登录请求提供服务。

Casdoor 的特性:

  1. 前后端分离的架构,使用 Go 语言开发,Casdoor 支持高并发,提供基于Web的用户管理 UI,并支持中、英等多种语言。

  2. Casdoor 支持 Github、Google、QQ、WeChat 第三方应用程序登录,并支持使用插件扩展第三方登录。

  3. 使用 Casbin 基于授权管理,Casdoor 支持 ACL,RBAC,ABAC,RESTful 等访问控制模型。

  4. 支持手机验证码、邮件验证码、找回密码等功能。

  5. 审查和记录访问日志。

  6. 使用阿里云、腾讯云、七牛云提供的图片CDN云存储。

  7. 个性化的注册、登录和忘记密码页面。

  8. Casdoor 支持使用 db 同步方法与现有系统的集成,用户可以顺利过渡到Casdoor 。

  9. Casdoor 支持主流数据库: MySQL、PostgreSQL、SQL Server 等, 并支持扩展插件的新数据库。

如何操作?

原则

步骤0 (前置知识)

  1. 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 知道了用户的身份,并发送两个关键词: codestate。然后,返回步骤 1 设置的回调 URL。

用户打开网址并向Casdoor提供凭据。 Casdoor 说: “好~ 这是我在数据库中知道的用户(授权应用获取 codestate)。 然后我将使用回调 URL 发送 codestate 返回应用 (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 + Reacthttps://github.com/casdoor/casdoor/tree/master/web
后端Casdoor后端RESTful APIGolang + Beego + SQLhttps://github.com/casdoor/casdoor