我试图从 Easy Auth 注入到我的 Azure App Service 请求中的标头中获取承载令牌,以便为想要对我的应用程序进行 API 调用的用户提供服务,但 X-MS-TOKEN-AAD-ACCESS-TOKEN 中提供的令牌存储中的令牌无效。它采用某种内部或加密格式,以 和 开头,PAQABAAAAAAD--
不像ey
JWT。X-MS-TOKEN-AAD-ID-TOKEN 有效,但当我访问 时它不会更新/.auth/refresh
。
我尝试按照以下说明进行操作http://jsandersblog.azurewebsites.net/2020/01/17/easy-auth-using-x-ms-token-aad-access-token-as-a-bearer-token/获取真正的承载令牌,但资源浏览器给了我这个:
Cannot execute the request for site ... because the site is running on auth version v2
该怎么办?
答案1
请注意,资源管理器想要将请求发送到的 API 版本是旧的:
subscriptions/<subscription_id>/resourceGroups/<group_name>/providers/Microsoft.Web/sites/<site_name>/config/authsettings?api-version=2018-02-01
他们提供了一个新的,尽管很难发现这一点。
我不知道他们为什么花了这么长时间才更新他们的工具。但是你现在必须使用 CLI 进行更改(如果你没有,请前往https://docs.microsoft.com/en-us/cli/azure/install-azure-cli-windows?tabs=azure-cli)。
做:
az login
az rest --method GET --url "https://management.azure.com/subscriptions/<subscription_id>/resourceGroups/<group_name>/providers/Microsoft.Web/sites/<site_name>/config/authsettingsv2/list?api-version=2020-09-01"
是的,他们已更新为使用 GET 而不是 POST 来获取您的配置。请注意 URL 中的“authsettingsv2”。这是所有工具都不支持的新部分。
将配置复制到编辑器中,并进行所需的更改。架构如下:https://docs.microsoft.com/en-us/azure/templates/microsoft.web/sites/config-authsettingsv2?tabs=json
如果您尝试按照 additionalLoginParams 设置建议获取正确的 AAD 持有者令牌,则应修改 parameters.azureActiveDirectory.login 并添加 loginParameters,如下所示:
"azureActiveDirectory": {
"enabled": true,
"isAutoProvisioned": true,
"login": {
"disableWWWAuthenticate": false,
"loginParameters": [
"resource=<clientId from the velow registration block>"
]
}, ...
将其保存为工作目录或任何其他目录中的 authsettingsv2.json,然后将其存放起来:
az rest --method PUT --url "https://management.azure.com/subscriptions/<subscription_id>/resourceGroups/<group_name>/providers/Microsoft.Web/sites/<site_name>/config/authsettingsv2?api-version=2020-09-01" --body @./authsettingsv2.json
清除您的 cookies 并返回到您的应用服务。您将获得一个可用的承载令牌。