【问题标题】:Acquiring OAuth2 access tokens for Exchange Management Shell cmdlets获取 Exchange 命令行管理程序 cmdlet 的 OAuth2 访问令牌
【发布时间】:2020-09-10 11:39:44
【问题描述】:

在我们的 python 应用程序中,我们使用 Exchange 命令行管理程序 cmdlet 来执行一些任务。 (事实上​​,python 应用程序运行 .Net 应用程序,它调用 Exchange 命令行管理程序 cmdlet。) 目前,我们使用 New-PSSession cmdlet 进行基本身份验证。 另一方面,我们已经为不同的 API 和资源获取了 OAuth2 访问令牌。 现在我们想通过 Exchange 命令行管理程序 cmdlet 使用 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

【问题讨论】:

    标签: adal msal exchange-management-shell


    【解决方案1】:
    1. MSAL 和 ADAL 是专为通过 OAuth 进行身份验证而设计的库,是的,您可以在不使用 MSAL 或 ADAL 的情况下直接使用 OAuth 获取令牌。您可以直接使用 Oauth and OpenID Connect。通过管理来自 URL 的 Get 和 Post 请求,编写代码非常容易。
    2. 当您当前的访问令牌过期时,刷新令牌用于获取新的访问令牌。如需更多信息,请参阅document。
    3. 浏览器的使用取决于您使用的身份验证流程。例如Device code flow 不需要浏览器。

    【讨论】:

      【解决方案2】:

      哦,其实一切都很简单:

      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

      【讨论】:

        猜你喜欢
        • 2020-04-03
        • 1970-01-01
        • 2011-02-08
        • 1970-01-01
        • 1970-01-01
        • 2017-09-02
        • 2013-07-29
        • 1970-01-01
        • 2023-04-05
        相关资源
        最近更新 更多