V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
CoderGeek
V2EX  ›  程序员

请教一个 OAuth2.0 的问题~

  •  
  •   CoderGeek ·
    codeyung · 2017-12-21 12:07:07 +08:00 · 1606 次点击
    这是一个创建于 2530 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在写一个开放平台 针对三方 ,需要权限精确到每个接口 比如 get /xxxxx/xxx post /xxx/xx
    用 OAuth2.0 做了对三方的认证 用客户端模式( client credentials ) clinet_id 和 client_secret
    认证通过后 根据 Scope 访问的权限验证 URL,我看 ali 和 qiniu 都是用签名 ,微信和新浪
    还返回 openId 啥的 ,我这种对企业的 API 需要做成这样吗 。
    我现在是 只要 access_token 通过 scope 通过 既可调用 比如查看某个用户
    get /user/1/info 或者 get /userinfo?userid={userid}

    是我对 OAuth2.0 的理解错了吗 希望大家给点意见 看的晕
    第 1 条附言  ·  2017-12-21 13:05:37 +08:00
    阿里 七牛用的签名验证 其实也是 一个 app_key app_secret
    新浪 和 微信 是 OAuth2.0
    第 2 条附言  ·  2017-12-21 17:26:18 +08:00
    初期提供的 API 基本都是公用的 (比如抓取 top10 内容之类)
    不像微信和新浪 需要用户信息 后期可能会需要获取用户信息等
    我不提供 openid 是否也可以呢 ,ip+接口做 RequestLimit 限制
    5 条回复    2017-12-21 13:14:19 +08:00
    owenliang
        1
    owenliang  
       2017-12-21 13:01:28 +08:00 via Android
    我语文写的不好
    dong3580
        2
    dong3580  
       2017-12-21 13:06:11 +08:00
    看起来当年没白研究。。。
    你不用管它们的,oauth2 授权流程规范看下图,这样下来就算是,考虑安全的话再加个 refresh token:

    https://assets.digitalocean.com/articles/oauth/abstract_flow.png
    CoderGeek
        3
    CoderGeek  
    OP
       2017-12-21 13:08:55 +08:00
    @dong3580 我有加 refresh token 包括给第三方指定 IP 地址 做 IP 和请求次数限制
    CoderGeek
        4
    CoderGeek  
    OP
       2017-12-21 13:13:02 +08:00
    申请 access_token POST /oauth2/token
    名称 描述 类型 可为空
    scope 申请的权限范围,可选项 默认为 basic String Y
    client_secret 第三方用户唯一凭证密钥,即 app_secret String N
    client_id 第三方用户唯一凭证,即 app_id String N
    grant_type 获取 access_token 填写 client_credential String N

    返回格式: { "access_token": "948ad78157cf1b96a147b83b589c5d9a", "refresh_token": "91671e25b0bf077108fce003de322f56", "success": true, "token_type": "bearer", "expires_in": 3050 }

    参数说明 名称 描述
    access_token 获取到的令牌
    refresh_token 更新令牌
    expires_in access_token 有效时间 单位 秒
    token_type 默认返回


    更新 access_token POST /oauth2/token

    名称 描述 类型 可为空
    grant_type 获取 access_token 填写 refresh_token String N
    scope 申请的权限范围,可选项 默认为 basic String Y
    refresh_token 更新令牌 String N

    返回格式: { "access_token": "948ad78157cf1b96a147b83b589c5d9a", "refresh_token": "91671e25b0bf077108fce003de322f56", "success": true, "token_type": "bearer", "expires_in": 3050 }

    参数说明 名称 描述
    access_token 获取到的凭证 refresh_token 刷新凭证
    expires_in access_token 有效时间 单位 秒
    token_type 默认返回
    CoderGeek
        5
    CoderGeek  
    OP
       2017-12-21 13:14:19 +08:00
    @dong3580
    如下 主要是 我想看看别人怎么作开放平台接口的 可能他们的功能太复杂了
    我不需要那么多 我看阿里有些开放 api 还只要在请求上加一个 appcode 就通过验证了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2707 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 06:42 · PVG 14:42 · LAX 22:42 · JFK 01:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.