Spring OAuth2解释了授权服务器配置

Bub*_*lik 4 java spring spring-security oauth-2.0 spring-security-oauth2

我正在尝试实现OAuth安全性并遇到一个问题,对我来说配置类不够清晰.

实施时AuthorizationServerConfigurer我有三个配置器:

  • ClientDetailsServiceConfigurer用于提供如何以及从何处获取客户详细信息的方式.例如,它可以是从数据库提供注册客户端的服务.

说到了 AuthorizationServerSecurityConfigurer,AuthorizationServerEndpointsConfigurer我不确定他们做了什么或者应该如何配置.在文档中它只说:

AuthorizationServerEndpointsConfigurer:定义授权和令牌端点以及令牌服务.

也许有人可以用简单的词语解释这两个配置器做了什么,或者它们用于什么.

Ali*_*ani 8

AuthorizationServerConfigurerjavadoc比链接文档更具信息性.AuthorizationServerSecurityConfigurer顾名思义,它配置授权服务器本身的安全性.例如,您可以覆盖OAuth端点安全性,例如/oauth/token,提供拒绝访问的处理程序或限制SSL访问.以下是文档中所说的内容:

配置授权服务器的安全性,实际上意味着/oauth/token端点.该/oauth/authorize 终端还需要是安全的,但是这是一个正常的面向用户的终端和应该固定方式与UI的其余部分相同,所以这里不讨论.默认设置涵盖了最常见的要求,遵循OAuth2规范的建议,因此您无需在此处执行任何操作即可启动和运行基本服务器.

至于AuthorizationServerEndpointsConfigurer:

配置Authorization Server端点的非安全功能,如令牌存储,令牌自定义,用户批准和授权类型.默认情况下,您不需要做任何事情,除非您需要密码授予,在这种情况下您需要提供密码 AuthenticationManager.

以下是我的一个项目的示例:

@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
    endpoints
            .authenticationManager(authenticationManager)
            .tokenStore(jwtTokenStore())
            .tokenEnhancer(tokenEnhancer());
}
Run Code Online (Sandbox Code Playgroud)

在这里,我提供了一个JwtTokenStore和我一样TokenStore,AuthenticationManager因为我使用的是密码授予.