使用 AAD 和 Azure 函数 returns 未经授权的简单身份验证隐式流程

Easy Auth Implicit Flow with AAD and Azure Function returns Unauthorized

API 复制

客户端重现

问题

我的 API 请求未经授权。我得到状态 401:

POST https://{azure func name}.azurewebsites.net/api/HttpTrigger1?code={code}== 401 (Unauthorized)

Http 地址是从 Azure 门户复制的。

当我点击 link 时,我被重定向到登录,然后被重定向到 azure 函数,在 brwoser 选项卡中使用我的 "Hello from secured API" 文本。

我似乎 Easy auth 将我的 azure 函数视为客户端应用程序,我是否希望它成为我的 vue.js 应用程序的中间件 APi。我的 Azure 函数 API 应该只接收和验证访问令牌。

尝试过

我也尝试用令牌向邮递员发送请求,但也收到了未经授权的请求。

我探索了令牌,它似乎是正确的:

"aud": "api://{Azure function App Id (id in AAD)}",
"iss": "https://sts.windows.net/{tenant id}/",
"appid": "{registered vue js client app id (id in AAD)}",

要解决这个问题,我必须转到我的 Azure Function App 平台功能中的 Authentication/Authorization 部分。在身份验证提供程序 select AAD -> 高级下,添加允许的令牌受众:api://{Azure Function AD App Id}。

问题是我的令牌是为其他观众准备的:https://{func name}.azurewebsites.net。这是由于更改了我的 AF AD 应用程序 ID:

"In Expose Api section I changed App Id Uri from https://{name}.azurewebsites.net to api://{app id} in order to choose multitenant supported client types. There already has been user_impersonation scope defined."

此操作还更改了作用域名称。