Невозможно авторизоваться как пользователь программно
Я использую следующий код (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 и о том, как выполнять проверку подлинности с использованием субъекта службы: