我试图从标头中获取不记名令牌 Easy Auth 注入到我的 Azure 应用程序服务的请求中,以提供想要对我的应用程序进行 API 调用的用户,但是来自 X-MS-TOKEN 中提供的令牌存储的令牌- AAD-ACCESS-TOKEN 无效。它采用某种内部或加密格式,以 JWT 开头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
该怎么办?
请注意,资源管理器想要 PUT 请求的 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)。
做:
是的,他们更新为 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,如下所示:
将其保存为 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
清除您的 cookie 并返回您的应用服务。您将拥有一个可用的不记名令牌。