增加 OAuth2 删除令牌

This commit is contained in:
YunaiV
2020-06-26 18:48:06 +08:00
parent d52054cd74
commit 0857da5a22
3 changed files with 51 additions and 1 deletions

View File

@@ -3,6 +3,7 @@ package cn.iocoder.springboot.lab68.authorizationserverdemo.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer;
import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer;
@@ -22,9 +23,17 @@ public class OAuth2AuthorizationServerConfig extends AuthorizationServerConfigur
@Autowired
private AuthenticationManager authenticationManager;
/**
* 用户详情 Service
*/
@Autowired
private UserDetailsService userDetailsService;
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints.authenticationManager(authenticationManager);
endpoints.authenticationManager(authenticationManager)
.userDetailsService(userDetailsService)
;
}
@Override

View File

@@ -5,8 +5,10 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.BeanIds;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.password.NoOpPasswordEncoder;
@Configuration
@@ -19,6 +21,12 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
return super.authenticationManagerBean();
}
@Override
@Bean(name = BeanIds.USER_DETAILS_SERVICE)
public UserDetailsService userDetailsServiceBean() throws Exception {
return super.userDetailsServiceBean();
}
@Bean
public static NoOpPasswordEncoder passwordEncoder() {
return (NoOpPasswordEncoder) NoOpPasswordEncoder.getInstance();
@@ -35,4 +43,12 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
.withUser("yunai").password("1024").roles("USER");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests()
.mvcMatchers("/token/demo/revoke").permitAll()
.anyRequest().authenticated();
}
}

View File

@@ -0,0 +1,25 @@
package cn.iocoder.springboot.lab68.authorizationserverdemo.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.oauth2.provider.token.ConsumerTokenServices;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* Token 示例 Controller
*/
@RestController
@RequestMapping("/token/demo")
public class TokenDemoController {
@Autowired
private ConsumerTokenServices tokenServices;
@PostMapping(value = "/revoke")
public boolean revokeToken(@RequestParam("token") String token) {
return tokenServices.revokeToken(token);
}
}