首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >API认证流

API认证流
EN

Stack Overflow用户
提问于 2017-04-13 02:24:55
回答 1查看 134关注 0票数 3

我目前正在用Go编写API,并且一直在绞尽脑汁地思考如何正确和安全地进行身份验证/授权。

据我所知,是这样的:

  • 新用户通过api/user/register端点注册帐户(或为现有用户注册api/user/login )
  • 服务器接收请求并检查用户名是否唯一等。在此之后,它发出(如果一切正常)访问令牌刷新令牌,它们都是为增加安全性而签名的。
  • 客户端应用程序接收这些令牌并将它们存储在浏览器cookie (或本地/会话存储)中,并确保在随后对API的任何请求中通过HTTPS安全地发送它们。
  • 当接收到受保护路由的请求时,服务器将检查访问令牌的到期日期,如果过期,将检查刷新令牌在数据库中的有效性。如果它无效,请请求重新身份验证客户端。否则,重新发出新的访问令牌。

我的问题是关于处理刷新令牌的步骤。

我还在编写客户机应用程序(在React中);我不会向公众发布API。我只是将后端编写为客户端应用程序的API。

  • 我应该仍然使用刷新令牌吗?
  • 我需要api/auth/token路线吗?我在实现示例中不断地阅读它们,我觉得我只需要一些助手函数来查询数据库并在后端代码中重新发出令牌,而不必查询另一个端点就可以了。

抱歉,如果它们是愚蠢的问题,但我已经仔细研究了一页一页的详细说明,每页之间的细微差别使我困惑和不确定什么是真正的“最佳实践”在生产。

EN

回答 1

Stack Overflow用户

发布于 2017-05-14 14:50:00

我想你把登录这个词搞糊涂了。我称它为/api/user/login,而不是/api/user/authentication。因此,如果请求将一个json附加到其主体,它将返回一个有效的令牌。但是,如果请求获得有效的身份验证标头,则只需发出一个新的令牌,该令牌在同一时间内有效。这是特别好的正面,所以你可以尝试重新测量自动。

代码语言:javascript
复制
newUser := types.User{}
if r.Body != nil {
     err := json.NewDecoder(r.Body).Decode(&newUser)
     ... 
}
authHeader := r.Header.Get("Authorization")
if authHeader != "" {
    _, err := USERAUTH.CHeckJWT(w,r)
    if err !=nil {
    ...,
    }
    newToken := GenerateTokenFromToken(token)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43382539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档