Я пытался получить токен-носитель из заголовков, которые Easy Auth внедряет в запросы к моей службе приложений Azure, чтобы предоставить пользователям, которые хотят выполнять вызовы 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 / , чтобы получить настоящий токен на предъявителя, но Resource Explorer дает мне следующее:
Cannot execute the request for site ... because the site is running on auth version v2
Что делать?
Обратите внимание на то, что версия API, к которой Resource Manager хочет PUT запрос, устарела:
subscriptions /
Они предоставили новый, хотя это трудно узнать.
Я не знаю, почему они так долго обновляли свои инструменты. Но теперь вам нужно будет внести изменения с помощью интерфейса командной строки (если у вас его нет, перейдите по адресу 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, чтобы получить вашу конфигурацию. Обратите внимание на «authsettingsv2» в URL-адресе. Это новый раздел, который не поддерживает ни один из инструментов.
Скопируйте конфигурацию в редактор и внесите нужные изменения. Схема находится здесь: https://docs.microsoft.com/en-us/azure/templates/microsoft.web/sites/config-authsettingsv2?tabs=json
Если вы пытаетесь следовать ДополнительныйLoginParams совет по настройке, чтобы получить правильный токен-носитель AAD, вам следует изменить параметры parameters.azureActiveDirectory.login и добавить параметры входа, например:
"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/
Удалите файлы cookie и вернитесь в службу своего приложения. У вас будет годный жетон на предъявителя.