spring authorization server和spring security oauth
时间: 2023-10-10 09:15:40 浏览: 220
Spring Authorization Server是一个用于OAuth 2.0和OpenID Connect协议的认证和授权服务器。它是Spring Security项目的一部分,旨在简化Spring应用程序中的身份验证和授权流程。它提供了一组可配置、可扩展的安全性特性,包括令牌的生成、验证和刷新,以及用户身份验证和授权的管理。
Spring Security OAuth是Spring Security项目提供的一个模块,用于实现OAuth 2.0和OpenID Connect协议。它提供了一组可重用的组件,用于构建和集成OAuth 2.0和OpenID Connect协议的客户端和服务端。
相关问题
spring authorization server 和 spring security 区别
Spring Security是一个安全框架,它通过提供一系列的安全过滤器和认证/授权组件来保护应用程序中的资源。Spring Authorization Server是一种基于OAuth 2.0和OpenID Connect的授权服务器,它允许应用程序提供和验证令牌,以授权和保护访问资源。简言之,Spring Security是一个通用的安全框架,而Spring Authorization Server是专为OAuth 2.0和OpenID Connect设计的授权服务。
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添加任何我们需要的信息。
阅读全文