基于oauth2.0 单点登陆系统设计

@liubb  April 19, 2019

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是否正确。


添加新评论