Я следую этой статье, чтобы настроить управление API с помощью OAuth 2.0. Однако во время аутентификации на портале разработчиков APIM — API Trigger я получаю сообщение об ошибке ниже.
{"code":"Несанкционировано","message":{"error":"invalid_client","error_description":"AADSTS650052: Приложение пытается получить доступ к сервису «XXXXXXXXXX-1f80-4ded-a96a-XXXXXX» (oauth-backend-api), который ваш организации '65e4e06f-f263-4c1f-becb-90deb8c2d9ff' не хватает службы основной для. Обратитесь к своему ИТ-администратору, чтобы просмотреть конфигурацию ваши подписки на услуги или согласие на использование приложения, чтобы создайте требуемого субъекта-службы. Идентификатор трассировки: 8e6c4fac-b3fd-460c-976b-91ccca094c00 Идентификатор корреляции: a65c5507-da87-47ce-841a-de29985af0dc Временная метка: 10 августа 2024 г. 23:11:17Z","error_uri":"https://login.microsoftonline.com/error?code=650052","state":"e689f2d6-be48-1230-b0b7-2d790cb5589f"
Конфигурация политики, как показано ниже
<validate-jwt header-name = "Authorization" failed-validation-httpcode = "401" failed-validation-error-message = "Unauthorized. Access token is missing or invalid.">
<openid-config url = "https://login.microsoftonline.com/XXXXXXX/v2.0/.well-known/openid-configuration" />
<required-claims>
<claim name = "aud">
<value>XXXXXXXX-1f80-4ded-a96a-XXXXXX</value>
</claim>
</required-claims>
</validate-jwt>
Решение: путем изменения мультитенанта на одинарный в SPN.
Новая ошибка: AADTS700016: Приложение с идентификатором «XXXX-2ab2-XX-XX-XXX» не найдено в каталоге «XXXXXXX». Это может произойти, если приложение не было установлено администратором клиента или не было получено согласие какого-либо пользователя в клиенте. Возможно, вы отправили запрос на аутентификацию не тому клиенту.
Ниже приведены текущие разрешения API.
Бэкэнд-приложение — предоставление конфигурации API.
{"code":"Несанкционировано","message":{"error":"invalid_client","error_description":"AADSTS650052: приложение пытается получить доступ к службе 'XXXXXXXX-1f80-4ded-a96a-XXXXXX'(oauth -backend-api), для которой в вашей организации «65e4e06f-f263-4c1f-becb-90deb8c2d9ff» отсутствует субъект-служба. Обратитесь к своему ИТ-администратору, чтобы просмотреть конфигурацию подписок на службы или дать согласие на приложение, чтобы создать требуемого субъекта-службы. Идентификатор трассировки: 8e6c4fac-b3fd-460c-976b-91ccca094c00 Идентификатор корреляции: a65c5507-da87-47ce-841a-de29985af0dc Метка времени: 2024-08-10 23:11:17Z","error_uri":"https://login. microsoftonline.com/error?code=650052","state":"e689f2d6-be48-1230-b0b7-2d790cb5589f"
Чтобы избавиться от этой ошибки, вам необходимо добавить идентификатор клиента oauth-client-app в oauth-backend-app, как показано ниже, и сохранить оба приложения только в мультитенанте.
Я использую данную политику в apim.
<policies>
<inbound>
<base />
<validate-jwt header-name = "Authorization" failed-validation-httpcode = "401" failed-validation-error-message = "Unauthorized. Access token is missing or invalid.">
<openid-config url = "https://login.microsoftonline.com/932********f6d/v2.0/.well-known/openid-configuration" />
<issuers>
<issuer>https://sts.windows.net/932********f6d/</issuer>
</issuers>
<required-claims>
<claim name = "aud">
<value>3a31*********c0b</value>
</claim>
</required-claims>
</validate-jwt>
</inbound>
</policies>
Затем опубликовал портал разработчика, перешел к экрану ниже, чтобы получить токен на предъявителя, и нажал «Принять».
Затем получил ответ 200 ОК.
Спасибо за подробности, к вашему сведению: я использую конечные точки Azure AD V2. Я думаю, что sts.windows.net{tenant-id-guid}/ подходит для конечных точек V1.
Я также использую конечные точки V2
Вам необходимо добавить идентификатор клиента oauth-client-app в oauth-backend-app, чтобы устранить ошибку.
Я получаю, как показано ниже. Но я не вижу кнопки принять. Я администратор арендатора. [email protected] Требуется одобрение администратора. Непроверенному требуется разрешение на доступ к ресурсам вашей организации, которое может предоставить только администратор. Попросите администратора предоставить разрешение этому приложению, прежде чем вы сможете его использовать.
В Expose a API вы добавили область как «Администратор» и «Пользователи»?
Оба - Админы и пользователи. Поделитесь СС в вопросе.
Можете ли вы поделиться SS Необходимо одобрение администратора, непроверенное разрешение на доступ к ресурсам
Проблема решена после изменения мультитенанта на одинарный в SPN. Однако у меня возникла дополнительная ошибка — AADTS700016: приложение с идентификатором «XXXXX-2ab2-4592-9453-XXXXX» не найдено в каталоге «XXXXXX». Это может произойти, если приложение не было установлено администратором клиента или не было получено согласие какого-либо пользователя в клиенте. Возможно, вы отправили запрос на аутентификацию не тому клиенту.