ResourceServerConfig.java 4.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package com.yihu.base.security.config;
  2. import com.yihu.base.security.properties.SecurityProperties;
  3. import com.yihu.base.security.rbas.provider.AuthorizeConfigProviderManager;
  4. import com.yihu.base.security.sms.SmsCodeAuthenticationSecurityConfig;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.context.ApplicationContext;
  7. import org.springframework.context.annotation.Bean;
  8. import org.springframework.context.annotation.Configuration;
  9. import org.springframework.context.annotation.Primary;
  10. import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
  11. import org.springframework.security.config.annotation.web.builders.HttpSecurity;
  12. import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
  13. import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
  14. import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
  15. import org.springframework.security.oauth2.config.annotation.web.configurers.ResourceServerSecurityConfigurer;
  16. import org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationManager;
  17. import org.springframework.security.oauth2.provider.expression.OAuth2MethodSecurityExpressionHandler;
  18. import org.springframework.security.oauth2.provider.expression.OAuth2WebSecurityExpressionHandler;
  19. import org.springframework.security.oauth2.provider.token.TokenStore;
  20. import org.springframework.security.web.access.expression.DefaultWebSecurityExpressionHandler;
  21. import org.springframework.security.web.authentication.AuthenticationFailureHandler;
  22. import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
  23. import org.springframework.util.Base64Utils;
  24. /**
  25. * Created by chenweida on 2017/12/4.
  26. */
  27. @Configuration
  28. @EnableResourceServer //开启资源服务器
  29. public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
  30. @Autowired
  31. protected AuthenticationSuccessHandler authenticationSuccessHandler;
  32. @Autowired
  33. protected AuthenticationFailureHandler authenticationFailureHandler;
  34. @Autowired
  35. private OAuth2AuthenticationManager authenticationManager;
  36. @Autowired
  37. private TokenStore redisTokenStore;
  38. @Autowired
  39. private SmsCodeAuthenticationSecurityConfig smsCodeAuthenticationSecurityConfig;
  40. @Autowired
  41. private AuthorizeConfigProviderManager authorizeConfigProviderManager;
  42. @Autowired
  43. private OAuth2WebSecurityExpressionHandler oAuth2WebSecurityExpressionHandler;
  44. @Override
  45. public void configure(HttpSecurity http) throws Exception {
  46. http
  47. .csrf().disable()
  48. .formLogin()//设置验证码 账号密码登陆
  49. .loginPage(SecurityProperties.formLoginPage)
  50. .loginProcessingUrl(SecurityProperties.formLogin)
  51. .successHandler(authenticationSuccessHandler)
  52. .failureHandler(authenticationFailureHandler)
  53. .and()
  54. .apply(smsCodeAuthenticationSecurityConfig) //添加自定义短信登陆;
  55. ;
  56. //验证路径
  57. authorizeConfigProviderManager.config(http.authorizeRequests());
  58. }
  59. @Override
  60. public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
  61. resources.
  62. authenticationManager(authenticationManager)
  63. .tokenStore(redisTokenStore)
  64. .expressionHandler(oAuth2WebSecurityExpressionHandler);
  65. }
  66. /**
  67. * 解决bug
  68. * Failed to evaluate expression '#oauth2.throwOnError
  69. * No bean resolver registered in the context to resolve access to bean
  70. * @param applicationContext
  71. * @return
  72. */
  73. @Bean
  74. @Primary
  75. public OAuth2WebSecurityExpressionHandler oAuth2WebSecurityExpressionHandler(ApplicationContext applicationContext) {
  76. OAuth2WebSecurityExpressionHandler expressionHandler = new OAuth2WebSecurityExpressionHandler();
  77. expressionHandler.setApplicationContext(applicationContext);
  78. return expressionHandler;
  79. }
  80. }