我有几个APIAzure API管理. 我需要Azure检查有效的订阅,但同时我需要一些头值的授权和身份验证。现在客户端带来了OAuth 2.0必须存在的要求。现在我们有一个订阅密钥(Ocp-Apim-Subscription-Key
)的标头,我需要的2个标头(如LocationCode
,ApplicationKey
)和1个授权标头(来自AD的Bearer token
)。
我需要一个解决方案,只有一个头,所有这些必须从它派生。谁有什么建议,如何实现它?
我一直尝试到现在是我已经从我的代码生成一个JWT,并添加订阅键,和其他头到它,但我不能传递订阅键。我不是政策编辑专家但如果有人能帮助,那么这可能是可以实现的。
我们可以添加一些自定义头到OAuth访问令牌,可以从Azure AD与应用程序注册生成吗?
提前感谢!!
您可以在JWT中包含LocationCode
和ApplicationKey
作为自定义声明(参考这篇文章,它很好地涵盖了这些步骤)。
但是订阅键必须在header或查询字符串中,APIM才能考虑它。所以,你可以用这种方法把这个头从四个减少到两个。
将其简化为一个的一种方法是将SubscriptionKey
也作为声明,但有一个代理(也可以是另一个APIM操作),该代理将从声明中提取密钥,然后调用需要它的实际API。但是考虑到订阅密钥是一个秘密,这是不可取的。