V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
OysterQAQ
V2EX  ›  问与答

请问如何往一个 Java 服务中集成 oauth2 authorization server(求推荐类库)

  •  
  •   OysterQAQ · 2021-01-02 14:58:02 +08:00 · 1834 次点击
    这是一个创建于 1210 天前的主题,其中的信息可能已经有所发展或是发生改变。

    希望有做过类似需求的朋友可以提供宝贵的经验(推荐一些类库或者关键词),感谢🙏

    需求与场景

    使用 oauth2 将自有应用的用户系统接入 flarum 论坛系统,以此来减少论坛维护成本

    已经获取的情报

    • flarum 支持 oauth2 接入,插件名是 FoF Passport*(不确定是否能设定成仅能从 oauth2 登录,不希望用户再自行注册)

      插件所需要的东西:

    • 我应该只需要一个 oauth2 authorization server 而不需要资源服务器

    • 目前了解到的类库有:

      • spring-security-oauth:已经被标注为过时,但是文章比较丰富,spring 团队用来替代它的 spring-authorization-server 资料非常少,而且处于刚起步
      • pac4j:好像很多都是搭配 spring security 用的
      • Nimbus:感觉资料比 pac4j 还少
    第 1 条附言  ·  2021-01-03 10:42:21 +08:00
    现在参考 spring-authorization-server 的例子能跑起来,目前问题是想资源服务器和授权服务器放在一起,以及现有 jwt 如何集成 spring security
    第 2 条附言  ·  2021-01-04 09:40:11 +08:00
    最后还是打算自己写了
    11 条回复    2021-01-03 13:36:46 +08:00
    OysterQAQ
        1
    OysterQAQ  
    OP
       2021-01-02 15:17:56 +08:00
    项目使用的 spring boot 目前没有引入 spring security 用的是自己写的基于 jwt 的权限控制
    chihiro2014
        2
    chihiro2014  
       2021-01-02 15:19:36 +08:00
    Spring Security 5.2+已经支持 Oauth2 了,具体可以看看
    OysterQAQ
        3
    OysterQAQ  
    OP
       2021-01-02 15:22:17 +08:00
    @chihiro2014 只有 resource server 和 client 我所需要的是 authorization server,之前 spring security 就没计划做这个 然后在社区的呼声下有了 spring-authorization-server 但是我找不到文档
    chinvo
        4
    chinvo  
       2021-01-02 15:24:25 +08:00 via iPhone
    自己看 OAuth 的 rfc 实现一个啦,核心逻辑很简单的
    OysterQAQ
        5
    OysterQAQ  
    OP
       2021-01-02 15:27:11 +08:00
    @chinvo 感觉自己实现的怕会有问题哈哈,还是倾向于成熟的类库
    WispZhan
        6
    WispZhan  
       2021-01-02 21:10:33 +08:00
    如果你要深度定制 authorization server,建议 spring-security-oauth 。 但是后续维护只能自己来。

    其他的 Pac4j 、nimbus 、MitreID 都只能给你标准的 OAuth 2.0/OIDC 协议支持。 如果要扩展 Authorization Flow 。你还是得深入了解协议和实现。(个人建议不要魔改任何白皮书里的东西,首先就要吐槽各大国内平台,魔改协议对接定制程度千奇百怪。)

    至于你现有 JWT,如果它足够标准化,可以很容易的集成进去。
    mikulch
        7
    mikulch  
       2021-01-03 10:22:38 +08:00 via iPhone
    @chihiro2014 可能是我智商问题,这个东西我觉得上手真的好难啊。
    OysterQAQ
        8
    OysterQAQ  
    OP
       2021-01-03 10:39:58 +08:00
    @mikulch security 是挺复杂的 而且只能看文档了 没有相关书籍
    mmdsun
        9
    mmdsun  
       2021-01-03 11:03:24 +08:00 via Android
    @OysterQAQ spring GitHub 上有很多 samples,配合文档参考应该够了

    https://github.com/spring-projects/spring-security/tree/master/samples/boot
    OysterQAQ
        10
    OysterQAQ  
    OP
       2021-01-03 11:55:15 +08:00 via iPhone
    卧槽,怎么一直置顶了
    OysterQAQ
        11
    OysterQAQ  
    OP
       2021-01-03 13:36:46 +08:00
    @mmdsun 感觉还是有点怪 可能还是不集成进原有的项目了 引入 spring security 太怪了 单独用 spring-security-oauth 来做个吧 不知道资源服务器和认证服务器能不能做在一起
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5270 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 09:20 · PVG 17:20 · LAX 02:20 · JFK 05:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.