微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过Powershell的Azure AD身份验证返回null

如何解决通过Powershell的Azure AD身份验证返回null

我正在尝试使用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中为null,但在Powershell 5.1中包含预期的数据。

解决方法

Powershell 6/7(又名跨平台内核)鼓励您使用基于CLI的新Az模块。对于AAD,请参考thisget access token reference

如果由于某些原因您仍然坚持使用旧版AzureAD模块,请考虑以兼容模式运行(尽管我似乎看不到有理由坚持使用旧版Azure,因为您似乎已经进入了新的Powershell)。人们为此写了blog post(免责声明:还没有尝试过自己)。

在您的示例代码中,我仍然看到您不是在使用任何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'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。