Проверка подлинности 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.


person Pete Mitchell    schedule 28.08.2020    source источник
comment
Это $Resource = "https:///graph.microsoft.com" просто опечатка, когда вы разместили здесь вопрос? Есть три косых черты.   -  person Ash    schedule 29.08.2020
comment
Попробуйте установить AadSupport с помощью Install-Module -Name AadSupport и сообщите мне, работает ли он.   -  person singhh-msft    schedule 29.08.2020
comment
Да, /// была опечаткой только здесь. Это правильно в реальном коде.   -  person Pete Mitchell    schedule 31.08.2020


Ответы (1)


Powershell 6/7 (также известный как кроссплатформенное ядро) рекомендует использовать новые модули Az на основе CLI. Для 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'
person krishg    schedule 29.08.2020
comment
Спасибо за указатели. Код, который я пытаюсь устранить, был написан кем-то другим, поэтому я постараюсь учесть ваши предложения. - person Pete Mitchell; 31.08.2020
comment
Пожалуйста, проверьте мой обновленный ответ. Я включил пример MSAL. - person krishg; 31.08.2020