OAuth 客户端凭证流程与资源所有者密码流程

问题描述 投票:0回答:1

我已经在自动化测试设置中实现了用于访问 API 的客户端凭据流程。客户端 ID 和客户端密钥作为密钥存储,一切顺利。但是,Auth0 通过客户端凭证流生成令牌存在限制,每月上限为 1,000 个令牌。超过此阈值会导致我的帐户产生额外费用。为了解决此限制,我正在考虑过渡到没有令牌限制的资源所有者密码流程。我将简单地将用户名和密码存储为环境机密,并使用它们为我的 API 生成访问令牌。从安全角度来看,这有缺点吗?

oauth-2.0 authorization auth0
1个回答
0
投票

对于机器到机器的流程,安全性应该是相同的,因为在每种情况下客户端都提供相同的安全属性,例如:

  • client_id
  • 客户端秘密
  • 范围

但是使用资源所有者密码授予有点不太令人满意:

  • 在架构上有点错误
  • 该流程已弃用
  • 切勿在涉及真实用户的场景中使用
  • 您需要创建一个名为
    test client
  • 的虚拟用户帐户

OAUTH API 测试

有时更好的选择是模拟困难的 OAuth 基础设施。例如,如果您想测试以特定用户身份调用 OAuth 安全 API,您将希望避免完整的授权代码流程,可能需要使用多重身份验证。

模拟基础设施的一种方法是使用 JWT 库来发行您自己的令牌。这些必须使用与 API 接收的相同的 JWT 访问令牌,但数字签名不同。然后,您可以将 API(在特定环境中)指向替代 JWKS URI。这应该需要对 API 进行零代码更改。对于开发人员和测试人员来说,它也很有教育意义,可以帮助他们了解正确的安全性。

有关一些示例,请参阅我的这些资源:

当然,这适合更广泛的测试策略,其中还包括一些使用真实 Auth0 令牌的真实端到端流程。端到端测试让您完全相信整个系统正在运行。当专注于详细的 API 测试时,模拟技术可能会给你一些其他选择。

© www.soinside.com 2019 - 2024. All rights reserved.