我已经在自动化测试设置中实现了用于访问 API 的客户端凭据流程。客户端 ID 和客户端密钥作为密钥存储,一切顺利。但是,Auth0 通过客户端凭证流生成令牌存在限制,每月上限为 1,000 个令牌。超过此阈值会导致我的帐户产生额外费用。为了解决此限制,我正在考虑过渡到没有令牌限制的资源所有者密码流程。我将简单地将用户名和密码存储为环境机密,并使用它们为我的 API 生成访问令牌。从安全角度来看,这有缺点吗?
对于机器到机器的流程,安全性应该是相同的,因为在每种情况下客户端都提供相同的安全属性,例如:
但是使用资源所有者密码授予有点不太令人满意:
test client
OAUTH API 测试
有时更好的选择是模拟困难的 OAuth 基础设施。例如,如果您想测试以特定用户身份调用 OAuth 安全 API,您将希望避免完整的授权代码流程,可能需要使用多重身份验证。
模拟基础设施的一种方法是使用 JWT 库来发行您自己的令牌。这些必须使用与 API 接收的相同的 JWT 访问令牌,但数字签名不同。然后,您可以将 API(在特定环境中)指向替代 JWKS URI。这应该需要对 API 进行零代码更改。对于开发人员和测试人员来说,它也很有教育意义,可以帮助他们了解正确的安全性。
有关一些示例,请参阅我的这些资源:
当然,这适合更广泛的测试策略,其中还包括一些使用真实 Auth0 令牌的真实端到端流程。端到端测试让您完全相信整个系统正在运行。当专注于详细的 API 测试时,模拟技术可能会给你一些其他选择。