AcquireTokenForClientAsync не запрашивает пользователя - я полагаю, потому что он получает маркер для приложения для работы с собственными разрешениями?
Вы используете клиент OAuth 2.0учетные данные предоставляют для доступа к веб-ресурсам с использованием идентификатора приложения.Этот тип предоставления обычно используется для взаимодействий между серверами, которые должны выполняться в фоновом режиме, без непосредственного взаимодействия с пользователем.
AADSTS70002: Ошибка при проверке учетных данных.AADSTS500137: издатель токена не соответствует версии API: токен версии 1 нельзя использовать с конечной точкой v2.
Azure AD предоставляет две службы: Azure AD V1.0 и Azure AD V2.0См. Сравнение конечной точки Azure AD v2.0 с конечной точкой v1.0 .Вы не можете использовать токен v1 для получения токена v2 в от имени потока .
AcquireTokenOnBehalfOfAsync хочет JWT .. отлично!Я передам тот, который я получил от AcquireTokenForClientAsync
Как указано выше, эта функция используется для получения токена доступа для этого приложения (обычно веб-API) из полномочий, настроенных в приложении, вЧтобы получить доступ к другому защищенному нижестоящему веб-API от имени пользователя, используя поток OAuth 2.0 On-Behalf-Of.Таким образом, вы не можете использовать токен приложения, который получает с помощью Client Credential flow .
https://management.azure.com/.default работает, но так ли это?Это предположение, сочетание первого и суффикса .default, которое я нашел для онлайн-приложений Graph API.Есть какие-нибудь документы по этому вопросу?
Вы используете Azure Active Directory v2.0 и поток учетных данных клиента OAuth 2.0 при отправке запроса POST в / token v2.0конечная точка, область должна быть:
Значение, передаваемое для параметра области в этом запросе, должно быть идентификатором ресурса (URI идентификатора приложения) требуемого ресурса, прикрепленного к .default.суффикс.Для примера Microsoft Graph это значение равно https://graph.microsoft.com/.default.. Это значение сообщает конечной точке v2.0, что из всех прямых разрешений приложения, которые вы настроили для своего приложения, он должен выдать токен для тех, которые связаны с ресурсом, который вы используете.хотите использовать.
Пожалуйста, ознакомьтесь с разделом Get a token
в приведенном выше документе.
В конечном итоге я вернул JWT и ID арендатора.Я не могу найти способ использовать JWT с API-интерфейсами управления Fluent ..
AFAIK, в настоящее время приложения Azure AD V2.0 могут использовать:
- Свой собственный API
- API Microsoft Outlook
- API Microsoft Graph
Azure AD V2.0 в настоящее время не поддерживает API управления Azure.
Итак, проблема в том, что вам нужно разрешить рабочие и школьные учетные записи из Azure AD и личных учетных записей Microsoft (MSA), которые работают с Azure AD V2.0, но вы не можете использовать API-интерфейсы управления Azure.Вы можете использовать API-интерфейсы управления Azure в Azure AD V1.0, но это позволяет только рабочим и школьным учетным записям входить в ваше приложение, если только вы не приглашаете учетные записи Microsoft в качестве гостевого пользователя в Azure AD V1.0, но вам нужно настроить, чтобы они указывали наконечная точка клиента: https://login.microsoftonline.com/{TenantId_or_Name}).
во время аутентификации, если вы хотите войти с MSA в приложениях v1.0.
Обновление:
Вы можете использовать Поток кода и конечную точку azure ad v1.0, пользователь будет перенаправлен на страницу входа AAD и введет свои учетные данные. Здесь - это пример кода для .net Core.
В конечной точке Azure AD V1.0 запросы отправляются в конечную точку, которая объединяет всех клиентов Azure AD: https://login.microsoftonline.com/common.Когда Azure AD получает запрос от конечной точки / common, он регистрирует пользователя и, как следствие, обнаруживает, какой арендатор является пользователем.См. Документ здесь .Но в этом сценарии вы можете использовать только учетные записи для работы и учебы (AAD) для входа в систему.
В примере кода в вашей ссылке используется принцип службы Azure для проверки подлинности, без интерактивного входа пользователя. Вы можете использовать OpenID Connect Owin Middleware для аутентификации в приложениях .net Core, как показано здесь .