#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.