Невозможно авторизоваться как пользователь программно

Я использую следующий код (python, но это не имеет значения, получая тот же результат с powershell и invoke-webrequest):

from msrestazure.azure_active_directory import UserPassCredentials
username = '%username%'
password = '%password%'
client_id = '{Azure AD Application GUID}'
secret_id = '{Azure AD Application secret}'
credentials = UserPassCredentials(username, password, client_id, secret_id)

это работает для пользователей одного арендатора, но не работает для пользователей другого арендатора со странной ошибкой:

msrest.exceptions.AuthenticationError:, InvalidGrantError: (invalid_grant) AADSTS70002: Ошибка при проверке учетных данных. AADSTS50126: Неверное имя пользователя или пароль

Я могу войти, используя портал с теми же учетными данными, просто отлично. Рассматриваемый арендатор использует AAD Sync и SSO, это может помешать?

Если да, как я могу получить токены для пользователей в такой Azure AD?

1 ответ

Решение

Я уверен, что понимаю серьезные последствия для безопасности использования предоставления учетных данных владельца ресурса при попытке входа в Azure AD.

Есть также несколько проблем / побочных эффектов:

  • Если для вашей учетной записи включен MFA / условный доступ, вам не нужно будет входить в систему, используя учетные данные владельца ресурса. Период. Выхода нет.
  • Если ваш домен federated (как в вашем случае), вы не сможете войти. Существует небольшая вероятность того, что будет возможно войти в систему, если вы также сделаете Password Hash Sync, но я не уверен, поможет ли это.

В конце концов, лучший способ аутентифицировать внутренний и не пользовательский интерактивный процесс - это использовать Service Principal,

Ознакомьтесь со следующими источниками документации, чтобы узнать больше о принципалах службы в Azure AD и о том, как выполнять проверку подлинности с использованием субъекта службы:

Другие вопросы по тегам