获取 Exchange 命令行管理程序 cmdlet 的 OAuth2 访问令牌



在我们的 python 应用程序中,我们使用 Exchange Management Shell cmdlet 来执行一些任务。 (实际上,python应用程序运行.Net应用程序,该应用程序调用Exchange Management Shell cmdlet。 目前,我们对 New-PSSession cmdlet 使用基本身份验证。 另一方面,我们已经为不同的 API 和资源获取了 OAuth2 访问令牌。 现在,我们希望将 OAuth2 身份验证与 Exchange 命令行管理程序 cmdlet 一起使用。

我们看了这篇文章[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

MSAL 和 ADAL 是设计用于通过 OAuth
  1. 进行身份验证的库,是的,你可以直接使用 OAuth 在不使用 MSAL 或 ADAL 的情况下获取令牌。通过管理来自 URL 的获取和发布请求来编码非常容易。
  2. 刷新令牌用于在当前访问令牌
  3. 过期时获取新的访问令牌。有关详细信息,请参阅文档。
  4. 浏览器的使用取决于您使用的身份验证流。例如,设备代码流不需要浏览器。

哦,其实一切都很简单:

  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. 请求访问令牌:

    • 网址: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

最新更新