gpt4 book ai didi

ios - 来自移动应用程序的基于 token 的身份验证

转载 作者:可可西里 更新时间:2023-11-01 03:55:45 29 4
gpt4 key购买 nike

我正在学习使用 JSON Web token 进行基于 token 的身份验证,这是我现在对移动应用程序的看法,例如 swift :

  1. 我可以使用用户输入在应用内创建一个对象,例如

    { 用户名:“帕特里克贝特曼”, 密码:“ismyknifesharp”, 角色:“常规”, ...

  2. 然后我可以使用 library 从它生成 JWT token .

  3. 然后我将它发送到支持的 API 端点,例如 /api/contacts/list。还是我必须发送登录名/密码才能进行身份验证?
  4. 服务器以某种方式检查 token 的正确性。但是怎么办?这个服务器生成的 token 是否应该保存在数据库中并用作 key ?还是每次收到客户端请求时都必须在服务器上生成 token 并将其与客户端 token 进行比较?
  5. 获取并管理我需要的所有数据。

这是我的结论:

  1. 我不需要将登录名/密码对发送到服务器来验证用户。
  2. 我需要在每次需要获取仅授权数据时发送 token 。
  3. 我应该实现一些算法,根据某些因素(例如时间流逝)更改生成的 token ,以使 token 过期。
  4. 我应该在 header 内发送 token ,但不一定,因为它可以在 JSON 请求的主体内完成。

这些结论正确吗?如何检查客户端发送的token?

最佳答案

我的看法:

  1. 我们不应该在客户端保留用户的密码。客户端在注册/登录时应将密码发布到服务器,并且不要将其保存在客户端的任何位置。请求应为https,密码不应加密。我们稍后会在服务器端加密密码。

  2. 服务器会在用户登录成功后为该用户生成一个tokentoken 本身将包含过期日期。我们将使用 token 向服务器验证权限。

  3. 我认为每个对 API 的请求都应该提供 token ,除了注册/登录/忘记密码请求。

  4. Token应该放在请求头中。

  5. 服务器应允许客户端使用旧 token (可能已过期)请求新 token

以及“如何让服务器检查来自客户端的 token ?”的答案。有很多方法可以做到这一点。下面的方式是我目前的做法:

服务器端生成一个token,它是一个用户信息(例如token过期时间,userid,用户的角色...)和密码(只保存在服务器端)的加密字符串) 与 HMAC 或 RSA 算法。当用户提交token时,服务器可以解密并获取用户信息,过期时间,无需从数据库中查询。

无论如何,这个问题与Swift 标签无关。

关于ios - 来自移动应用程序的基于 token 的身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33645173/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com