Я пытаюсь использовать аутентификацию по паролю, чтобы получить access_token через Graph API в Powershell. На самом деле, я сделал несколько скриптов, которые аутентифицируются с помощью «Client_Credentials», для сбора информации об использовании Office 365 пользователями. Мне также нужно получить список чатов Teams, но я обнаружил, что он поддерживается только делегированным разрешением, а не разрешением приложения, я понимаю, что должен попытаться выполнить аутентификацию с помощью пароля для определенного пользователя c, вошедшего в систему. После того, как я попытался выполнить аутентификацию ниже метод "пароля", имя пользователя и пароль, которые я ввожу в командной строке, - это то, что я использовал, это простые учетные данные для входа в систему с именем пользователя и паролем. Но все равно продолжайте получать:
*"error:"invalid_grant","error_description": "AADSTS50126": Error validating credentials due to invalid username or password" .*
Как я уже упоминал, у меня было приложение, зарегистрированное в Azure AD Directory должным образом для других сценариев аутентификации Client_Credentials, они работают нормально, я не уверен, что мне нужно что-то проверить или изменить в реестре приложений?
$tenant = 'GUID OR Domain Name'
$appId = 'APP GUID'
$URI = 'https://login.microsoft.com/$tenant/oauth2/v2.0/token/
$cred = Get-Credential -Message "Please enter your Office 365 Credentials"
$oauthUser = Invoke-RestMethod -Method Post -Uri $uri -Body @{
grant_type = 'password';
client_id = $clientID;
username = $cred.username;
password = $cred.GetNetworkCredential().Password;
resource = 'https://graph.microsoft.com';
}