首页 > 解决方案 > 使用 PowerShell 和新式身份验证连接到 Exchange Online(无任何依赖项)

问题描述

我想使用 PowerShell 和现代身份验证连接到 Exchange Online,而不依赖于任何模块或 dll。

有一个模块可用于 Exchange Online 的现代身份验证,它依赖于 CreateEXOPSSession.ps1 和 Microsoft.Exchange.Management.ExoPowerShellModule.dll,我已经反编译了后者,发现它会生成一个访问令牌,如下所示:

TokenInformation accessToken = TokenProviderFactory.Instance.CreateTokenProvider(new TokenProviderContext(authType, "a0c73c16-a7e3-4564-9a95-2bdf47383716", this.AzureADAuthorizationEndpointUri, acquireTokenEndpoint, this.UserPrincipalName, this.Credential, clientAppRedirectUri, (Action<string>) (s => this.WriteWarning(s)))).GetAccessToken();

我想在 PowerShell 中以相同的方式请求访问令牌,但我似乎无法获得正确的身份验证上下文和检索访问令牌的方法。

有任何想法吗?

标签: powershellaccess-tokenbearer-token

解决方案


您必须具有 MSOL 连接并创建与 EXO 的远程会话才能使用 EXO cmdlet。没有解决方法。

存在依赖性是有原因的。MSOL / Azure / O365 的后端管道符合它的预期,绕过它只会让你陷入非常令人沮丧/令人毛骨悚然的活动。

该令牌是 Azure AD,因为 MA/ADAL 要求您拥有 Azure AD Premium 许可证。MA 需要使用 ADAL API/DLL。这就像要求在不使用 API/DLL 的情况下以编程方式连接并使用 Exchange 本地 EAS/EWS 服务,这也不是一回事。

所以,不管你怎么看,都会有依赖关系,如下所述。所以,如果你认真对待这项工作,你需要真正深入了解 MA 的真正含义以及它是如何工作的。此外,必须已在O365Azure中的 ADAL MFA 设置中为您和用户启用 MFA 。

现代身份验证——它是什么? 现代身份验证将基于 Active Directory 身份验证库 (ADAL) 的登录引入到跨平台的 Office 客户端应用程序。

Microsoft 身份平台身份验证库

MS PowerShellGallery.com 上还有一个 ADAL 模块。

Microsoft.ADAL.PowerShell 1.12 适用于 PowerShell 的 ADAL 模块 https://www.powershellgallery.com/packages/Microsoft.ADAL.PowerShell/1.12

函数 Get-ADALAccessToken Clear-ADALAccessTokenCache

示例如下:

Microsoft.ADAL.Powershell ``` 
####Example 1 This example acquire accesstoken by using RedirectUri from contoso.onmicrosoft.com Azure Active Directory for PowerBI
service. It will only prompt you to sign in for the first time, or
when cache is expired.
Get-ADALAccessToken -AuthorityName contoso.onmicrosoft.com `
-ClientId 8f710b23-d3ea-4dd3-8a0e-c5958a6bc16d `
-ResourceId https://analysis.windows.net/powerbi/api `
-RedirectUri "http://yourredirecturi.local"

另请参阅: Azure-AD-Authentication-with-PowerShell-and-ADAL

这是一组非常简单的 PowerShell 脚本,允许您使用 ADAL 通过 Azure Active Directory 获取访问令牌。

还有这个... ADAL 和 PowerShell


推荐阅读