我正在尝试实现OAuth安全性并遇到了一个问题,对我来说配置类不够清楚。
在实施http://localhost:8000/search?category=title&term=hello+world
时,我有三个配置器:
AuthorizationServerConfigurer
用于提供获取客户详细信息的方式和方式。例如,它可以是从数据库中提供注册客户端的服务。说到ClientDetailsServiceConfigurer
和AuthorizationServerSecurityConfigurer
我不确定他们做了什么或者应该如何配置。在documentation它只说:
AuthorizationServerEndpointsConfigurer
:定义授权和 令牌端点和令牌服务。
也许有人可以用简单的词语解释这两个配置器做了什么,或者它们用于什么。
答案 0 :(得分:8)
AuthorizationServerConfigurer
的javadoc比链接文档更具信息性。 AuthorizationServerSecurityConfigurer
,顾名思义,配置授权服务器本身的安全性。例如,您可以覆盖OAuth端点安全性,例如/oauth/token
,提供访问被拒绝的处理程序或限制SSL访问。以下是文档中所说的内容:
配置授权服务器的安全性,即 实用术语
/oauth/token
端点。/oauth/authorize
端点也需要是安全的,但这是一个普通的面向用户 端点,应该以与UI其余部分相同的方式加以保护,所以 这里没有涉及。 默认设置涵盖最常见的设置 要求,遵循OAuth2规范的建议,所以你 不需要在此处执行任何操作即可启动并运行基本服务器。
至于AuthorizationServerEndpointsConfigurer
:
配置授权服务器的非安全功能 端点,如令牌存储,令牌自定义,用户批准和 授权类型。除非你,否则你不应该默认做任何事情 需要密码授予,在这种情况下你需要提供一个
AuthenticationManager
。
以下是我的一个项目的示例:
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints
.authenticationManager(authenticationManager)
.tokenStore(jwtTokenStore())
.tokenEnhancer(tokenEnhancer());
}
由于我使用的是密码授予,因此我提供了JwtTokenStore
作为我的TokenStore
和AuthenticationManager
。
答案 1 :(得分:1)
我正在使用spring-security-oauth,有一个有用的文档可能会帮助你:
projects.spring.io/spring-security-oauth/docs/oauth2.html