Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Поток Azure Active Directory для веб-приложения, запущенный из Office 365

Автор вопроса: dallasgОтветов: 2

Какой из потоков проверки подлинности Azure Active Directory я бы использовал для однопользовательского веб-приложения, которое должно вызывать API Microsoft Graph и запускаться из средства запуска приложений Office 365?

Office 365 использует тот же клиент, что и веб-приложение, а я использую конечную точку Azure AD v1. Пример, который я пробовал, не совсем подходит для этого сценария, потому что он ожидает, что пользователь еще не вошел в систему.

Я пробовал этот пример: https://github.com/microsoftgraph/aspnetcore-connect-sample а>

Он работает правильно при прямом переходе к приложению, но щелчок его значка в средстве запуска приложений Office 365 немедленно отображает следующую ошибку:

Exception: OpenIdConnectAuthenticationHandler: message.State is null or empty.

Является ли решение выходом пользователя из системы и повторной аутентификацией, чтобы получить код авторизации для кеширования, или вместо этого следует использовать поток "от имени"?

  • Привет, @dallasg, у нас возникли некоторые конфликты зависимости при попытке реализовать конечную точку аутентификации Azure AD v2 (MSAL). Вероятно, это будет решено с помощью netcore2.0, поэтому образец будет обновлен в ближайшие недели. Если вы столкнулись с этой ошибкой и в образце, отправьте сообщение о проблеме: github.com/microsoftgraph / aspnetcore-connect-sample / issues Mark Szabo 13.10.2017

azure-active-directoryoffice365openid-connect

Ответы

Ответ 1 · Fei Xue - MSFT

Похоже, вы установили URL-адрес для входа непосредственно в URL-адрес домашней страницы для приложения без параметра state.

Чтобы решить эту проблему, рекомендуется установить домашнюю страницу приложения. Например, этот образец кода должен быть https://localhost:44334. Если вы хотите защитить веб-приложение и разрешить доступ только пользователям, прошедшим аутентификацию, мы можем заменить код в ConfigureServices методе, как показано ниже, и удалить атрибут AllowAnonymous в контроллере Home:

services.AddMvc(config =>
{
    var policy = new AuthorizationPolicyBuilder()
                     .RequireAuthenticatedUser()
                     .Build();
    config.Filters.Add(new AuthorizeFilter(policy));
});

После этого, когда вы заходите в приложение через портал приложений Office 365, оно сначала перенаправляет логин пользователей, прежде чем они смогут получить доступ к приложению.

Ответ 2 · dallasg

Мне удалось решить проблему, добавив URI Microsoft Graph в качестве параметра ресурса для промежуточного программного обеспечения OpenID Connect.

Теперь при запуске приложения отправляется код авторизации, который я могу сохранить в Token Cache и использовать позже для аутентификации в Graph API.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы