security定义的SecurityFilterChain和OAuth2Authorization定义的OAuth2Authorization区别
时间: 2024-03-06 18:10:21 浏览: 314
SecurityFilterChain和OAuth2Authorization是两个不同的概念。
SecurityFilterChain是Spring Security提供的一种机制,用于处理HTTP请求的安全过滤器链。过滤器链是由一组过滤器组成的,这些过滤器对请求进行处理,在处理请求的过程中,可以进行认证、授权、跨站点请求伪造(CSRF)保护等操作。每个过滤器都可以决定是否放行请求,或者是否需要进行进一步的处理。SecurityFilterChain可以保护应用程序的安全,防止未经授权的请求进入应用程序。
OAuth2Authorization是OAuth2授权机制的一部分,它是一种授权框架,用于管理用户授权应用程序访问他们的资源。OAuth2Authorization定义了一组规则,用于授权应用程序访问资源,并保护用户的安全。OAuth2Authorization可以防止应用程序访问未经授权的资源,同时也可以防止用户的凭据被共享给未经授权的应用程序。
因此,SecurityFilterChain和OAuth2Authorization是不同的概念,但它们都是与应用程序的安全相关的技术。SecurityFilterChain用于处理HTTP请求的安全过滤器链,而OAuth2Authorization用于管理用户授权应用程序访问他们的资源。
相关问题
security 和OAuth2Authorization
Security和OAuth2Authorization都是与安全相关的技术。Security是一种框架,它提供了许多功能,如认证、授权和加密等,可以用于保护应用程序的安全。OAuth2Authorization是一种授权机制,它允许用户授权第三方应用程序访问他们的资源,如照片、视频或个人资料等,而不必共享他们的凭据。OAuth2Authorization可以保护用户的安全,因为他们可以选择授权的应用程序,而不必共享自己的凭据给所有应用程序。
Spring security oauth2 Authorization Server Token增强
Spring Security OAuth2 Authorization Server可以通过Token增强器(Token Enhancer)来为授权后返回的Access Token添加额外的信息。Token增强器是一个接口,它接收一个Access Token并返回一个增强后的Access Token。在Authorization Server配置类中,可以通过调用tokenEnhancer()方法来设置Token增强器,示例代码如下:
```java
@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {
@Autowired
private AuthenticationManager authenticationManager;
@Autowired
private UserDetailsService userDetailsService;
@Autowired
private DataSource dataSource;
@Bean
public TokenStore tokenStore() {
return new JdbcTokenStore(dataSource);
}
@Bean
public JwtAccessTokenConverter accessTokenConverter() {
JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
converter.setSigningKey("123456");
return converter;
}
@Bean
public TokenEnhancer tokenEnhancer() {
return new CustomTokenEnhancer();
}
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.jdbc(dataSource);
}
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints.authenticationManager(authenticationManager)
.userDetailsService(userDetailsService)
.tokenStore(tokenStore())
.accessTokenConverter(accessTokenConverter())
.tokenEnhancer(tokenEnhancer());
}
@Override
public void configure(AuthorizationServerSecurityConfigurer oauthServer) throws Exception {
oauthServer.tokenKeyAccess("permitAll()")
.checkTokenAccess("isAuthenticated()")
.allowFormAuthenticationForClients();
}
}
```
在上面的代码中,CustomTokenEnhancer是一个自定义的Token增强器,它可以在Access Token中添加额外的信息。示例代码如下:
```java
public class CustomTokenEnhancer implements TokenEnhancer {
@Override
public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {
Map<String, Object> additionalInfo = new HashMap<>();
additionalInfo.put("organization", authentication.getName() + "@test.com");
((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(additionalInfo);
return accessToken;
}
}
```
在上面的代码中,我们向Access Token中添加了一个名为“organization”的信息,它的值为当前用户的用户名加上@test.com。这种方式可以为Access Token添加任何我们需要的信息。
阅读全文