【发布时间】:2021-09-01 22:07:17
【问题描述】:
我正在尝试弄清楚如何保护只能从同一租户中的另一个 azure 函数(客户端 func)调用的 azure 函数(服务函数)。
这是我在 azure 门户中尝试过的:
- 根据消费计划创建了一个 Windows 函数应用
- 添加了一个 hello-world http 触发功能,授权级别为“匿名”
- 测试我可以匿名调用函数
- 在服务功能的刀片上,选择“身份验证”
- 已选择“添加身份提供者”
- 选择“微软”
- “创建新应用注册”
- “当前租户 - 单租户”
- “需要身份验证”、“HTTP 401”
- 为客户端函数创建了一个新的应用注册,记下 client_id 和 client_secret
然后,我将邮递员配置为从 azure 广告中获取令牌(使用唯一的租户 ID),并从客户端函数的应用注册中传递 client_id 和 client_secret。在 /token 端点的帖子中,我给出了“client_credentials”的grant_type 值。
在发布邮递员的请求时,我收到了包含 access_token 的响应。我复制并粘贴到https://jwt.ms 以检查一切是否正常。
我在邮递员中配置了另一个请求来发出对 hello-world 函数的获取。这包含一个值为“Bearer”的“Authorization”标头 + 在上一步中收到的 access_token。
尽管传递了看似有效的访问令牌,但函数应用(没有身份验证绑定)返回 401 Unauthorized 错误。
我不需要授权,只需要身份验证。
谁能发现我哪里出错了?
【问题讨论】:
-
客户端应用程序是否具有从主应用程序分配的必要 API 权限?这可能是出现错误的原因之一。
标签: oauth-2.0 azure-active-directory azure-functions azure-web-app-service