跳到主内容

概述

Casdoor是一个基于OAuth 2.0、OIDC、SAML 和 CAS 的,UI-first的身份和访问管理(IAM)/单点登录(SSO)平台。

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

Casdoor 的特性:

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

  2. Casdoor支持第三方应用登录,如GitHub、谷歌、QQ、微信等,并支持通过插件扩展第三方登录。

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

  4. Casdoor可通过手机验证码、邮箱验证码登录,还有找回密码功能。

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

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

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

  8. Casdoor 支持通过数据库同步的方法来与现有系统集成,用户可以顺利过渡到 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: 您可以在每个应用程序里找到它

  • 对于 redirect_uri: 您应该将此设置为你自己的应用程序回调URL, 通过这个信息,Casdoor 可以知道在授权后向哪里发送信息

  • 对于 state: 您应该用您的应用程序名称填写这个内容

应用程序对用户说: "嘿,现在我需要一些资源,我需要您的许可才能拿这些资源。 您愿意跳转到这个URL,填写您的用户名和密码吗?

使用正确的URL,您的应用程序将会让用户向此 URL 发起请求, 授权请求 已完成。

步骤 2(授权认证)

此步骤比较直接:用户会被重定向到上面的URL,看到来自Casdoor的登录页面。 通过在登录页面输入正确的用户名和认证信息,Casdoor现在能成功识别用户,将发送 代码状态 返回第 1 步中设置的回调URL。

用户打开网址并向Casdoor提供凭据。 Casdoor 说: “好~ 这是我在数据库中知道的用户(授权应用获取 codestate)。 然后我将使用回调 URL 发送 codestate 返回应用 (redirect_uri)"

这两个关键词发到您的应用后,应用便得到授权,至此就完成了 授权 环节。

提示

Casdoor 也提供第三方登录。在这种情况下,您将不会看到输入验证信息的页面,只会看到第三方提供商列表。 您可以使用这些提供商登录到您的应用,而 Casdoor 是中间层(中间件)。

步骤 3(授权认证)

在这一步,您的应用程序已经有了来自第 2 步的代码,它将会告诉 Casdoor: "嘿, 现在用户同意给我 code,你想检查这个 code 并给我 access_token吗?

步骤 4(访问令牌)

这一步骤中,Casdoor 会通知应用程序: "这个 code 应该是合法的,你一定就是那个正确的应用程序。 这是 access_token
有了 code,Casdoor 知道它是一个已授权的应用(第二步中用户给予的授权),试图获取 access_token(稍后将会用来获取更有用的信息)。

步骤 5(访问令牌)

在这个步骤中,您的应用程序说: "很好,刚刚获得了最新的 access_token我现在可以使用它从 资源服务器获得更多宝贵的东西!

您的应用程序转向 资源服务器: "嗨朋友,想检查这个 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 是Casbin社区开发的官方论坛。

它使用 Casdoor 作为认证平台并管理成员。

结构

Casdoor包含两个部分:

名称描述语言源代码
前端Casdoor的前端Web界面JavaScript + Reacthttps://github.com/casdoor/casdoor/tree/master/web
后端Casdoor后端RESTful APIGolang + Beego + SQLhttps://github.com/casdoor/casdoor