本文是Spring Security OAuth2学习系列文章中的第四篇;主要讲解授权码模式(AuthenticationCode)及简化模式(Implicit)的使用。
关于密码模式、客户端模式及Spring Security OAuth2的一些基础知识,请移步本博客文章清单进行查看。
1. 简介
授权码模式主要使用在客户端与授权、资源服务器不在同一公司的情况;在这种场景下,客户端并不是可信的,因此用户密码不能直接授予客户端。
授权码模式流程如下:
- 客户端注册;
- 用户访问客户端页面;
- 客户端将用户导到授权服务器授权页面;
- 用户如未登录,则授权服务器打开登录页面;
- 登录成功或者已登录时,授权服务器打开授权页面;
- 用户决定是否进行授权;
- 接受授权时,页面被重定向到在客户端注册时指定的重定向页面,并附带上授权码;
- 客户端在重定向页面中解析到授权码,然后通过授权码在后台调用授权服务器获取Token;
- 客户端使用获取到的Token访问资源服务器获取资源;
2. 配置
在授权码模式中,授权服务器配置与密码模式基本一致,除在客户端的authorizedGrantTypes中添加authorization_code外,其它并无不同。
具体配置参考https://blog.csdn.net/icarusliu/article/details/87968090一文;不同在于:
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.inMemory()
.withClient(