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

Spring Security JWT和Oauth2

徐智渊
2023-03-14

我想使用Spring Security设置一个中央身份验证/授权服务器,从那里我可以获取JWT令牌,然后我可以使用该令牌访问另一个Spring Security备份的REST服务器上的受限资源。

以下是我的流程:

我认为JWT最适合这个场景,因为它可以包含所有相关的数据,并且REST服务器可以是完全无状态的,只需解码令牌就可以获得所有必要的数据(role、clientid、email...)在REST服务器上。

Oauth2是正确的选择吗?如果是的话,有人能给我指出正确的方向吗?如果JWT不是正确的选择,我愿意接受其他解决方案:)我应该提到,在我的情况下,也可以在REST服务器上从数据库加载客户机信息,但它不应该负责对用户进行身份验证(意味着没有用户名/密码检查,只是令牌解码/验证……)

共有1个答案

汤弘文
2023-03-14

Cloudfoundry UAA是一个开源的OAuth2 Identity Managemennt解决方案(Apache2),它发布JWT令牌。您可以查看它的实现方式,或者只是自己使用它,或者作为服务器使用,或者只是使用JAR。它实现了Spring OAuth中的一系列现有策略。它还可以有自己的用户数据库,或者您可以实现自己的用户数据库。它有很多选项和扩展点,很多人以各种方式使用它(并不是所有使用Cloudfoundry的方法),因为它被设计成通用的。

Spring OAuth2.0也支持JWT令牌,但它还没有发布(大部分实现来自UAA)。

但是,既然您说您不介意不透明令牌(和数据库查找),那么您可能更愿意在Spring OAuth1.0中使用JDBC支持。在我们转移到JWT之前,它已经在Cloudfoundry中使用了相当长的一段时间,所以我可以在生产中为它做担保。

至于OAuth2对于您的用例是否是一个好的选择:您处于最好的位置来决定这一点。到目前为止你说的都不让我觉得这是个坏主意。如果有帮助的话,我做了一个演示(如果你喜欢的话,你可以在YouTube的SpringSource频道上找到它)。

 类似资料:
  • connect(“outlook.office365.com”,“my_email_id,access_token”);//这里的存储是imap 我设置的属性是:properties.put(“mail.smtp.port”,“587”);SetProperty(“mail.imap.socketFactory.class”、“javax.net.ssl.sslsocketFactory”);Se

  • 我试图在一个web应用程序(Java1.8/Tomcat8)中使用最新的JavaMail1.6.0 api,代表该应用程序的客户机用户发送电子邮件。一些客户使用Gmail。我不想要求他们按照javamail FAQ的建议,在他们的谷歌账户中允许访问不安全的应用程序,如果需要的话,我愿意实现oauth2。 创建了一个应用程序 为应用程序(clientid,clientsecret)创建了oauth2

  • 当我们使用axios客户机从节点服务器访问API时,它总是运行以下错误:

  • 我们使用带有oauth2的微服务作为安全机制。目前,我们使用OAuth2RestTemplate调用其他微服务,如下所示: 我们正在使用@Autowoe注入OAuth2RestTemboard,如下所示: 因此,我们下一步要做的是让这些电话可以追踪。我们想使用spring cloud sleuth。 所以我添加了依赖项如下: 此后,Spring无法再自动连接OAuth2RestTemplate:

  • 我在通过oauth2-proxy/keycloak对kubernetes webapp进行身份验证时遇到问题。你不知道出了什么问题 WebApp(test-app.domain.com) oauth2-proxy(oauth2-proxy.domain.com) keycloak(keycloak-test.domain.com) Keycloak登录页面显示正确,但在用户登录后,我得到:500

  • 问题内容: 关于它们有很多传说。我想知道真相。以下两个示例之间有什么区别? 问题答案: 不确定从何处获得传说,但: 提交按钮 与: IE6将在标记之间提交此按钮的所有文本,其他浏览器将仅提交值。使用可使您在按钮的设计上享有更大的布局自由度。从各种意图和目的看,它乍一看似乎很棒,但是各种浏览器怪癖使它有时很难使用。 在您的示例中,IE6将发送到服务器,而其他大多数浏览器将不发送任何内容。要使其跨浏览