背景: 网上很多讲配置 oauth2 ,配置方法 复杂纷繁对于初学者很不友好,让人望而却步
欢迎关注本系列博客 基于 spring cloud 最新版本 hoxton 完成oauth2 的实践
基于 Spring Cloud OAuth ,用简洁的方式搭建oauth的认证中心,关于oauth2 的授权模式 请直接参考 [阮一峰 OAuth 2.0 的四种方式的详细介绍](http://www.ruanyifeng.com/blo...
项目版本核心说明名称版本Spring Boot2.2.0.M5Spring CloudHoxton.M2Spring Cloud OAuth22.2.0.M2开始配置认证服务器maven 依赖引入这里只需要引入web、 cloud-oauth 即可,暂不引入spring cloud 其他组件org.springframework.bootspring-boot-starter-weborg.springframework.cloudspring-cloud-starter-oauth2配置web安全,拦截全部的请求获取web 上下文AuthenticationManager 注入到spring中,方便后边oauth server注入创建UserDetailsService的内存实现,注入一个测试用户@Configuration@EnableWebSecurity@EnableGlobalMethodSecurity(prePostEnabled = true)public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {/** * 必须注入 AuthenticationManager,不然oauth 无法处理四种授权方式 * * @return * @throws Exception */@Bean@Overridepublic AuthenticationManager authenticationManagerBean() throws Exception {return super.authenticationManagerBean();}/** * 必须注入UserDetailsService ,不然oauth 密码模式等死循环问题 * * @return */@Bean@Overrideprotected UserDetailsService userDetailsService() {InMemoryUserDetailsManager userDetailsManager = new InMemoryUserDetailsManager();userDetailsManager.createUser(User.withUsername("lengleng").password("{noop}lengleng").authorities("USER").build());return userDetailsManager;}}配置oauth2 认证服务器配置clientId 信息,及其支持的授权模式,特别注意这里是五种包含一个刷新操作@Configuration@EnableAuthorizationServerpublic class BigAuthServerConfiguration extends AuthorizationServerConfigurerAdapter {@Autowiredprivate AuthenticationManager authenticationManager;@Autowiredprivate UserDetailsService userDetailsService;@Overridepublic void configure(ClientDetailsServiceConfigurer clients) throws Exception {clients.inMemory().withClient("appid").secret("{noop}secret").authorizedGrantTypes("password", "authorization_code", "client_credentials", "implicit", "refresh_token").scopes("all");}@Overridepublic void configure(AuthorizationServerEndpointsConfigurer endpoints) {endpoints.authenticationManager(authenticationManager).userDetailsService(userDetailsService);}}以上完成了认证服务器的功能
测试密码模式curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d 'grant_type=password&username=lengleng&password=lengleng&scope=all' "http://appid:secret@localhost:8764/oauth/token"开始配置资源服务器maven 依赖引入这里只需要引入web、 cloud-oauth 即可,暂不引入spring cloud 其他组件org.springframework.bootspring-boot-starter-weborg.springframework.cloudspring-cloud-starter-oauth2配置客户端信息security: oauth2:client: client-id: appid client-secret: secret scope: allresource: # 认证中心的check_token 接口地址 token-info-uri: http://127.0.0.1:8764/oauth/check_token应用