作为API创建者,我是否应该在客户端API密钥';你创造了什么?

作为API创建者,我是否应该在客户端API密钥';你创造了什么?,api,api-key,Api,Api Key,我正在开发一个API,我的API的用户可以注册我的API以获得API密钥。当我生成这个API密钥时,我使用非对称加密来创建一个散列,存储在数据库中 我的问题是,一旦用户生成一个API密钥然后注销,下次他们登录时,我就没有API密钥显示在我的应用程序的仪表板上了。这是否正常/可接受 其他API是否有不同的做法?i、 他们是否向用户提供API密钥?如果是这样的话,他们是否在数据库中存储未删除的API密钥?这是用户体验和安全性之间的平衡吗?在OAuth2中,系统通常总是显示OAuth2客户端id,但O

我正在开发一个API,我的API的用户可以注册我的API以获得API密钥。当我生成这个API密钥时,我使用非对称加密来创建一个散列,存储在数据库中

我的问题是,一旦用户生成一个API密钥然后注销,下次他们登录时,我就没有API密钥显示在我的应用程序的仪表板上了。这是否正常/可接受


其他API是否有不同的做法?i、 他们是否向用户提供API密钥?如果是这样的话,他们是否在数据库中存储未删除的API密钥?这是用户体验和安全性之间的平衡吗?

在OAuth2中,系统通常总是显示OAuth2客户端id,但OAuth2密码只显示一次


如果您想让用户体验更好,请专注于使新API密钥在不过期旧API密钥的情况下轻松滚动。您可以显示API密钥的列表(而不是密码),以及它们最后一次使用的时间,因此用户也可以很容易地禁用可能已不再使用的密钥。

在OAuth2中,系统通常总是显示OAuth2客户机id,但OAuth2密码只显示一次


如果您想让用户体验更好,请专注于使新API密钥在不过期旧API密钥的情况下轻松滚动。您可以显示API密钥列表(而不是密码),以及它们最后一次使用的时间,这样用户也可以很容易地禁用可能已不再使用的密钥。

API密钥通常不被认为是安全的。通常,客户端可以看到API键。API密钥不应用于执行安全授权。但是,您可以根据需要设计任何系统,并且在当前设计中,如果第三方或攻击者可以通过获取所谓的“API密钥”成功调用您的API,则最好将其隐藏,并让用户负责将密钥安全地存储在其他地方。您还应该确保在API中,必须有一种方法

  • 撤消现有的API密钥
  • 生成具有到期日期的新API密钥

  • API密钥通常不被认为是安全的。通常,客户端可以看到API键。API密钥不应用于执行安全授权。但是,您可以根据需要设计任何系统,并且在当前设计中,如果第三方或攻击者可以通过获取所谓的“API密钥”成功调用您的API,则最好将其隐藏,并让用户负责将密钥安全地存储在其他地方。您还应该确保在API中,必须有一种方法

  • 撤消现有的API密钥
  • 生成具有到期日期的新API密钥

  • 谢谢你的澄清。我认为,从用户体验的角度来看,隐藏客户机机密但向最终用户显示api密钥非常有意义。澄清一下,这确实意味着我将在数据库中以纯文本形式存储API密钥,而安全性来自客户端的密码。是吗?是的,OAuth2中的api客户端ID类似于用户名,客户端机密类似于密码。感谢您的澄清。我认为,从用户体验的角度来看,隐藏客户机机密但向最终用户显示api密钥非常有意义。澄清一下,这确实意味着我将在数据库中以纯文本形式存储API密钥,而安全性来自客户端的密码。是吗?是的,OAuth2中的api客户端ID类似于用户名,客户端机密类似于密码。