(Я прошу прощения за длину этого вопроса; я хотел быть тщательным.)
Я новичок в Azure и пытаюсь настроить API без сервера, который требует аутентификации. У меня есть функция, которая работает правильно, когда аутентификация не включена (в основном просто "Hello, world" в Node.js). Однако, когда я включаю аутентификацию, я получаю только один ответ:
You do not have permission to view this directory or page.
Чтобы включить аутентификацию, я:
- Отправлено в Azure Active Directory на портале Azure.
- Отправился на регистрацию приложений.
- Создана новая регистрация для моего приложения Functions.
- Добавлен URI веб-перенаправления
https://<myapp>.azurewebsites.net/.auth/login/microsoftaccount/callback
.
- Создан новый клиентский секрет для моего приложения.
- Отправился в мое приложение с панели инструментов, выбрал вкладку «Функции платформы» и нажал «Аутентификация / Авторизация».
- Включена «Аутентификация службы приложений».
- Настроил провайдера аутентификации Microsoft с указанным выше идентификатором приложения и секретом клиента.
- Установите «Действие, которое необходимо выполнить, если запрос не прошел проверку подлинности», на «Вход в учетную запись Microsoft».
На данный момент я больше не могу получить доступ к своей конечной точке API без аутентификации (как и ожидалось). Затем я настроил Почтальон на получение токена:
- Выбор вкладки Авторизация.
- Установка типа на «OAuth 2.0».
- Нажмите «Получить новый токен доступа».
- Установка следующих значений:
- Тип гранта: Код авторизации
- URL обратного вызова:
https://<myapp>.azurewebsites.net/.auth/login/microsoftaccount/callback
(так же, как я ввел в мою регистрацию приложения выше).
- URL авторизации:
https://login.microsoftonline.com/<Directory (tentant) ID>/oauth2/authorize?resource=<Application (client) ID>
- URL токена доступа:
https://login.microsoftonline.com/<Directory (tentant) ID>/oauth2/token?resource=<Application (client) ID>
- Идентификатор клиента: <идентификатор приложения (клиента)>
- Секрет клиента: <Секрет клиента>
- Область применения:
- Состояние:
- Аутентификация клиента: отправка в виде обычного заголовка аутентификации
- Нажатие кнопки «Запросить токен».
- Войдите в систему как я в появившемся окне. (Это случилось только в первый раз; предположительно, мои учетные данные где-то кешируются.)
- Нажатие кнопки «Использовать токен».
- Нажатие кнопки «Предварительный просмотр».
Когда я нажимаю «Отправить», я получаю сообщение об ошибке выше. Если я отключаю аутентификацию или изменяю «Действие для принятия…», чтобы разрешить неавторизованные запросы, он снова начинает работать (но, конечно, не требует аутентификации). Я запустил JWT, который Почтальон получает через JWT.io , а полезная нагрузка выглядит разумной, насколько я могу судить:
{
"aud": "<Application (client) ID>",
"iss": "https://login.microsoftonline.com/<Directory (tentant) ID>/v2.0",
"iat": 1558488698,
"nbf": 1558488698,
"exp": 1558492598,
"aio": "<base64? data>",
"azp": "<Application (client) ID>",
"azpacr": "1",
"idp": "live.com",
"name": "Ben Blank",
"oid": "<a GUID I don't recognize>",
"preferred_username": "ben.blank@gmail.com",
"scp": "User.Read",
"sub": "<base64? data>",
"tid": "<Directory (tentant) ID>",
"uti": "<base64? data>",
"ver": "2.0"
}
Может кто-нибудь сказать мне, что я сделал не так?