Spring Cloud Oauth2 初探
OAuth2 spring cloud spring security
一个原则: 使用前一定先看官方文档,看不懂再来搜寻第三方资料。
一个Spring框架的应用,需要一种能够保护 API 接口的实现,尝试过 OAuth1.0 ,发现更多的是有关 OAuth2.0 的讨论,且Spring Security 也有队 OAuth2 的支持,于是转而使用 OAuth2 。
其中核心依赖仅有
其中 Spring Security 已经包含在 Starter 中,无需再次声明,以保持 pom 简洁。
要使用OAuth2 服务器,仅需要使用 @EnableAuthorizationServer 注解。
此外OAuth2 Server还依赖于Spring Security,还需要加上 @EnableWebSecurity 注解。
当然,这还不够,根据Spring Security官方文档,你还需要继承 WebSecurityConfigurerAdapter 类以使Security配置生效。
你可以继承但不做任何改动,以使用默认配置。
OAuthServerConfig.class
启动程序,可以看到 OAuth2 的相关接口已经实现了,Spring 的自动配置已经为我们做了许多工作了,以致于我们可以开箱即用。
值得注意的是,自动配置类为我们生成了一个用户名为: user 的 "user" 和一个 "client" :
尝试携带上面的信息进行 GET 请求:
http://127.0.0.1:8080/oauth/authorize?client_id=64b5dabe-a97c-4f60-8492-acd24fc7599d&response_type=code&scope=user&redirect_uri=http://www.baidu.com
会跳转到 /login 页面进行登录验证,填入 user 和 log 中的密码 d457f3b2-a3d7-4ace-bfaf-44ab7bfd8ccc 即可验证通过。
重新跳转回授权页面,选择 Approve 同意并进行授权后,页面跳转至 redirect_url 并携带 code 信息。
取得 code 之后,就可以向服务器继续请求 access-token 了,使用 POST 方法继续请求。
http://127.0.0.1:8080/oauth/token?grant_type=authorization_code&code=bPVWmn&redirect_uri=http://www.baidu.com&scope=user
不出意外,你将会看到以下信息:
至此,我们已经完成了一整个 authorization_code 类型的OAuth2授权了。
同样的,你只需要一个依赖:
//todo: 未完成...
2023-07-25 广告