Проверка подлинности Azure AD через Powershell возвращает значение null
Я пытаюсь пройти аутентификацию для своего клиента Intune с помощью Powershell и модуля AzureAD. В Windows Powershell (5.1) это работает, но в Powershell 7 тот же код возвращает значение null. Я получаю запрос на вход, ввожу свои учетные данные и отвечаю на запрос MFA на моем телефоне. Есть идеи о том, что происходит?
$Resource = "https://graph.microsoft.com"
$ClientID = "d1ddf0e4-d672-4dae-b554-9d5bdfd93547"
$RedirectUri = "urn:ietf:wg:oauth:2.0:oob"
# $PlatformParams has PromptBehavior set to Always
$Authority = "https://login.microsoftonline.com/mytenant.onmicrosoft.com/oauth2/v2.0/token"
$AuthenticationContext = New-Object -TypeName "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" -ArgumentList $Authority -ErrorAction Stop
$AuthenticationResult = ($AuthenticationContext.AcquireTokenAsync($Resource, $ClientID, $RedirectUri, $PlatformParams)).Result
$AuthenticationResult имеет значение null в Powershell 7, но содержит ожидаемые данные в Powershell 5.1.
1 ответ
Powershell 6/7 (также известный как кроссплатформенное ядро) рекомендует использовать новые модули Az на основе интерфейса командной строки. Для AAD обратитесь к этому и получите ссылку на токен доступа.
Если вы по какой-то причине все еще настаиваете на использовании устаревшего модуля AzureAD, подумайте о том, чтобы запустить его в режиме совместимости (хотя я не вижу причин придерживаться устаревшего модуля один раз, поскольку вы, похоже, уже вошли в новую оболочку PowerShell). Люди написали об этом сообщения в блоге (отказ от ответственности: сам не пробовал).
Также в вашем примере кода я вижу, что вы в любом случае используете не командлет PowerShell, а объекты ADAL. Это еще одна вещь, которую я рекомендую вам избегать (хотя она напрямую не связана с этой проблемой). ADAL устарел и заменен MSAL. Powershell модуль MSAL.PS.
Пример использования MSAL.PS:
Install-Module -Name MSAL.PS
Get-MsalToken -ClientId 'd1ddf0e4-d672-4dae-b554-9d5bdfd93547' -TenantId 'mytenant.onmicrosoft.com' -Scopes 'https://graph.microsoft.com/.default'