引言: 之前系列文章《认证鉴权与API权限控制在微服务架构中的设计与实现》,前面文章已经将认证鉴权与API权限控制的流程和主要细节讲解完。由于有些同学想了解下授权码模式,本文特地补充讲解。 授权码类型介绍授权码类型(authorization code)通过重定向的方式让资源所有者直接与授权服务器进行交互来进行授权,避免了资源所有者信息泄漏给客户端,是功能最完整、流程最严密的授权类型,但是需要客户端必须能与资源所有者的代理(通常是Web浏览器)进行交互,和可从授权服务器中接受请求(重定向给予授权码),授权流程如下:
快速入门Spring-Securiy 配置由于授权码模式需要登录用户给请求access_token的客户端授权,所以auth-server需要添加Spring-Security的相关配置用于引导用户进行登录。 在原来的基础上,进行Spring-Securiy相关配置,允许用户进行表单登录:
同时需要把
AuthenticationProvider由于用户表单登录的认证过程可能有所不同,为此再添加一个
在
保证数据库中的请求客户端存在授权码的请求授权和具备回调地址,回调地址是用来接受授权码的。 测试使用启动服务,浏览器访问地址 重定向到登录界面,引导用户登录: 登录成功,授权客户端获取授权码。 授权之后,从回调地址中获取到授权码:
携带授权码获取对应的token: 源码详解
请注意,生成的token都是与授权的用户进行绑定的。
生成token:
需要注意到,在创建token的过程中,会根据该授权用户去查询是否存在未过期的access_token,有就直接返回,没有的话才会重新创建新的access_token,同时也应该注意到是先创建refresh_token,再去创建access_token,这是为了防止持有过期的access_token能够通过refresh_token重新获得access_token,因为前后创建access_token绑定了同一个refresh_token。
小结 本文主要讲了授权码模式,在授权码模式需要用户登录之后进行授权才获取获取授权码,再携带授权码去向 推荐阅读系列文章:认证鉴权与API权限控制在微服务架构中的设计与实现 参考 |
|
来自: airen89 > 《认证鉴权与API权限》