当前位置: 首页 > 知识库问答 >
问题:

创建隐式JWT时Spring BootOAuth2?

傅茂实
2023-03-14

如何将OAuth2 SSO主体的详细信息获取到我的JWT中?(Oauth2AuthenticationGetDetails实例作为Oauth2AuthenticationDetailsGetDecodedDetails返回NULL)

我有...

>

  • Angular 6客户端(隐式登录为Acme客户端)(使用Angular-oauth2-oidc)
  • Spring BootOAuth2授权服务器,带有JWTTokenService配置,第三方SSO到GitHub

    身份验证服务器配置为acme作为implicit和用于SSO的GitHub客户端

      null
    • 直接获得一个主体,它包含GitHub的所有详细信息(yay)
    • 通过授权:承载...头传递令牌的Angular应用程序间接地提供了一个主体,它包含Acme客户端(ugh)
    • 的最低OAuth客户端信息

    我尝试过自定义的标记增强器,但oauth2authentication实例已经是最小的实例,没有详细信息。而且,当从Angular发起调用时,它的会话cookie与我直接调用它时的会话cookie不一样(我不想共享会话--我想把细节放在JWT中)。

    [更新#1]

    final JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
    converter.setAccessTokenConverter(new CustomTokenConverter());
    
  • 共有1个答案

    勾裕
    2023-03-14

    Spring Lemon实现这一点的方法是替换OAuth2和OpenID连接用户服务(参见Spring security文档)。有关详细信息,请参阅LemonoAuth2UserServiceLemonoIdcUserService。对于无状态,它将一个短命的JWT令牌作为param传递给客户端到targetUrl,您可以在其oauth2authenticationsuccesshandler类中看到。它使用一些cookies机制来无状态地执行所有这些操作,通过查看它的HttpCookieOuth2AuthorizationRequestRepository以及它是如何配置的,可以进一步理解这一点。

    这里有一篇文章对此进行了更详细的解释:https://www.naturalprogrammer.com/blog/1681261/spring-security-5-oauth2-login-signup-stateless-restful-web-services。

     类似资料:
    • 我试图理解隐式创建模式之间的确切区别,以及在什么特定场景中可以使用哪种方法 在数据库网站上,信息并不是那么随意 正如我们所看到的,当使用反射(隐式RDD to DF)方式时,我们可以通过使用Map函数从文本文件中选择特定列来创建Case类。 在编程风格中-我们正在加载数据集的文本文件(类似于反射) 创建SchemaString(String)=“知道我们可以指定所需列的文件”(类似于case类的反

    • 我试图仅使用bash和openSSL构建一个RS256 JWT令牌(我的开发工具有限)。 我设计了一个脚本,它从txt文件中获取标头和有效负载(删除换行符等),base 64URL对它们进行编码并将它们与“.”分隔符连接在一起。 然后我尝试对输出进行签名,我还对输出进行了base-64URL编码并附加到末尾(使用另一个“.”分隔符)。我相信这准确地反映了JWT模型。 我的私钥和证书是使用openS

    • 我正在尝试使用JWT创建一个演示/测试RS256 JWT。IO网站。每次我尝试在该网站上创建JWT时,它都会说签名无效。 签名公钥由网站自动提供 有什么我错过的把戏吗? 旁注1:我已经删除了值,因为我不确定这是否敏感...即使这只是一些蹩脚的演示JWT学习/实验。 旁注2:我实际上在使用Auth0进行委托身份验证。我有一个完整的RS256令牌,Auth0已经给了我。。。并且可以在JWT中显示。我。

    • 我最初有两个隐含的规则(为了清楚起见,简化了): 但问题是,在OS X和Linux上,是空白的,这导致规则匹配错误的东西。所以我尝试使用静态模式规则,如下所示: 其中是目标,因此没有扩展。但是现在,正在为以. cpp结尾的源运行顶级规则。我该如何解决这个问题? 有关完整示例: Makefile: 测试.cpp: 这会打印出错误:

    • 我最近在玩KONG API gateway。 我想在每个JWT上签名,并在所有micros中共享一个秘密。我之所以需要这个,是因为我希望其他micros能够解码给定的JWT,提取有效负载数据并处理它(例如有效负载中的\u user\u id\u字段)。 当我尝试为第一个消费者创建JWT时,它工作得很好。但是当我尝试为第二个消费者创建它时,我得到了以下错误: <代码>{u'secret:u”已存在,

    • 我是新来的邮递员;通常我使用卷曲: 这个得到JTW 另一个使用了之前得到的JTW 我用它来生成令牌 但是在邮差签名法中我还没有找到HS512