使用 Spring Security 为 Web 客户端授予针对 REST 服务器的 Oauth2 密码
Posted
技术标签:
【中文标题】使用 Spring Security 为 Web 客户端授予针对 REST 服务器的 Oauth2 密码【英文标题】:Oauth2 password grant for Web Client against REST server using spring security 【发布时间】:2013-08-24 19:09:14 【问题描述】:我们正在开发一个连接到我们自己的 REST 服务器的 javascript Web 客户端。我们希望用户使用 REST 服务器上的帐户登录到 Web 应用程序,以便他们可以根据他们的权限和角色被授权对资源执行 HTTP 操作。
问题是:
当用户使用他通过密码授权收到的访问令牌访问 REST 资源时,spring security 是否会隐含地表现得好像用户在请求期间使用他的帐户登录一样?也就是说,我可以使用@PreAuthorize
注释来保护我的资源,从而为当前主体应用授权规则吗?
【问题讨论】:
【参考方案1】:所以,答案是肯定的。在 uersname-password 流程/授权中,给予登录用户的令牌将用于针对其余层对他进行身份验证。 除了 OAuth 提供的保护资源的安全性之外,这还可用于在应用程序内部进一步授权他。
虽然看起来使用密码授权,但登录用户将只有用户角色,没有客户端角色。客户端和用户都需要具有 OAuth 对资源所需的角色。
【讨论】:
以上是关于使用 Spring Security 为 Web 客户端授予针对 REST 服务器的 Oauth2 密码的主要内容,如果未能解决你的问题,请参考以下文章
使用 Spring Security 为 Web 客户端授予针对 REST 服务器的 Oauth2 密码
如何同时为 Spring Security 正确定义 web.xml 和基于 java 的配置
Spring MVC + Spring Security 登录与一个 REST Web 服务
Spring OAuth2 java.util.LinkedHashMap 无法转换为 org.springframework.security.web.authentication.WebAuthe