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

求一个 api 接口 token 设计的规范流程呀!

  •  
  •   qwertyzzz · 202 天前 · 2740 次点击
    这是一个创建于 202 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前写接口直接登录后 userid 存在客户端然后调用的。。方便是方便 感觉好不规范。。搜了下 token 什么的发现好多不同的。 1.登录后返回个 token token 和 token 过期时间存在用户表里 然后每次请求带 token 新增下 token 过期时间;过期了就返回登录界面

    2.有 refresh_token 的这个和 1 好像类似 只是过期跳转到登录估计是按 refresh_token 过期来算,token 过期用 refresh_token 去刷新 然后重新存?

    3.另外有的有什么 appid 和 secret 是什么鬼。。参考微信的吗 但是我给一个 app 单独写接口应该不需要这个吧

    第二部刷新那个客户端写起来会不会很复杂啊 如果有异步请求什么的。然后我想知道用 userid 去获取数据和用 token 去获取数据的不同处。还有 token 存服务端的话如果不放在 user 表里 是不是存缓存也要加个 user 的什么信息让他变成唯一 key 好取啊。。比如 userid+字符串 token.其他不知道还有什么流程 想知道各位都采用什么流程啊 有图最好了 0 0

    写的比较乱 这 2 天的暂时疑问。不知道现在有什么简单的稍微规范的流程 也不一定要完全安全,,至少稍微安全点吧。,。

    20 回复  |  直到 2019-07-04 23:14:17 +08:00
    Destiny97
        1
    Destiny97   202 天前 via Android
    第二个是 jwt ?第二个是 oauth?
    Destiny97
        2
    Destiny97   202 天前 via Android
    第二个是 oauth->第三个是 oauth
    JimmyTinsley
        3
    JimmyTinsley   202 天前
    我们公司之前用的应该是你说的第二种. 按照有效期长短分两种 token, 短效 token 有效期 15 分钟, 长效 token 有效期 30 天(作用相当于 cookie). 客户端每 14 分钟通过接口, 用长效 token 更新短效 token, 其他需要 token 认证的接口统一使用短效的 token. token 的实现方式是 JWT. 机制大概是这样, 仅供参考~
    baiyi
        4
    baiyi   202 天前
    qwertyzzz
        5
    qwertyzzz   202 天前
    @Destiny97 不懂啊。。想知道现在普遍用什么呀 最好不要太复杂了
    qwertyzzz
        6
    qwertyzzz   202 天前
    @liujie333333 那客户端不是还要定时?
    pyy910716
        7
    pyy910716   202 天前 via iPhone
    123
    qwertyzzz
        8
    qwertyzzz   202 天前
    @pyy910716 啊?
    qwertyzzz
        9
    qwertyzzz   202 天前
    @baiyi 好长。。有没有简单的图呢那种流程啊
    soulzz
        11
    soulzz   202 天前
    参考同事的代码 :写一个生成 token 的方法(不对外公开),第一次调用时需要传参 secret 与 appid,对 secret 进行单向加密后存数据库,生成 uuid token 返回。做一个切点,api 请求校验 token,通过就继续执行,不通过就拦截。提供 refresh token 和 get token 方法,均需要提供 secret
    soulzz
        12
    soulzz   202 天前
    uuid 生成的 token 存 redis 设置过期时间
    qwertyzzz
        13
    qwertyzzz   202 天前
    @luozic 大哥好长看不下去 TOT
    qwertyzzz
        14
    qwertyzzz   202 天前
    @soulzz appid 和 secret 哪来的呀 能说下具体从登录开始到请求一个需要 token 的接口的流程吗。。
    soulzz
        15
    soulzz   202 天前
    @qwertyzzz appid 和 secret 是你自己定义的 例如每个版本的客户端你可以定义一个 appid 和对应的 secret
    Destiny97
        16
    Destiny97   202 天前 via Android
    @qwertyzzz 我也不是很懂具体怎么用,只是在自己毕设里用过 jwt,然后了解过 oauth,这些都有应用场景,可以去以这几个为关键词搜索下具体怎么应用
    CRUD
        17
    CRUD   202 天前
    JWT 和 OAuth,主流语言基本都有现成的轮子实现这个事情,确定用这个的话先了解一下概念和规范,然后找自己语言的轮子撸上去就好了。
    hantsy
        18
    hantsy   202 天前
    浪费时间自已设计认证?

    能够搞清 OAuth2 规范 4 种 Grant Flow 就不错了,现在大把开源的 OAuth 服务器,而且还有云服务,如 Anth0,Okta 等。
    hantsy
        19
    hantsy   202 天前
    @soulzz 知道 OAuth2 规范的角色就知道了,client(app 或者 website 等),user,resource owner, authentication server 等,其实国内的很多应用场景 client 和 resource owner 都是相同的,完全没必要使用 OAuth2,搞得那么复杂。
    qwertyzzz
        20
    qwertyzzz   201 天前
    @hantsy 水平低啊 可不可以用最通俗的语言描述下啊 或者有联系方式吗 求指教
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2147 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 26ms · UTC 13:47 · PVG 21:47 · LAX 05:47 · JFK 08:47
    ♥ Do have faith in what you're doing.