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

Oauth2 Spring中的JWT令牌

魏烨熠
2023-03-14

我已经在Oauth2框架中实现了JWT令牌。在实现之后,我想到的查询很少,如下所示:

1.在实现JWT之前,每当用户以相应的访问令牌作为载体访问资源服务器中的API,资源服务器就使用user-info-uriendpoint与auth服务器进行检查,如下所示

  security:
      oauth2:
        resource:
          user-info-uri: https://localhost:8080/auth/user 

在JWT实现之后,我认为资源服务器和auth服务器之间不会发生检查调用,而是使用公钥验证JWT令牌的签名。但是,在获得JWT令牌之后,为了检查这一点,我停止了auth服务器,尝试查看resource server是否验证了JWT令牌并给出了响应,但是失败了。资源服务器是否与Auth服务器建立任何连接?

2.在JWT实现之前,所有的令牌在数据库中都是持久化的,所以在成功授权后得到一个令牌,而由于令牌在数据库中是持久化的,所以即使再次调用相同的令牌API,令牌也是相同的,直到到期为止。在JWT实现之后,看起来JWT建议不要将生成的令牌持久化到DB,这意味着用户每次调用令牌endpoint都会得到不同的JOT令牌。我们需要在数据库中持久化JWT令牌吗?

3.任何人都可以从http://JWT.io/中的JWT令牌中看到包括用户角色在内的所有用户详细信息,这会产生什么问题吗?

除了上面的问题,还有谁能告诉我在Oauth2中使用JWT令牌的其他优点和缺点吗

共有1个答案

戴霖
2023-03-14

我将回答“我们需要在数据库中持久化JWT令牌吗?”

答案是否定的。JWT的思想是让auth在客户端处理。您应该将JWT发送到客户机,并将其持久化到本地存储中。

 类似资料:
  • 我试图测试我正在构建的一个关于JWT的软件的功能,以了解它,它使用Firebase JWT PHP包 我正在尝试创建一个使用密钥对作为编码/解码的测试用例,但无法获得http://jwt.io页面以使用我的密钥创建令牌。 这些是我使用命令创建的密钥,没有任何修改。 我转到页面,选择HS256/384/512并删除页面默认设置的键。然后我粘贴我的私钥以便对我的数据进行签名。但是,该页面不会生成任何J

  • 在一个小项目上工作并使用jwt令牌进行了一些身份验证,整个过程如下所示: < li >在auth/register上生成jwt令牌以及刷新令牌 < li >使用令牌发出请求 < li >如果令牌过期,我将查询请求用户及其refreshToken,比较其当前请求refreshToken和数据库令牌 < li >如果令牌匹配,我将生成一个新令牌和一个新刷新令牌。 整个问题是第五步,假设我向“/me/f

  • 我注意到惯例是在字段授权下的标题中发送一个JWT。标准是这样发送令牌: 我的问题是为什么我需要把不记名部分为什么不干脆: 当我收到第一个请求时,我需要在验证我的 JWT 时解析每个请求以摆脱持有者。这有什么意义呢?

  • 问题内容: 我目前正在使用Golang应用程序。我从客户端收到JWT令牌,在Go中,我需要对该令牌进行解码并获取以下信息:用户,名称等。我正在检查可用于处理JWT的库令牌,我来到https://github.com/dgrijalva/jwt- go ,但我看不到如何简单地制作所需的东西。 我有令牌,我需要将信息解码为地图或至少为json。在哪里可以找到如何做的指南?谢谢! 问题答案: 函数接受第

  • 我们正在使用JWT Nuget来创建和验证令牌。下面是我们用来创建令牌的代码 我的理解是,这不会加密令牌,因为我能够通过访问jwt.io解析令牌,并且能够读取内容。我想加密令牌,这样它就不应该被解析。我在JWT Nuget中找不到任何可以加密令牌的方法。 那么如何使用JWT nuget对令牌进行签名和加密呢? 编辑: 我知道JWT不需要任何加密,因为只有经过身份验证的用户才能读取令牌,这意味着,我

  • 我已经验证了JWT令牌,它在会话存储中。 计算机1以普通用户身份登录计算机2以管理员身份登录 如果我在会话存储中将机器1 jwt令牌替换为机器2,并且如果我进一步调用api,服务器应该说未经授权的访问。