如何为我的API实施基于令牌的身份验证?

时间:2019-09-17 23:14:10

标签: rest api security authentication hash

我有一个Django后端,它将用作我的API端点。用户由usernamepassword标识,并具有一些额外的信息,应该可以使用我的相同API,因此我想为其授予令牌。

  1. 如何创建API密钥供其使用? (uuid在这里能起到很好的作用吗?)
  2. 如何为其生成令牌? (我可以想象,像sha256(api_key + password + some_salt)这样的方式(其中salt是一个时间戳对象)可以解决问题,并有助于到期)
  3. 如何生成刷新令牌以用于刷新过期的令牌? (我不知道在这里)

我看了看Oauth 2.0,但是TBH我无法完全弄清楚它,而且它过于复杂,因为我的API服务器也将是我的身份验证服务器。

2 个答案:

答案 0 :(得分:0)

我不建议您建立自己的身份验证方案,也不建议您部署自己的加密功能。如今,API身份验证和授权的行业标准是OAuth 2.0,它提供了您在功能强大但易于实现的解决方案中描述的所有要求。

如果上述应用程序不需要任何OAuth 2.0授权概念,那么使用OpenID Connect当然是一个不错的方法。 OpenID Connect是基于OAuth 2.0构建的协议:

  

它允许客户根据以下信息验证最终用户的身份:   授权服务器执行的身份验证以及   获取有关最终​​用户的基本个人资料信息   可互操作且类似REST的方式。

API身份验证技术以各种形式广泛可用,甚至SAML 2.0都可以在这种情况下实现(需要更多基础架构),无论如何,OpenID Connect肯定可以满足所有要求。

答案 1 :(得分:-1)

解决此问题的最简单方法是经典的Session-Cookie Django directly offers this functionality

如果您不想在服务器端保持状态,则可以查看JSON Web令牌。