Проблема с аутентификацией API Django с использованием Azure AD и Postman

Я настроил проект django, используя библиотеку django_auth_adfs, чтобы использовать Azure Active Directory на этапе аутентификации. Я настроил его API с помощью rest_framework и теперь пытаюсь отправлять к нему запросы с помощью Postman. Моя проблема в том, что если я отправлю запрос с токеном доступа или без него, моим результатом будет не что иное, как необработанный html-код страницы входа в Microsoft. Я использовал эту ссылку для создания токена доступа:

https://dev.to/425show/calling-an-azure-ad-secured-api-with-postman-22co

Я пробовал разные разрешения API для своего приложения Azure, такие как Azure Active Directory Graph, Microsoft Graph и одно под моим собственным именем проекта, которое взято из того, которое я настроил в качестве области в разделе Expose a API. Также мне интересно, должна ли компания предоставлять доступ к API, который я настроил в разделе Expose a API?

Это Результат , который я получаю, и это моя среда почтальона. Во время регистрации токена мне предлагается войти в систему, используя мое имя пользователя, пароль и код аутентификации, отправленный на мой телефон, после чего токен успешно генерируется. Однако я все еще получаю страницу входа, хотя использую токен в своих заголовках. Также что касается конфигурации рекламы Django, она работает нормально. Люди могут входить и выходить из системы, используя свои учетные записи Microsoft, поэтому проблемы быть не должно.

Стоит ли изучать 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
0
96
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Действия по аутентификации API Django с использованием Azure Active Directory (AD) и доступа к нему через Postman.

Создайте приложение в разделе «Регистрация приложений Microsoft Entra ID». Выберите «Поддерживаемые типы учетных записей» в качестве клиента Microsoft Entra ID — мультитенантные и личные учетные записи Microsoft для API.

Добавьте область действия в Expose an API, выбрав согласие в качестве администраторов и пользователей, как показано на изображении ниже.

Используйте Instance, ClientId и TenantId в API Django.

 "Instance": "https://login.microsoftonline.com/",
 "ClientId": "18", //Application (Client) ID from 'Catalogue.Api' app registration overview blade
 "TenantId": "932" // Tenant ID from '.Catalogue.Api' app registration overview blade
  • Создайте еще одно приложение в Microsoft Entra ID для почтальона с указанным ниже URL-адресом обратного вызова.

https://www.postman.com/oauth2/callback

Выберите токены доступа, токены идентификации в разделе «Аутентификация» и сохраните их.

В приложении почтальона добавьте разрешения API для созданного вами приложения API.

Выберите «Делегированные разрешения» и «Разрешения API» и добавьте разрешение.

  • Добавьте секрет клиента в приложение Postman.

  • Создайте новую среду с уникальным именем и добавьте переменные, начальные значения и текущие значения, как показано на изображениях ниже.

  • Замените значения productAPiURl API Django, callbackurl, clientid, tenantld,scope и clientSecret.

  • Создайте новый запрос и выберите тип аутентификации OAuth 2.0.

  • Изменение URL-адреса обратного вызова, URL-адреса аутентификации, URL-адреса токена доступа, идентификатора клиента, секрета клиента, области действия и состояния с помощью сведений о приложении Postman

  Callback URL:  {{callbackUrl}}
  Auth URL:  https://login.microsoftonline.com/{{tenantid}}/oauth2/v2.0/authorize
  Token URL : https://login.microsoftonline.com/{{tenantid}}/oauth2/v2.0/token
  Client ID :  {{clientId}}
  Client Secret :  {{clientSecret}}
  Scope:  {{scope}}
  • Нажмите «Получить новый токен доступа», чтобы войти в систему и создать новый токен.

  • Используйте токен в заголовках в качестве имени ключа с Authorization .

Замените URL-адрес API Django и отправьте запрос.

Я сделал все шаг за шагом (кроме выбора типа поддержки как одиночный клиент, каталог организации для моего основного проекта, как и для моей организации), мне было предложено войти в систему после нажатия «Получить новый токен доступа», что указывает на то, что он относится к правильному Azure, и оно отображается как Авторизация в моих заголовках. Но опять же, я получаю html-код входа в вашу учетную запись. Мое разрешение API предоставлено компании. Возможно ли, что мне не хватает разрешения? Кроме того, проверьте мой вопрос еще раз, пожалуйста, поскольку я добавил скриншот того, что получаю (3-й абзац). Спасибо за помощь!

Arad Soutehkeshan 17.07.2024 12:51

Разрешения должны включать как минимум User.Read и любые пользовательские разрешения, определенные в вашем API (Expose a API).

Sampath 18.07.2024 08:10

Запрос на публикацию/получение работает нормально с API-интерфейсом Postman с активным каталогом Azure, и вы подтвердили страницу входа в дополнение к запросу на публикацию с активным каталогом Azure. Он совершенно другой, чем сравниваемый. Поскольку разместить запрос с объявлением - это любовь. Я рассмотрю оставшуюся проблему в новом вопросе, который вы подняли.

Sampath 18.07.2024 09:57

Привет, Навин, это действительно полезно, но я все еще получаю страницу входа в Microsoft. @Sampath, вы правы, я не думаю, что в конфигурациях почтальона и Azure что-то осталось. Возможно, он возник из моей конфигурации REST Django. Спасибо за помощь. Я принял ваш ответ.

Arad Soutehkeshan 18.07.2024 16:43

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

Размещенные агенты Azure Pipelines были обновлены и теперь содержат пакет SDK/среды выполнения .Net 5.x вместе со старой версией .Net Core
K8s aks реагирует на проблему маршрутизации: маршрутизация не осуществляется с IP-адреса svc, но отлично работает с IP-адреса локального хоста
Скрипты для уведомления об очереди недоставленных писем
Ограничьте количество пользователей, разрешенных с помощью Entra и учетных записей, в любой учетной записи организации и личных учетных записях Microsoft
Как изменить атрибут ресурса как входное значение в terraform
Передача параметров логического значения в Bicep из yaml конвейера DevOps
Azure Devops // Подключение к службе // Terraform // Конвейер Yaml -> Ошибка сборки
Ошибка ERR_SSL_UNRECOGNIZED_NAME_ALERT из шлюза приложений Azure с сертификатом SSL в хранилище ключей другой подписки
Вариант контейнера модели публикации веб-приложения Azure не работает с Terraform
Развертывание Docker Compose в Azure