0

У меня есть приложение для веб-форм, которое я разработал для тестирования сценариев аутентификации/авторизации. При создании тестового проекта я выбрал «Нет аутентификации», в результате чего у моего проекта не было кода механизма аутентификации. Я опубликовал веб-сайт для своего лазурного арендатора и включил аутентификацию Azure Active Directory в разделе «Аутентификация/авторизация» по функциям. Я создал приложение Azure AD, указывающее на мое веб-приложение. После нажатия на страницу по умолчанию приложение теперь аутентифицируется, и все работает нормально.Получить информацию о пользователе во время проверки подлинности из Azure Active Directory

Однако, когда я запускаю приложение локально из Visual Studio, я не могу получить информацию о пользователе, так как нет соответствующих заголовков, например, X-MS-CLIENT-PRINCIPAL-NAME. Следующим шагом явился вызов графического API для получения подробной информации о пользователе.

ПРИМЕЧАНИЕ: Я могу включить код OWIN в свой веб-проект для аутентификации пользователей, но я хочу, чтобы минимальное изменение кода в моем существующем приложении проверки подлинности Windows на предварительном уровне.

Любая помощь/руководство

+0

Вы просматриваете одно знаковое приложение для приложения, когда оно используется как в интрасети, так и в Интернете? то вам нужно взглянуть на azure AD connect. в случае azure AD вы будете использовать графический API для аутентификации и получения информации о пользователе и т. д. в помещении AD вы будете использовать LDAP. – Aravind

+0

Возможно, вам будет отказано одиночный вход, поскольку я уже прошу моего пользователя ввести свои учетные данные для входа в систему при просмотре сайта. Я хочу аутентифицировать пользователя через Azure AD. Тем не менее, когда я запускаю приложение из VS, я не могу получить либо заголовки Auth, не могу ли я получить основную заявку для вызова Graph API. – Ashish

+0

вы просто связали приложение с AAD. страница по умолчанию выводит вас на страницу входа в систему, и вы переходите оттуда. обычно практика заключается в добавлении вызовов ADAL аутентификации/авторизации с использованием графического API в атрибут [Authorize] для контроллеров в случае приложения MVC. Затем используйте информацию о пользователе, полученную с помощью графического API, где бы вы ни нуждались. – Aravind

ответ

2

Однако, когда я запустить приложение локально в Visual Studio, я не в состоянии получить информацию о пользователе, как нет соответствующих заголовков доступны, например, X-MS-КЛИЕНТ -principal-NAME. Следующим шагом явился вызов графического API для получения подробной информации о пользователе.

Ожидается. Заголовок X-MS-CLIENT-PRINCIPAL-NAME (и связанные заголовки) добавляется модулем аутентификации/авторизации, который запускается в службе приложений. когда вы запускаете локально из Visual Studio, у вас не будет этого модуля и, следовательно, он не будет иметь этот заголовок запроса.

Если вы хотите использовать один и тот же код, как локально, так и в App службы, вместо того, чтобы смотреть на заголовки запроса, я предлагаю использовать .NET API, которые Поверхностные информацию о пользователе, например ClaimsPrincipal.Current.Identity.Name , Это должно быть правильно заполнено, если вы используете локальную проверку подлинности Windows или аутентификацию/авторизацию в службе Azure App Service.

Дополнительную информацию об основоположной механике аутентификации/авторизации можно найти здесь: https://cgillum.tech/2016/02/01/architecture-of-azure-app-service-authentication-authorization/.

+0

Спасибо за ответ. Можете ли вы указать мне пример кода с помощью ClaimsPrincipal для получения информации о группе пользователей через Graph API? – Ashish

+1

Здесь представлена ​​документация API Графа для получения информации о группе: https://msdn.microsoft.com/en-us/library/azure/ad/graph/api/users-operations#get-all-group-memberships-transitive. Ниже приведена информация о том, как вызвать API-интерфейс Graph в качестве пользователя (специфичный для аутентификации/авторизации): https://cgillum.tech/2016/03/25/app-service-auth-aad-graph-api/ –

+0

Большое спасибо за помощь. Я успешно смог получить необходимую информацию через заголовки. Однако, пару вопросов. 1) Есть ли способ, которым я могу заполнить информацию заголовка, например токен, обновить токен и т. Д., А также в ClaimsPrincipal? 2) Несколько раз я видел, что всякий раз, когда я изменяю конфигурацию/authSettings через диспетчер ресурсов, я начинаю получать ошибку, поскольку «у вас нет разрешения на просмотр этой страницы». Я проверил, что редактируемый json-файл находится в правильном формате со всем синтаксисом. Мне пришлось удалить веб-сайт, воссоздать его и внести изменения. – Ashish

Смежные вопросы