【发布时间】:2019-10-18 03:11:56
【问题描述】:
我得到了一个 spring boot web api 项目。有一个颤振应用程序会将 jwt 令牌作为请求发送,api 必须从有效负载中获取“票证”值,然后检查数据库并发送所需的数据。我完全是这个领域的新手,但我别无选择,只能完成它。
我想通过接受令牌并尝试对其进行解码并获取“票证”值来使事情变得简单。但我无法这样做,因为我一开始就无法获得令牌。 身份验证由其他一些 api 完成,并将 jwt 令牌提供给颤振应用程序。然后颤振应用程序将在任何请求中将该令牌发送到我的 api。我有一个包含所需数据的示例数据库,并且必须使用数据库中的“票证”(充当用户名)解析请求并提供数据。我不必执行任何身份验证部分 - 我只需从请求中提取令牌 - 对其进行解码并获取“票证”值,并且必须搜索数据库并提供数据。
token : eyJhbGciOiJIUzUxMiJ9.eyJ0aWNrZXQiOiJzdmxhZGFAZ21haWwuY29tIiwic2NvcGVzIjpbIlJPTEVfQURNSU4iLCJST0xFX1BSRU1JVU1fTUVNQkVSIl0sImlzcyI6Imh0dHA6Ly9zdmxhZGEuY29tIiwiaWF0IjoxNDcyMzkwMDY1LCJleHAiOjE0NzIzOTA5NjV9.uaHqDrTNnn5TAljcWRYac9ifJJv5NR5cdn7id2xVCAKLD37_pY62jPlk70XtwqgSar03n2qEgzWyTdWXRcnsgQ
reuest : localhost:8080/persons?access_token=eyJhbGciOiJIUzUxMiJ9.eyJ0aWNrZXQiOiJzdmxhZGFAZ21haWwuY29tIiwic2NvcGVzIjpbIlJPTEVfQURNSU4iLCJST0xFX1BSRU1JVU1fTUVNQkVSIl0sImlzcyI6Imh0dHA6Ly9zdmxhZGEuY29tIiwiaWF0IjoxNDcyMzkwMDY1LCJleHAiOjE0NzIzOTA5NjV9.uaHqDrTNnn5TAljcWRYac9ifJJv5NR5cdn7id2xVCAKLD37_pY62jPlk70XtwqgSar03n2qEgzWyTdWXRcnsgQ
代码不是必需的,我只是想了解它是如何工作的。 YouTube 中有很多视频,但它们都集中在我不必执行的身份验证上,并且没有显示如何处理来自应用程序的请求。任何资源也将是一个很大的帮助。谢谢。
【问题讨论】:
-
您应该使用 Spring Security OAuth2。在这样的 GET 请求中发送凭据是非常糟糕的做法;它们应该在
Authorization标头中,因此它们不会被记录或缓存。 Spring Security 将负责为您解码令牌(一旦您提供密钥),然后您可以使用常规@PreAuthorize和类似的方法添加访问规则。 -
@chrylis 好吧,颤振应用程序的部分不在我的控制范围内。他们只是说令牌将是唯一作为请求发送到 api 的东西,然后 api 应该解决它并使用它来获取所需的数据。谢谢你的回答。
标签: java rest api spring-boot xmlhttprequest