Я настроил проект 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, поэтому проблемы быть не должно.
Действия по аутентификации 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
https://www.postman.com/oauth2/callback
Выберите токены доступа, токены идентификации в разделе «Аутентификация» и сохраните их.
В приложении почтальона добавьте разрешения API для созданного вами приложения API.
Выберите «Делегированные разрешения» и «Разрешения API» и добавьте разрешение.
Создайте новый запрос и выберите тип аутентификации 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}}
Замените URL-адрес API Django и отправьте запрос.
Разрешения должны включать как минимум User.Read
и любые пользовательские разрешения, определенные в вашем API (Expose a API).
Запрос на публикацию/получение работает нормально с API-интерфейсом Postman с активным каталогом Azure, и вы подтвердили страницу входа в дополнение к запросу на публикацию с активным каталогом Azure. Он совершенно другой, чем сравниваемый. Поскольку разместить запрос с объявлением - это любовь. Я рассмотрю оставшуюся проблему в новом вопросе, который вы подняли.
Привет, Навин, это действительно полезно, но я все еще получаю страницу входа в Microsoft. @Sampath, вы правы, я не думаю, что в конфигурациях почтальона и Azure что-то осталось. Возможно, он возник из моей конфигурации REST Django. Спасибо за помощь. Я принял ваш ответ.
Я сделал все шаг за шагом (кроме выбора типа поддержки как одиночный клиент, каталог организации для моего основного проекта, как и для моей организации), мне было предложено войти в систему после нажатия «Получить новый токен доступа», что указывает на то, что он относится к правильному Azure, и оно отображается как Авторизация в моих заголовках. Но опять же, я получаю html-код входа в вашу учетную запись. Мое разрешение API предоставлено компании. Возможно ли, что мне не хватает разрешения? Кроме того, проверьте мой вопрос еще раз, пожалуйста, поскольку я добавил скриншот того, что получаю (3-й абзац). Спасибо за помощь!