oauth2.0四种授权模式介绍
1.密码模式 账号密码留在client里
2.授权码模式 code换取token,可刷新token
3.简化模式 直接返回token
4.客户端模式 根据client_id 和 client_secret 获取token
着重介绍第三种模式,使用第三方模式前需要在auth server 端预先申请client_id client_secret并设置redirect_uri。
接口设计和参数说明:
一.请求授权接口
参数:
client_id:客户端ID
redirect_uri:跳转的url
state:客户端生成的随机值
response_type:code
返回:
授权登录页面,登陆之后,带上code跳转到指定的url
二.code交换
参数:
client_id:客户端ID
secret:客户端密钥
grant_type:authorization_code
code:授权接口返回的code
返回:
access_token
refresh_token
access_token_expire
refresh_token_expire
三.token刷新
参数:
refresh_token
client_id
secret
返回
access_token
refresh_token
access_token_expire
简述下安全性方面:
1.redirect_uri的作用,如果不验证redirect_uri,获取到的code可能会被传到别的网站,从而被换取access_token。
2.如果DNS被污染,还是被传到别的网站,code的换取规则是,只能使用一次,如果被二次使用,将撤回前面的token。
3.state的作用。假设A用户被人发了一个B用户已经获取到的code的回调地址,A点进去,绑定了B的账号,隐私就被会B窃取,所以需要在A用户客户端验证state是否正确。