V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
Casbin
V2EX  ›  Go 编程语言

Casdoor + OAuth 实现单点登录 SSO

  •  
  •   Casbin · 2022-11-25 10:08:53 +08:00 · 2839 次点击
    这是一个创建于 718 天前的主题,其中的信息可能已经有所发展或是发生改变。

    简介

    Casdoor 是一个基于 OAuth 2.0 / OIDC 的中心化的单点登录( SSO )身份验证平台,简单来说,就是 Casdoor 可以帮你解决用户管理的难题,你无需开发用户登录、注册等与用户鉴权相关的一系列功能,只需几个步骤进行简单配置,与你的主应用配合,便可完全托管你的用户模块,简单省心,功能强大。Casdoor 目前作为 Casbin 社区项目统一使用的鉴权平台,并且项目已开源。

    1

    2

    仓库地址:https://github.com/casbin/casdoor

    演示地址:https://door.casbin.com/

    官网文档:https://casdoor.org/

    为什么要用 Casdoor ?

    3

    用户管理一直是项目中非常令人头疼的一个问题,不仅要确保安全性,功能是否完整,方便使用也十分重要。目前大多数应用已从过去单一的账号密码登录,逐渐升级为允许通过第三方平台登录,例如 GitHub 、微信、QQ 等,但是这一套逻辑依然需要开发者去实现,大多数功能偏离了业务。

    Casdoor 就是替开发者们解决这个难题,即提供一套统一的鉴权平台,只需要简单配置便可完全托管用户模块,功能完备,配置简单,上手难度低。它具有以下特性:

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

    4

    1. Casdoor 支持 Github, Google, QQ, WeChat, Facebook, Gitee 等第三方应用程序登录,并支持使用插件扩展第三方登录

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

    3. 个性化的注册、登录和忘记密码页面。支持手机验证码、邮件验证码、找回密码等功能

      4

      5

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

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

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

    工作原理<button class="cnblogs-toc-button" title="显示目录导航" aria-expanded="false"></button>

    首先,Casdoor 的授权程序建立在 OAuth 2 的基础上:OAuth 2 是一个工业级别的开发授权协议,可以使用户授权第三方网站 /应用访问他们在特定网站上的信息,而不必向第三方网站 /应用提供密码。

    整个过程如下图所示,一共分成六个步骤:向用户发送授权请求、获得授权认证、向授权服务器发送授权认证并验证、获取访问令牌、给资源服务器发送访问令牌、获得受保护的资源。

    8

    如何连接到 Casdoor ?<button class="cnblogs-toc-button" title="显示目录导航" aria-expanded="false"></button>

    作为服务提供商(SP),Casdoor 支持两项认证协议:OAuth 2.0 (OIDC) 和 SAML ;作为身份提供商 (Idp),Casdoor 也支持两个认证协议:OAuth 2.0 (OIDC) 和 CAS 2.0 。

    因此,您的应用程序将通过 OAuth 2.0 (OIDC) 与 Casdoor 连接。 具体而言,有三种方式:

    1. 标准 OIDC 客户端<button class="cnblogs-toc-button" title="显示目录导航" aria-expanded="false"></button>

    Casdoor 完全实现了 OIDC 协议。 如果您的应用程序已经运行了另一个 OAuth 2 ,那么 (OIDC) 身份提供商一般会通过标准的 OIDC 客户端库提供服务,如果您想要迁移到 Casdoor , 使用 OIDC discovery 会帮助您非常容易地切换到 Casdoor 。Casdoor's OIDC discovery URL 是

    <your-casdoor-backend-host>/.well-known/openid-configuration
    

    2. Casdoor SDK<button class="cnblogs-toc-button" title="显示目录导航" aria-expanded="false"></button>

    与标准的 OIDC 协议相比,Casdoor 在 SDK 中提供了更多的功能,如用户管理、资源上传等。 通过 Casdoor SDK 连接到 Casdoor 的成本比使用 OIDC 标准客户端库更高,并将提供灵活性最佳和最强大的 API 。

    Casdoor SDK 可分为两类:前端 sdk 和后端 sdk

    前后端配置的详细方法请参考文档

    https://casdoor.org/zh/docs/how-to-connect/sdk

    3. Casdoor 插件

    如果您的应用是建立在一个流行的平台上,并且 Casdoor(或第三方) 已经为它提供了一个插件或中间件,那么就可以直接使用。它比手动使用 Casdoor SDK 更容易使用,因为前者是专门为平台制作的。

    Casdoor 为一些热门平台提供插件或中间件,例如 Java 的 SpringBoot 、PHP 的 WordPress 、Python 的 Odoo 等

    效果演示

    Casnode 是 Casbin 社区开发的官方论坛,它使用的就是 Casdoor 作为认证平台并管理成员。下面以 Casnode 的登陆为例演示 Casdoor 的使用效果。

    https://forum.casbin.com/

    点击右上角的登录按钮

    9

    进入登录选择界面,可以选择一个你信任的或常用的平台进行授权

    2

    授权之后会进入登录页面,以 Google, Wechat, QQ, Gitee 为例

    10

    11

    12

    13

    登录成功之后可以在设置里查看用户信息,并且可以绑定其他平台的账号,以便下次登陆

    14

    写在最后

    我们希望 Casdoor 能帮助广大开发者们解决用户管理的难题,更专注主要业务,提高开发效率。同时作为一个开源项目,我们也非常希望获得大家的使用建议,帮助我们更好地改善项目质量,从功能、易用性等方面更好地满足大家的需求。

    如果使用过程中有任何疑问,欢迎加入社区 QQ 群交流( QQ 群:645200447 ),提 Issues 、提 PR 也是十分欢迎的!

    15

    10 条回复    2024-01-14 22:13:42 +08:00
    interim
        1
    interim  
       2022-11-25 11:23:46 +08:00   ❤️ 2
    你们的黑料可不少,包括不限于 https://cn.v2ex.com/t/895128
    janxin
        2
    janxin  
       2022-11-25 11:44:06 +08:00
    casdoor 发版过于频繁了...
    sheltonZ
        3
    sheltonZ  
       2022-11-25 12:38:53 +08:00 via iPhone
    @interim 多来点
    yopv2
        4
    yopv2  
       2022-11-25 12:46:20 +08:00
    虽然我知道发帖会增加你们的热度 ,但是你们这种推广也太……
    ElicaKing
        5
    ElicaKing  
       2023-10-26 14:23:34 +08:00
    你好,我是公众号《桑小榆呀》号主,觉得此篇内容非常有趣,能给到大家一些学习和帮助,希望能够分享到我的公众号,还望您能允许~谢谢!
    Casbin
        6
    Casbin  
    OP
       2023-10-26 15:15:13 +08:00
    @ElicaKing 好呀,感谢~ 可以加 V 详聊: Y2FzYmluMjAyMw== (base64)
    jiangzm
        7
    jiangzm  
       307 天前
    @interim #1 黑在哪,推广不是正常的吗。 除非有后门其他都是尬黑
    interim
        8
    interim  
       307 天前
    @jiangzm V2EX 搜搜就知道了,不止这件事。
    pytth
        9
    pytth  
       307 天前 via iPhone
    说真的,这种属于反向推广。
    akaHenry
        10
    akaHenry  
       303 天前 via Android
    @pytth 何止是反向推广。

    v2 置顶广告,天天刷屏,出来秀下限。

    日常招黑,早就 Block 了。还是时不时能刷到。🥲
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1047 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 20:09 · PVG 04:09 · LAX 12:09 · JFK 15:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.