0

我正在尝试使用 Powershell 和 AzureAD 模块对我的 Intune 租户进行身份验证。在 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 中包含预期数据。

4

1 回答 1

0

Powershell 6/7(又名跨平台核心)鼓励您使用基于CLI的新 Az 模块。对于 AAD,请参阅获取访问令牌参考

如果您出于某种原因仍然坚持使用旧版 AzureAD 模块,请考虑在兼容模式下运行(尽管我认为没有理由坚持使用旧版,因为您似乎已经进入了新的 powershell)。人们已经写了关于此的博客文章(免责声明:我自己没有尝试过)。

同样在您的示例代码中,我看到您无论如何都没有使用任何 powershell cmdlet,而是使用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'
于 2020-08-29T11:25:36.130 回答