我可以使用 OAuth 令牌作为 Ocp-Apim-Subscription-Key 的替代品吗?

2024-01-07

我正在考虑使用 Azure API 管理为许多后端 API 提供一致的前端。

大多数 API 使用 OAuth 2.0 应用程序流程(ClientID + 客户端密钥,后端 API 检查声明/范围)进行保护。这很好用,但是当客户通过 APIM 使用这些 API 时,他们需要提供 APIM 订阅密钥andOAuth 2.0 令牌。据我了解,APIM 订阅密钥用于向 APIM 标识客户端(用于速率限制、日志记录等目的),而令牌用于后端身份验证/授权。

有没有什么方法可以使用客户端 ID 来替代 APIM 订阅密钥?也就是说,客户端不需要提供 APIM 订阅密钥,并且 OAuth 2.0 令牌身份用于所有 APIM 功能(例如,通过客户端 ID 限制速率)。


无法使用 OAuth 令牌来识别客户端,但您可以将其用于速率限制和日志记录(某种)。首先创建不需要订阅的新产品,添加到该产品的任何 API 都可以匿名访问。为了解决这个问题,您可以在该产品上放置 validate-jwt 策略来要求 OAuth 令牌并检查其声明,或者如果您真的不关心令牌内容,只想知道它在那里,您可以使用检查标头策略。

使用策略表达式,您可以执行 context.Headers.GetValueOrDefault("Authorization").AsJwt() 将提供的标头解析为 JWT 对象模型,检查其声明,并在按键速率限制和按键配额中使用它对每个客户端实施限制的策略。

要使日志记录工作,目前没有其他方法,只能依靠 log-to-eventhub 策略并自己记录必要的信息。这确实意味着您需要维护 EventHub 实例和进一步的基础设施来从中读取记录并将其存储在某个地方。一些变化将扩大日志记录功能,这将使这变得更容易。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以使用 OAuth 令牌作为 Ocp-Apim-Subscription-Key 的替代品吗? 的相关文章

随机推荐