写在前面:工作中与外部对接时候时候Oauth2方式进行对接,好久过去了,最近突然想起来却有些遗忘,在此记录一下,方便以后在此查看。
1、背景
对接中使用Oauth2授权模式进行获取数据,学习了一下
2、总结内容
在oauth2中有4种模式对接,有授权码模式、隐式授权模式、密码模式、客户端模式,之前项目中因为都是服务端进行交互,所以使用的授权码模式,比较稳妥,本次记录一下授权码模式的流程
3、流程图及步骤
假设资源服务器和授权服务器放在同一个位置上,所以可以都当做是对接合作方。
- 授权流程之前:首先需要将服务器的域名提供到授权服务器中,授权服务器分配给第三方服务器(可以使自己的服务部署的服务器)进行授权流程调用时候所用到的
clientId和secret - 正式流程:当用户访问到需要授权的资源时候,此时请求到达第三方服务器(可以理解为自己的服务器对外提供服务,用于访问自己的服务,然后需要去授权读取其他数据)。
- 此时第三方服务器最主要的目的是需要获取到授权码
code,用于后续通过获取token使用。所以重定向到授权服务器地址(需要授权服务器提供,配置在第三方服务器上),并且携带clientId和回调url。 - 用户同意授权后,由授权服务器重定向到传入的回调
url(其实还是第三方服务器),重定向时候会将授权服务器生成的code码带回来,此时第三方服务器(可以理解为自己的服务器)获取到授权码code。 - 接下来第三方服务器就需要通过
code请求授权服务器,进行获取token信息。发送请求,可以是get请求,也可以是其他方式,携带参数secret和code码。 - 当授权服务器通过校验后,就会返回
token信息 - 服务器收到
token后就可以请求资源服务器,进行获取数据,我们使用的token只有一次有效期,用一次就会失效。然后返回给用户数据
希望对你有帮助