为 Exchange Management Shell cmdlet 获取 OAuth2 访问令牌

Acquiring OAuth2 access tokens for Exchange Management Shell cmdlets

在我们的 python 应用程序中,我们使用 Exchange 管理 Shell cmdlet 来执行一些任务。 (实际上,python 应用程序运行 .Net 应用程序,它调用 Exchange Management Shell cmdlet。) 目前,我们使用带有 New-PSSession cmdlet 的基本身份验证。 另一方面,我们已经在为不同的 API 和资源获取 OAuth2 访问令牌。 现在我们想通过 Exchange 管理 Shell cmdlets 使用 OAuth2 身份验证。

我们看过这篇文章[1]。

但是我们有几个问题:

  1. 有没有办法在不使用 ADAL 和 MSAL 的情况下获取访问令牌?
  2. 有没有办法使用刷新令牌获取新的访问令牌?
  3. 似乎没有机会使用外部(系统)浏览器,是吗? 提前谢谢你。

[1] https://developermessaging.azurewebsites.net/2018/09/07/acquiring-oauth2-access-tokens-for-automating-exchange-management-shell-cmdlets/?unapproved=96&moderation-hash=9250fbdda0e11fd8af9bafd4c3576139#review-96

  1. MSAL 和 ADAL 是专为通过 OAuth 进行身份验证而设计的库,是的,您无需使用 MSAL 或 ADAL 即可直接使用 OAuth.you 获得令牌,也可以直接使用 Oauth and OpenID Connect。通过管理来自 URL 的 Get 和 Post 请求来编码非常容易。
  2. 刷新令牌用于在当前访问令牌过期时获取新的访问令牌。有关详细信息,请参阅 document.
  3. 浏览器的使用取决于您使用的身份验证流程。例如 Device code flow 不需要浏览器。

呵呵,其实一切都很简单:

  1. 请求授权码:https://login.microsoftonline.com/common/oauth2/authorize?redirect_uri=http%3A%2F%2Flocalhost%3A55555&client_id=a0c73c16-a7e3-4564-9a95-2bdf47383716&response_type=code
  2. 请求访问令牌:

    • URL: https://login.microsoftonline.com/common/oauth2/token
    • 正文:resource=https%3A%2F%2Foutlook.office365.com&client_id=a0c73c16-a7e3-4564-9a95-2bdf47383716&redirect_uri=http%3A%2F%2Flocalhost%3A9999&code=YOUR_AUTHORIZATION_CODE&client_secret=&grant_type=authorization_code