跳到主内容

概述

Casdoor is a UI-first Identity Access Management (IAM) / Single-Sign-On (SSO) platform with web UI supporting OAuth 2.0, OIDC, SAML, CAS, LDAP, SCIM, WebAuthn, TOTP, MFA, RADIUS, Google Workspace, Active Directory and Kerberos.

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

Casdoor 的特性:

  1. Casdoor 遵循前后端分离架构,采用 Golang 进行开发。 它支持高同步,提供基于网页的用户界面管理,并支持10多种语言的本地化。

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

  3. Casdoor 支持基于 Cassbin 的授权管理。 它支持 ACL、RBAC、ABAC 和 RESTful鉴权管理模式。

  4. Casdoor 提供了手机验证码、电子邮件验证码以及重置密码的功能。

  5. Casdoor 支持日志的审计和记录。

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

  7. Casdoor 允许自定义注册、登录以及找回密码页面。

  8. 通过数据库同步支持与现有系统的集成,从而能够顺利过渡到 Casdoor。

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

它如何工作?

原则

步骤0 (前置知识)

  1. Casdoor的授权程序基于OAuth 2.0协议 。 强烈建议简要了解下 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。 并使用你的 Casdoor 的网站 URL 替换 endpoint ,以及使用您的信息替换 xxx

提示

对于 xxx 的部分需要写上什么?

  • 对于 client_id: 您可以在每个应用程序里找到它

  • 对于 redirect_uri: 您应该将此设置为您自己的应用程序回调 URL。 Casdoor 将使用此信息在授权后发送回响应。

  • 对于 state: 您应该在此处填写您的应用程序名称。

应用程序将会提示用户: “嘿,我需要一些资源,且该资源需要您的许可我才能访问。 您是否可以转到这个网址并为我输入您的用户名和密码?”

使用正确组合的 URL,应用就会向此 URL 发起请求, 完成 授权请求

步骤 2(授权认证)

这个步骤非常直接:用户将被重定向到在步骤1中组成的URL,用户将看到来自Casdoor的登录页面。 通过在登录页面输入正确的用户名和认证信息,Casdoor 现在能成功识别用户,将发送 codestatus 返回第 1 步中设置的回调URL。

用户打开网址并向Casdoor提供凭据。 Casdoor will say: "Looking good ~ this is the user (who is authorizing the Application to get the code and state) I know in my database, and I will send the code and state back to the Application using the callback URL (redirect_uri)".

将这两部分信息发送回您的应用程序后,应用程序将获得授权,Authorization Grant完成。

提示

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

步骤 3(授权认证)

在这一步中,您的应用程序已经拥有了步骤2的代码,并且它将对Casdoor说:"嘿,用户同意给我code。" 你能验证这个code并给我access_token吗?"

步骤 4(访问令牌)

Casdoor对您的应用程序做出回应:"你知道吗,这段code看起来是合法的。" 你必须是正确的应用程序。 这是给你的access_token。"有了这个code,Casdoor确认它是一个被授权的应用程序(在步骤2中被正确的用户授权)试图获取access_token(稍后将用于访问更多资源)。

步骤 5(访问令牌)

在这一步中,你的应用程序说:"很好! 我刚刚得到了新鲜又美味的access_token。 现在我可以使用它从Resource Server获取更有价值的东西!"

您的应用程序然后转向Resource Server,并说:"嘿,伙计,你能检查一下这个access_token吗?" 我收到了来自Casdoor的它。 您是否想要验证这是否是您发给Casdoor的正确令牌?"

步骤 6 (受保护资源)

Resource Server对您的应用程序做出响应:"还不错。" 这看起来就像我发给Casdoor的那个,而Casdoor说,持有这个access_token的人可以访问这些Protected Resources。 那就去吧,拿起来吧!"

这基本上就是Casdoor如何与您的应用程序一起工作的。

提示

Casdoor可以同时充当Authorization ServerResource Server。 换句话说,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