SpringCloud-OAuth2(二):实战篇 (2)

笔记:
为什么要放开 /favicon.ico 的访问权限?因为在进行授权码模式的时候,一直无法跳转到我定义的redirect_uri 地址中去。
使用 logging.level.org.springframework.security=debug 发现会访问 /favicon.ico ,然后报错,再然后就是调到登录页去了。
因此 /favicon.ico 放开之后,认证正常,成功调到redirect_uri 地址并返回了code。(这是OAuth2的小坑吗?)

2.3:安全配置-WebSecurityConfig @Configuration @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { private final PasswordEncoder passwordEncoder; public WebSecurityConfig(PasswordEncoder passwordEncoder) { this.passwordEncoder = passwordEncoder; } @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth .userDetailsService(userDetailsService()) .passwordEncoder(passwordEncoder); //为认证管理器配置passwordEncoder,无论客户端凭证密码还是用户密码都通过passwordEncoder进行密码匹配 } @Bean @Override protected UserDetailsService userDetailsService() { return new VipUserDetailService(); } @Bean(name = BeanIds.AUTHENTICATION_MANAGER) @Override public AuthenticationManager authenticationManagerBean() throws Exception { return super.authenticationManagerBean(); } }

详细配置可以翻阅我的GitHub:GitHub地址

3:认证授权演示 3.1:授权码模式

注意!!!一定要配置redirect_uri,并且一定要允许表单登录!!!
以下是步骤:

①:浏览器输入以下链接地址,会重定向到登录页
:8123/oauth/authorize?client_id=admin&client_secret=admin&response_type=code&redirect_uri=http://www.baidu.com&scope=test

drawing

②:输入配置的用户名密码,回调到授权页

drawing

如果我们配置的scope是autoApprove的,即可跳过这步,直接到第③步,拿到code。

③:选择 Approve,点击Authorize 即可调到redirect_uri地址

drawing

④:拿code 换 token

我的请求地址:127.0.0.1:8123/oauth/token?grant_type=authorization_code&code=h35Fh1&redirect_uri=http://www.baidu.com
需要配置Authorization,请求时会将客户端凭证以base64格式放在请求头中。

drawing

3.2:用户密码模式

我的请求地址:127.0.0.1:8123/oauth/token?grant_type=password&username=found&password=123456
需要配置Authorization,请求时会将客户端凭证以base64格式放在请求头中。

drawing

3.3:客户端凭证模式

我的请求地址:127.0.0.1:8123/oauth/token?grant_type=client_credentials
需要配置Authorization,请求时会将客户端凭证以base64格式放在请求头中。

drawing

3.4:简易模式

浏览器输入以下地址即可拿到token:
:8123/oauth/authorize?client_id=admin&client_secret=admin&response_type=token&redirect_uri=http://www.baidu.com

drawing

3.5:token 刷新

我的请求地址:127.0.0.1:8123/oauth/token?grant_type=refresh_token&refresh_token=dde5f388-4ad7-4781-a1b7-aaafb3c34b10
refresh_token是服务器颁发给客户端的,作用就是在一定时间内,让用户不用重新登录。
需要配置Authorization,请求时会将客户端凭证以base64格式放在请求头中。

drawing

4:从第三方登录让你理解什么是授权码模式

个人认为做第三方登录是当前比较流行的做法。

4.1:流程

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgyyjw.html