То, что вы отправляете в Scope, определяет, можете ли вы войти в систему с учетной записью Microsoft, используя конечные точки Azure AD V2 - PullRequest
0 голосов
/ 08 февраля 2019

Я зарегистрировал приложение с помощью блейда регистрации приложений (предварительный просмотр) и добавил API управления службами Azure в качестве разрешений API. Я загрузил образец на основе MSAL из

https://github.com/azure-samples/active-directory-dotnet-webapp-openidconnect-v2

Сейчас вstartup.auth.cs если я изменяю Scope, т.е. сохраняю openid и добавляю https://management.azure.com, а затем запускаю и пытаюсь войти в систему с учетной записью Microsoft, я получаю следующую ошибку

Это не похоже наРабочий или школьный адрес электронной почты, на который вы не можете войти, используя Личный кабинет, используйте вместо этого свой рабочий или школьный аккаунт.

если я удаляю Scope для https://managment.azure.com и просто сохраняю профиль Openid offline_access, я получаю экран согласия и вход в систему

new OpenIdConnectAuthenticationOptions {// Authority представляет v2.0 конечная точка - https://login.microsoftonline.com/common/v2.0 // Scope описывает начальные разрешения, которые понадобятся вашему приложению.См. https://azure.microsoft.com/documentation/articles/active-directory-v2-scopes/ ClientId = clientId, Authority = String.Format (CultureInfo.InvariantCulture, aadInstance, "common", "/v2.0"), RedirectUri = redirectUri, Scope = "openid https://management.azure.com/.default", PostLogoutRedirectUri= redirectUri,

Я ожидаю, что пользователь войдет в систему и получит токен для API управления. Я ищу причины для получения вышеуказанной ошибки. Это ожидаемое? Используемая мной учетная запись существует в моем каталоге какУчастник. Это работает, если я использую Управляемого пользователя (user@tenant.onmicrosoft.com) для входа в систему

1 Ответ

0 голосов
/ 11 февраля 2019

Поскольку личные учетные записи MS нельзя использовать для управления подписками Azure, если они не добавлены в Azure AD, вам следует использовать конечную точку organizations вместо common.

В v1 «общие» означают любыеААД арендатор.В v2 «общий» означает любого арендатора AAD + любую личную учетную запись MS.Если вам нужны только личные учетные записи, вы можете использовать «потребителей».

https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-protocols-oidc#fetch-the-openid-connect-metadata-document

Вы можете использовать «организации», чтобы разрешить любому арендатору AAD, но запретить учетные записи MS.Конечно, пользователь в любом случае может просто отредактировать URL-адрес и войти в систему с личной учетной записью MS, поэтому вам нужно будет проверить идентификатор владельца вошедшего в систему пользователя.

Идентификатор владельца для учетных записей MS всегда равен 9188040d-6c67-4c5b-b112-36a304b66dad в соответствии с документами: https://docs.microsoft.com/en-us/azure/active-directory/develop/id-tokens#payload-claims. Итак, проверьте заявление idp.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...