Невозможно заставить Postman успешно пройти проверку подлинности в Entra/Azure AD в функции Azure

Я настраиваю свою функцию Azure для аутентификации в своем собственном клиенте следующим образом...

При регистрации приложения для ресурса API отображается следующим образом.

После этого, если я нажму на него в браузере, он сам попросит меня пройти аутентификацию и затем сработает. Большой! Сейчас я пытаюсь выполнить это в Postman и получаю ошибку 401, что бы я ни делал.

Почтальон входит в систему как собственный субъект-служба (1ec5483f-8eb9-4851-af81-ff89eb3e25ad) и разрешения API установлены следующим образом

Затем я установил токен OATH 2 в клиенте POSTMAN - и он получил тот, который кажется действительным.

Я явно намеренно скрыл секрет. Область действия установлена ​​на api://31f5b60c-5de3-4135-85ec-08edfbce042e/General.Read. URL-адрес токена доступа = https://login.microsoftonline.com/mytenant/oauth2/v2.0/authorize . URL-адрес токена = https://login.microsoftonline.com/my tenant/oauth2/v2.0/authorize

Расшифрованный токен выглядит так:

{
  "aud": "api://31f5b60c-5de3-4135-85ec-08edfbce042e",
  "iss": "https://sts.windows.net/mytenant/",
  "iat": 1695814282,
  "nbf": 1695814282,
  "exp": 1695818220,
  "acr": "1",
  "aio": "ATQAy/8UAAAAS8sRzKTgrNlGhofLEKYO7xweUqSUmLrqQWFN8i0o/qsoeBqavqK7oQXJt19EOeBk",
  "amr": [
    "pwd"
  ],
  "appid": "1ec5483f-8eb9-4851-af81-ff89eb3e25ad",
  "appidacr": "1",
  "family_name": "XXX",
  "given_name": "XXX",
  "ipaddr": "XXX",
  "name": "XXX",
  "oid": "1c11db5e-dc85-4c4b-882e-b8dd40206255",
  "onprem_sid": "S-1-5-21-57989841-1450960922-725345543-4904",
  "rh": "0.ARcAdKQVoiCS8E-TJSBRMiYmswy29THjXTVBhewI7fvOBC4XACo.",
  "roles": [
    "Trigger.Function"
  ],
  "scp": "General.Read",
  "sub": "q7tSjCuR5mf56ekcpYI4xEZ6Kdo_zfXkT2oBYEsyohQ",
  "tid": "a215a474-9220-4ff0-9325-2051322626b3",
  "unique_name": "[email protected]",
  "upn": "[email protected]",
  "uti": "0W4WOPhO406S8ahy4GkmAA",
  "ver": "1.0"
}

Опять мне это бросается в глаза. Но когда я звоню

Это ВСЕГДА 401. Где я ошибаюсь?

вот изображение URL-адреса функции... без кода

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
98
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я создал приложение-функцию Azure AD и включил аутентификацию, как показано ниже:

В приложении Azure AD доступен API:

Добавлены разрешения API:

Теперь я попытался сгенерировать токен доступа и аутентифицировать приложение-функцию, используя следующие параметры:

GET https://testrukfunctapp1.azurewebsites.net/api/HttpTrigger1

Callback URL : RedirectURL
Auth URL : https://login.microsoftonline.com/TenantID/oauth2/v2.0/authorize
Access Token URL : https://login.microsoftonline.com/TenantID/oauth2/v2.0/token
ClientID : ClientID
Client Secret : ***
Scope : api://xxx/user_impersonation

Я получил ту же ошибку (401 Неавторизованный), как показано ниже:

Чтобы устранить ошибку, обязательно передайте заголовок x-functions-key:

Значение x-functions-key — это значение кода в URL-адресе функции:

После передачи заголовка я могу успешно аутентифицировать приложение-функцию, используя токен доступа, как показано ниже:

GET https://testrukfunctapp1.azurewebsites.net/api/HttpTrigger1

x-functions-key : FunctionURLCodeValue
Content-Type : application/json

У меня нет значения кода в URL-адресе моей функции... откуда оно взялось? моя функция очень проста, анонимна. const { приложение } = require('@azure/functions'); app.http('testHttp1', { методы: ['GET', 'POST'], authLevel: 'anonymous', обработчик: async (запрос, контекст) => { context.log(Http function processed request for url "${request.url}"); const name = request. query.get('name') || await request.text() || 'world'; return { body: Hello, ${name}! }; } });

frmrIntern 27.09.2023 15:39

Можете ли вы зайти в свое приложение-функцию -> выбрать функцию -> нажать «Получить URL-адрес функции» -> скопировать URL-адрес функции?

Rukmini 27.09.2023 15:42
unlinked-secure-we-app-api.azurewebsites.net/api/testHttp1? вот что мне это дает.... есть ли способ включить код?
frmrIntern 27.09.2023 15:57

Можете вставить скриншот?

Rukmini 27.09.2023 16:01

Использование 2.0.... добавит изображение выше

frmrIntern 27.09.2023 17:28

После вопросительного знака в URL-адресе функции в моем ответе нет обновленного кода?

Rukmini 27.09.2023 17:37

И вы вручную предоставили API при регистрации приложения или он был предоставлен автоматически после создания регистрации приложения в приложении-функции?

Rukmini 27.09.2023 17:38

нет кода после ? вообще - это конец коробки. Я добавил открытый API вручную

frmrIntern 27.09.2023 17:44

Когда я выбрал регистрацию создания нового приложения в приложении-функции, API-интерфейс API был создан автоматически. Следовательно, вы получаете ошибку 401

Rukmini 27.09.2023 17:46

Начинаем с нуля и позволяем порталу заставить идентификатор работать! Спасибо

frmrIntern 27.09.2023 17:57

Другие вопросы по теме

Похожие вопросы

MSGraph лучший поток аутентификации для единого входа
Экземпляр контейнера Azure все еще находится в процессе перехода, повторите попытку позже
Ошибка npm «Не удалось разрешить зависимость: npm ERR! Peer webpack@»5.x.x» из @webpack-cli/[email protected]»
Можно ли определить, заблокировано ли сообщение, прежде чем пытаться его получить?
Маркер доступа, полученный с помощью MSAL, не содержит идентификаторы групп
Объединение файлов в фабрике данных Azure с помощью действия копирования данных приводит к путанице строк в наборе данных приемника
Видеофайл MP4, загруженный в хранилище BLOB-объектов Azure, не воспроизводится
Поддерживает ли Конфигурация приложений Azure какое-либо сохранение для локального приложения?
Правила безопасности для улучшения общедоступной группы сетевой безопасности службы Azure Kubernetes (AKS) по умолчанию
Как устранить ошибку «диск переполнен» в Azure ML?