Проблема с конфигурацией API Management OAuth 2.0

Я следую этой статье, чтобы настроить управление 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.

URL - https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize?client_id=4adcXXXXXXXXX&redirect_uri=https%3A%2F%2Fcentenedevpoc.developer.azure-api.net%2Fsignin-oauth%2Fcode%2Fcallback% 2Foauth-authorizationcodeflow&response_type=code&state=fac40977-6fe9-3ed8-81bb-f25abda7833a&scope=api%3A%2F%2F4514b786-0fab-424c-af62-90d97d4cfbe5%2F.default

Проблема решена после изменения мультитенанта на одинарный в SPN. Однако у меня возникла дополнительная ошибка — AADTS700016: приложение с идентификатором «XXXXX-2ab2-4592-9453-XXXXX» не найдено в каталоге «XXXXXX». Это может произойти, если приложение не было установлено администратором клиента или не было получено согласие какого-либо пользователя в клиенте. Возможно, вы отправили запрос на аутентификацию не тому клиенту.

Uday Kiran 11.08.2024 10:32
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
65
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

{"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.

Uday Kiran 12.08.2024 12:26

Я также использую конечные точки V2

Ikhtesam Afrin 12.08.2024 12:28

Вам необходимо добавить идентификатор клиента oauth-client-app в oauth-backend-app, чтобы устранить ошибку.

Ikhtesam Afrin 12.08.2024 12:31

Я получаю, как показано ниже. Но я не вижу кнопки принять. Я администратор арендатора. [email protected] Требуется одобрение администратора. Непроверенному требуется разрешение на доступ к ресурсам вашей организации, которое может предоставить только администратор. Попросите администратора предоставить разрешение этому приложению, прежде чем вы сможете его использовать.

Uday Kiran 12.08.2024 12:38

В Expose a API вы добавили область как «Администратор» и «Пользователи»?

Ikhtesam Afrin 12.08.2024 12:41

Оба - Админы и пользователи. Поделитесь СС в вопросе.

Uday Kiran 12.08.2024 12:45

Можете ли вы поделиться SS Необходимо одобрение администратора, непроверенное разрешение на доступ к ресурсам

Ikhtesam Afrin 12.08.2024 12:47

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

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

Настройка аутентификации JWT с использованием Identity Server и получение токена доступа
Укажите срок действия при запросе токена доступа при входе в Microsoft oauth2 v2.0
Oauth2-proxy `/oauth2/auth` возвращает 401 для действительных токенов JWT
Spring + Vue + OAuth2 — отсутствует CORS, разрешающий происхождение
Выход из системы, инициированный RP, на сервере авторизации Spring не работает
Дифференцируйте сценарии, которые получают токен доступа, используя тип предоставления учетных данных клиента
Учетная запись службы Google OAUTH2 SMTP «555-5.5.2 Синтаксическая ошибка»
Аутентификация на основе ролей не работает с Keycloak и Java Spring
Ошибка в API Google oAuth2 — valid_request «Вы не можете войти в это приложение, поскольку оно не соответствует политике Google OAuth 2.0»
Требуется ли секрет клиента для Google OAuth 2.0 с использованием потока авторизации PKCE? Должен ли я публично раскрывать секрет клиента?