我有一个Azure功能,通过AD登录启用了授权/验证。
我正在尝试通过使用client_credentials生成令牌进行身份验证:
请参阅以下代码:
{{1}}
如果我将资源设置为我的函数的ClientID,则一切正常。 但是,在许多联机示例中,资源设置为Azure Function Uri。
如果我将资源设置为https://www.xxxxxx.azurewebsites.com,那么我会收到401错误。
这是为什么?
我花了一整天的时间才能让它最终发挥作用,但在文档中没有说它将ClientID作为资源输入吗?
答案 0 :(得分:3)
如果您使用相同的AAD应用程序为Azure功能启用授权/身份验证,并且您的客户端代码获取access_token以访问Azure功能,则可以将resource
指定为应用程序ID < / strong>(ClientID)或您的AAD应用的应用ID ID 。
通常,我们会将ClientID用作resource
,而App Service授权/身份验证会比较您在身份验证/授权&gt;下配置的客户端ID。具有传入JWT承载令牌的aud
属性的Azure Active Directory设置,您可以利用https://jwt.io/解码您的令牌。
但是,在许多在线示例中,资源设置为Azure Function Uri。
如果我将资源设置为https://www.xxxxxx.azurewebsites.com,那么我会收到401错误。
我认为这些示例可能会使用应用ID ID ,您可以为您的AAD应用设置应用ID ID 为https://www.xxxxxx.azurewebsites.com
(设置&gt;属性&gt;应用程序ID URI),然后您可以使用应用程序ID URI 作为资源参数。
注意:对于此方法,您可能需要调整Azure功能的Azure Active Directory设置,您可以将客户端ID保留为AAD应用程序的应用程序ID并添加 App ID URI 到允许的令牌听众列表,或者您只需将其替换为您的App ID URI。
此外,您可以ADAL库获取令牌。此外,如果您为Azure功能和客户端应用创建每个AAD应用,则可以按照此issue进行操作。