Api 如何在客户端维护用户会话?

Api 如何在客户端维护用户会话?,api,rest,session,authentication,Api,Rest,Session,Authentication,所以我有一个RESTAPI。我按照教程设置了客户端身份验证。我受够了。现在,下一部分是用户身份验证。我的想法是这样的: 客户端将登录详细信息发送到API API验证用户名和密码,并生成一个令牌,该令牌被发送回客户端 客户端将令牌存储在某处,并将其用于后续请求的身份验证 问题是,在这样的设置中,这是维护会话的正确方法吗?有没有更好的方法来实现这一点?我对这类事情很陌生,所以请详细说明你的答案。请注意,API是纯REST,客户端可以是任何东西(例如Angular、iOS、Android应用程序)。因

所以我有一个RESTAPI。我按照教程设置了客户端身份验证。我受够了。现在,下一部分是用户身份验证。我的想法是这样的:

  • 客户端将登录详细信息发送到API
  • API验证用户名和密码,并生成一个令牌,该令牌被发送回客户端
  • 客户端将令牌存储在某处,并将其用于后续请求的身份验证

  • 问题是,在这样的设置中,这是维护会话的正确方法吗?有没有更好的方法来实现这一点?我对这类事情很陌生,所以请详细说明你的答案。请注意,API是纯REST,客户端可以是任何东西(例如Angular、iOS、Android应用程序)。因此,前端与API不在同一台服务器上这一点并不典型

    您可以这样做,但您将偏离已被证明的安全模式的老路。这可能是不明智的,会给你带来很多额外的工作和头痛。然而,这里有一个服务提供商公开了RESTAPI并创建了自己的OAuth扩展。这与您概述的内容类似,因此我在此列出了一些步骤作为示例,但不一定建议您遵循:

    • 使用者应用程序直接收集用户的凭据
    • 使用者应用程序使用空格连接用户名和密码,并对凭据进行base64编码
    • 使用者应用程序将编码的凭据放入请求主体中。凭据必须在base64编码后进行URL编码
    • 消费者应用程序将它们发布到指定的URI(例如:api.com/v1/user/accesstoken)
    • 此请求使用OAuth签名请求进行签名
    • 服务提供者将向使用者应用程序发回一个访问令牌
    • 消费者应用程序将使用访问令牌访问用户的数据

    如果您不擅长安全性,您应该使用库。安全是很难做到的。