在 Azure API 管理中仅传递 1 header 而不是授权和 Ocp-Apim-Subscription-Key

Pass only 1 header instead of Authorization and Ocp-Apim-Subscription-Key in Azure API Management

我很少APIAzureAPI管理。我需要 Azure 检查有效的 Subscription 但同时我需要一些 header 值用于授权和身份验证。现在客户端要求 OAuth 2.0 必须存在。现在我们有 1 个 header 用于订阅密钥 (Ocp-Apim-Subscription-Key),2 个 header 我需要的(比如 LocationCodeApplicationKey)和 1 个 header 用于授权(来自 AD 的 Bearer token)。

我需要一个只有 1 个 header 的解决方案,所有这些都必须从中导出。有人对如何实现它有任何建议吗?

到目前为止,我一直在尝试从我的代码生成一个 JWT,并添加订阅密钥和其他 header,但我无法传递订阅密钥。我不是政策编辑方面的专家,但如果有人可以提供帮助,那么它可能是可以实现的..

我们能否将一些自定义 header 添加到 OAuth 访问令牌中,它可以通过应用注册从 Azure AD 生成?

提前致谢!!

您可以在您的 JWT 中包含 LocationCodeApplicationKey 作为自定义声明(请参阅 this SO post,它很好地涵盖了这些步骤)。

但订阅密钥必须在 header 或 APIM 的查询字符串中才能考虑。因此,您可以使用这种方法将其从四个 header 减少到两个 header。

一种可以将其归结为一个的方法是将 SubscriptionKey 也作为声明,但要有一个代理(也可能是另一个 APIM 操作)来提取密钥从声明中调用,然后调用需要它的实际 API。 但考虑到订阅密钥是秘密的,这是不可取的。