这是一个很好的做法,以确保一个简单的令牌字符串的web服务端点?



我有一个web应用程序,其中通过SSO处理常规用户登录。(这可以防止我创建服务用户)

在这个应用程序中,我有一些不在任何用户范围内的web服务端点。它们将被另一个应用程序触发并做一些事情。

下面是正确的做法吗?

  1. 一个令牌字符串是手工创建的(因为简单)
  2. 令牌字符串存储在提供webservice端点的系统以及调用这些端点的系统的环境变量中。
  3. 在每次调用时进行简单的相等性检查-如果令牌不存在,端点返回401。

是我的方法简单吗?

我在这个主题上没有发现太多——我的方法来自moodle-webservice处理,在moodle中生成一个webservice令牌,并将其放置在调用webservice的应用程序中。

对于没有高安全性要求的基本应用程序,这可能还可以。

你可以做一些事情(所有这些都会增加复杂性和/或成本):

  • 服务可以存储适当的密码散列(如bcrypt, pbkdf2或argon2)而不是实际密码。这将有所帮助,因为如果它被泄露,实际密钥不会丢失,攻击者仍然无法轻松调用服务。(但它已经受损,这是不喜欢一个用户密码被重用,这取决于你的选择和威胁模型)。
  • 您可以将此秘密存储在适当的保险库中,如AWS秘密管理器或Hashicorp保险库或类似的。这将使您能够在一个地方控制对密钥的访问,并审计密钥的使用情况(可能对尝试发出警报等)。对保险库的访问仍然需要管理,但这很容易通过AWS上的角色来实现,例如,具有正确角色的实例可以访问密钥,而其他实例则不能。

相关内容

  • 没有找到相关文章

最新更新