跳到主内容

概述

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

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

Casdoor 的特性:

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

  2. Casdoor supports third-party applications login, such as GitHub, Google, QQ, WeChat, etc.,and supports the extension of third-party login with plugins.

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

  4. Phone verification code, email verification code and password retrieval functions.

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

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

  7. Customizable registration, login, and password retrieval pages.

  8. Casdoor supports integration with existing systems by db sync , users can transition to Casdoor smoothly.

  9. Casdoor supports mainstream databases: MySQL, PostgreSQL, SQL Server , etc., and supports the extension of new databases with plugins.

如何操作?

原则

步骤0 (前置知识)

  1. Casdoor 的授权程序建立在 OAuth 2 的基础上。因此,强烈建议简单了解 OAuth 2.0 的工作原理。 An introduction to 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: 您应该用您的应用程序名称填写这个内容

The Application will speak to the user: "Hey, now I need some resources and I need your permission to take these resources, Do you mind going to this URL and filling out your username and password for me?"

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

步骤 2(授权认证)

This step is straightforward: the user is redirected to the URL composed above, and the user will see the login page from Casdoor. By typing the correct username and credential into the login page, Casdoor now knows the identity of the user, and is about to send two keywords: code and state back to the callback URL set in Step 1.

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

With these two keywords sent back to your Application, the authorization is now granted to the app, and thus Authorization Grant is completed.

提示

Casdoor also provides third-party logins, in this case, you will not see the credentials entry page but a list of third-party providers. 您可以使用这些提供商登录到您的应用,而 Casdoor 是中间层(中间件)。

步骤 3(授权认证)

In this step, your Application already has the code in hand from Step 2, and it will speak to Casdoor: "Hey, now the user agreed to give me the code, do you wanna check this code out and give me the access_token?"

步骤 4(访问令牌)

这一步骤中,Casdoor 会通知应用程序: "这个 code 应该是合法的,你一定就是那个正确的应用程序。 Come here, it's the access_token." With this code, Casdoor knows that it is an authorized Application (authorization given by the correct user in Step 2) trying to get the access_token (, which will be used later to get more useful things).

步骤 5(访问令牌)

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

您的应用程序转向 资源服务器: "嗨朋友,想检查这个 access_token 吗? I got this from Casdoor and do you want to see if this is the correct one you had with Casdoor?"

步骤 6 (受保护资源)

The Resource Server speaks back to your Application: "Not bad ~ it seems just like the one I had with Casdoor, and Casdoor says whoever holds this access_token can have these Protected Resources. 现在,你拿走了!”

这就是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