Php API和应用程序基于令牌的身份验证,可以是简单的字符串,还是需要更多?

Php API和应用程序基于令牌的身份验证,可以是简单的字符串,还是需要更多?,php,jwt,bearer-token,Php,Jwt,Bearer Token,我希望重写一个API服务,并希望使用基于令牌的身份验证来帮助管理通过授权头和承载令牌的调用 OAuth和JWT之间的思想流派似乎存在分歧,但这可以通过一个简单的256字符字符串(例如,保存在数据库中并关联回用户ID)来实现吗 因此,在我的应用程序中,如果我存储了用于API调用的令牌,我就可以在API中获取授权头,并将用户与数据库中的令牌进行匹配 我是否过度简化了这一理论,或者在考虑我的应用程序/API的基于令牌的身份验证时,是否还有更多需要考虑的问题?仅供参考,OAuth是定义令牌传输方式的协议

我希望重写一个API服务,并希望使用基于令牌的身份验证来帮助管理通过授权头和承载令牌的调用

OAuth和JWT之间的思想流派似乎存在分歧,但这可以通过一个简单的256字符字符串(例如,保存在数据库中并关联回用户ID)来实现吗

因此,在我的应用程序中,如果我存储了用于API调用的令牌,我就可以在API中获取授权头,并将用户与数据库中的令牌进行匹配


我是否过度简化了这一理论,或者在考虑我的应用程序/API的基于令牌的身份验证时,是否还有更多需要考虑的问题?

仅供参考,OAuth是定义令牌传输方式的协议,JWT是令牌的格式。OAuth可以向您发出JWT令牌。您的建议与存储密码没有太大区别。你至少应该对它进行散列,这样就不会有人在抓取数据库副本时立即冒充所有人。我的2分钱是,在数据库中存储这样的令牌不是一个好主意(imho)。您确实希望只对每个请求的令牌进行解码,而不需要进行额外的db调用来进行身份验证。您已经在环境中拥有密钥,最好在处理请求时使用该密钥并执行该操作。将其存储在数据库中有什么好处?谢谢大家的输入@ShyamPillai,我在数据库中存储的想法是访问他们的用户ID。我不想通过API调用中的参数发送这些信息,所以我想通过使用令牌,可以通过关系查询获得用户ID。是否有更好的方法获取用户ID?标准方法是在令牌中编码必要的细节。它甚至可以是用户id。它是使用一个密钥加密的,我们通常会将这个密钥放在应用程序的环境中。任何人都不能使用这把钥匙。然后,在处理请求时,您可以解码令牌以获得编码的详细信息,即用户id等。这是理解这一点的好页面。主页提供了一个很好的编码和解码示例。仅供参考,OAuth是定义令牌应如何传输的协议,JWT是令牌的格式。OAuth可以向您发出JWT令牌。您的建议与存储密码没有太大区别。你至少应该对它进行散列,这样就不会有人在抓取数据库副本时立即冒充所有人。我的2分钱是,在数据库中存储这样的令牌不是一个好主意(imho)。您确实希望只对每个请求的令牌进行解码,而不需要进行额外的db调用来进行身份验证。您已经在环境中拥有密钥,最好在处理请求时使用该密钥并执行该操作。将其存储在数据库中有什么好处?谢谢大家的输入@ShyamPillai,我在数据库中存储的想法是访问他们的用户ID。我不想通过API调用中的参数发送这些信息,所以我想通过使用令牌,可以通过关系查询获得用户ID。是否有更好的方法获取用户ID?标准方法是在令牌中编码必要的细节。它甚至可以是用户id。它是使用一个密钥加密的,我们通常会将这个密钥放在应用程序的环境中。任何人都不能使用这把钥匙。然后,在处理请求时,您可以解码令牌以获得编码的详细信息,即用户id等。这是理解这一点的好页面。主页提供了一个很好的编码和解码示例。