概述
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 的特性:
Casdoor 遵循前后端分离架构,采用 Golang 进行开发。 它支持高同步,提供基于网页的用户界面管理,并支持10多种语言的本地化。
Casdoor 支持第三方应用登录,如 GitHub、谷歌、QQ、微信等,并支持通过插件扩展第三方登录。
Casdoor 支持基于 Cassbin 的授权管理。 它支持 ACL、RBAC、ABAC 和 RESTful鉴权管理模式。
Casdoor 提供了手机验证码、电子邮件验证码以及重置密码的功能。
Casdoor 支持日志的审计和记录。
Casdoor 可以使用阿里云、腾讯云、七牛云提供的图片CDN云存储功能。
Casdoor 允许自定义注册、登录以及找回密码页面。
通过数据库同步支持与现有系统的集成,从而能够顺利过渡到 Casdoor。
Casdoor 支持主流数据库: MySQL、PostgreSQL、SQL Server 等, 并支持扩展插件以支持新的数据库。
它如何工作?
步骤0 (前置知识)
- 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 现在能成功识别用户,将发送 code
和 status
返回第 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 Server
和Resource Server
。 换句话说,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 |