【问题标题】:Spring oauth2 token based authenticationSpring oauth2 基于令牌的身份验证
【发布时间】:2020-03-03 17:29:49
【问题描述】:

我有两个关于 spring oauth2 的疑问 -

1) 对于客户端凭据授权类型,作为 /oauth/token 调用的一部分,是否可以通过远程服务调用验证客户端 ID 和机密,而不是在数据库或内存中维护客户端凭据,因为客户端凭据是在远程系统中维护?如果客户端凭据在远程系统中维护,令牌是否仍可以在我的应用程序中维护(在内存或数据库中)?

2) 在为移动/原生应用程序构建 REST 后端时,应该使用哪种授权类型以便能够为每个登录用户生成唯一令牌,这样一个登录用户就无法使用该令牌为另一个登录用户生成?

问候, 雅各布

【问题讨论】:

标签: spring-boot spring-security-oauth2 spring-oauth2


【解决方案1】:

只是为了解决问题 2:使用 passwordrefresh_token 授权。 See 示例配置。

如果您想对其进行深入解释,请参阅Practical Guide to Building an API Back End with Spring Boot(免责声明:我是作者)

【讨论】:

  • 谢谢维姆。根据代码,前端应用程序似乎需要传递客户端 ID 和密码才能使用密码授权。这意味着应用程序需要将其存储在本地,这可能存在安全风险。同样通过密码授予,为同一客户端的一个用户颁发的令牌是否可以被另一个用户用于同一客户端(因为客户端 ID 相同)?
  • 要知道是什么用户在调用您的 REST api,您需要在控制器方法中使用 @AuthenticationPrincipal Principal principal 参数。 principal 将引用用户。
最近更新 更多