Проверка подлинности Azure AD через Powershell возвращает null

#powershell #azure-active-directory #microsoft-graph-intune

#powershell #azure-active-directory #microsoft-graph-intune

Вопрос:

Я пытаюсь пройти аутентификацию в своем клиенте 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 равно нулю в Powershell 7, но содержит ожидаемые данные в Powershell 5.1.

Комментарии:

1. $Resource = "https:///graph.microsoft.com" Это просто опечатка, когда вы разместили вопрос здесь? Есть три косых черты.

2. Попробуйте установить AadSupport с помощью Install-Module -Name AadSupport и дайте мне знать, если это сработает.

3. Да, только здесь /// была опечатка. В реальном коде это правильно.

Ответ №1:

Powershell 6/7 (он же кроссплатформенный core) рекомендует использовать новые модули 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'
  

Комментарии:

1. Спасибо за указания. Код, который я устраняю, был написан кем-то другим, поэтому я рассмотрю возможность включения ваших предложений.

2. Пожалуйста, проверьте мой обновленный ответ. Я включил пример MSAL.