美文网首页
OAuth授权的工作原理

OAuth授权的工作原理

作者: 米米1498 | 来源:发表于2019-05-30 10:10 被阅读0次

    资料出处:https://www.zhihu.com/question/19781476#answer-382596
    https://open.weibo.com/wiki/Oauth

    🍐 钥匙

    新浪微博就是你的家。偶尔你会想让一些人(第三方应用)去你的家里帮你做一些事,或取点东西。你可以复制一把钥匙(用户名和密码)给他们,但这里有三个问题:
    1)别人拿了钥匙后可以去所有的房间 2)别人拿到你的钥匙后也许会不小心丢到,甚至故意送到它人手里。这样你都不知到谁有你家钥匙。 3)过一段时间你也许会想要回自己的钥匙,但别人不还怎么办?
    OAuth 是高级钥匙:
    1)你可以配置不同权限的钥匙。有些只能进大厅(读取你的微博流)。有些钥匙可以进储藏柜(读取你的相片) 2)钥匙上带着指纹验证的(指纹 = appkey)。 收到钥匙的人只能自己用,不能转让 3)你可以远程废除之前发出的钥匙
    相对来说, OAuth比给出用户名密码安全

    🍐用户使用 github 登录网站留言

    github 有账号,账号对应着多项权限,比如读取账户信息,比如拉取仓库代码等;
    我是blibli的无账号访客,有一天想发一条弹幕,网站提示我登录,1、先注册再登录。2、使用github账号登录;我选择了2。

    背景:Blibli向github建立合作关系

    1. github的账户下,新增:"blibli的图标+需要"读取账户信息”权限+blibli的域名";
    2. Github,发送给blibli两张门票:Client_Id + Client_Secret;
    3. 用户点击了“使用github账号登录”,

    第一步:blibli将门票client_id交给用户

    1. 用户拿着client_id进入github的授权页面;
    2. github看到用户手里的门票后,知道是blibli让他过来的,于是把blibli想要的权限“读取账户信息”摆出来,询问用户是否同意;
    //github授权地址
    GET:'https://github.com/login/oauth/authorize'
    //用户携带的门票
    params= {
     client_id:”xxx”,
     redirect_url:"https://www.bilibili.com"
    }
    
    
    1. 用户选择不同意,整个授权流程结束;
    2. 用户选择同意,github返回给用户一张盖章后的门票code;
    3. 用户返回blibli网站
    Location: “https://www.bilibili.com/?code=xxx”
    

    第三步:blibli拿着“用户带回的盖章门票code+ github上次发的client_secret”,去拜访github

    其中client_secret是用于给github确认,过来拜访的是blibli无误;

    blibli拿到GitHub发放的绿卡access_token(有有效期,过期需要使用refresh_token重新认证)

    
    //github授权地址
    
    POST:'https://github.com/login/oauth/authorize'
    
    //blibli携带的盖章门票及身份ID
    
    params={
    
     code=“xxx”,
    
     client_id=“xxx”,
    
     client_secret=“xxx”,
    
     redirect_url:”https://www.bilibili.com”,
    
    }
    
    //blibli拿到github发放的绿卡
    
    response={
    
     access_token:”xxx”,
    
     Scope:”读取账户信息的权限”,
    
     token_type=“xxx”,
    
     refresh_token=“xxxxxx”,
    
    }
    
    

    用户发送弹幕

    此时,blibli拿着绿卡access_token,调用github提供的api读取到了用户头像和昵称,

    GET: "http://api.github.com/user?access_token=xxx"
    

    相关文章

      网友评论

          本文标题:OAuth授权的工作原理

          本文链接:https://www.haomeiwen.com/subject/vdnytctx.html