Den*_*nov 2 java spring spring-security jwt spring-security-oauth2
我正在尝试使用JWT令牌实现OAuth2身份验证.如果我理解,我需要向授权服务器发送凭据,这将验证我的凭据,并返回签名的JWT令牌.接下来我尝试了WebSecurityConfig扩展的工具WebSecurityConfigurerAdapter,在那里我必须设置哪些端点是安全的,哪些不是.
但我的问题是:我需要资源服务器吗?它和我的潜力一样WebSecurityConfig,或不同?
我的目标是为我的网站创建简单的JWT身份验证.
是的,您需要通过扩展来配置受JWT保护的资源ResourceServerConfigurerAdapter.基本实现可能如下所示
@Configuration
@EnableResourceServer
public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
}
}
Run Code Online (Sandbox Code Playgroud)
这意味着您不需要扩展,WebSecurityConfigurerAdapter因为上面的配置配置了HttpSecurity您要配置的同一对象WebSecurityConfigurerAdapter.这public void configure(HttpSecurity http)两个类都是同一件事.
我们要选择的原因ResourceServerConfigurerAdapter了WebSecurityConfigurerAdapter,因为它是你使用的是弹簧安全的oauth2模块的一部分,将被框架在幕后使用.
您当然需要确保为授权服务器和资源服务器使用相同的签名密钥.如果您在同一个应用程序中定义安全配置bean,资源服务器将自动使用相同的bean,否则您将需要复制授权服务器上的任何JWT相关配置.
您需要资源服务器,因为它是OAuth2规范的一部分:
资源服务器
托管受保护资源的服务器,能够使用访问令牌接受和响应受保护资源请求.
因此它也是Spring Security OAuth2的一部分.
资源服务器配置不仅仅是安全配置,请参阅OAuth 2开发人员指南:
资源服务器配置
资源服务器(可以与授权服务器或单独的应用程序相同)提供受OAuth2令牌保护的资源.Spring OAuth提供了一个实现此保护的Spring Security身份验证过滤器.您可以
@EnableResourceServer在@Configuration类上打开它,并使用a配置它(根据需要)ResourceServerConfigurer.可以配置以下功能:
- tokenServices:定义令牌服务的bean(ResourceServerTokenServices的实例).
- resourceId:资源的id(可选,但建议由auth服务器验证,如果存在).
- resourecs服务器的其他扩展点(例如,tokenExtractor用于从传入请求中提取令牌)
- 请求受保护资源的匹配器(默认为所有)
- 受保护资源的访问规则(默认为plain"authenticated")
- Spring Security中HttpSecurity配置器允许的受保护资源的其他自定义
该
@EnableResourceServer注释添加类型的过滤器OAuth2AuthenticationProcessingFilter自动Spring Security的过滤器链.
您可以将Spring Security配置(WebSecurityConfigurerAdapter)用于Spring Security中HttpSecurity配置器允许的受保护资源的其他自定义,但最好使用资源服务器配置,因为:
这是推荐的方式.
我将尝试用一个例子来回答:假设您想编写一个很棒的很酷的 Web 应用程序,它可以以某种方式一起管理 GMAIL 帐户和 Google 日历数据。显然,您的用户必须使用他们的 google 凭据登录,以便您的应用程序可以获取他们的数据并对其进行管理。您的应用程序管理用户的数据,而无需获取用户的凭据。
到现在为止还挺好。
在此示例中,授权服务器是 Google 帐户。该资源服务器是谷歌,主要和谷歌日历(两者)和客户端为您的应用程序。
希望这是有道理的。
| 归档时间: |
|
| 查看次数: |
8300 次 |
| 最近记录: |