【问题标题】:Get token for OAuth2 protected API in PowerShell在 PowerShell 中获取受 OAuth2 保护的 API 的令牌
【发布时间】:2020-08-18 13:46:46
【问题描述】:

当我使用浏览器时,我使用此端点进行授权:

https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize?client_id=&response_type=code&redirect_uri=&scope=email+offline_access+openid+profile&state=&prompt=select_account

然后我登录到我的 Microsoft 帐户,它会将我重定向到我的应用程序。

如何登录以从 PowerShell 获取令牌?我需要它来进行测试自动化。我发现了类似的东西 (https://github.com/shawntabrizi/Microsoft-Authentication-with-PowerShell-and-MSAL/tree/master/Authorization%20Code%20Grant%20Flow),但我不确定它是否适合我的情况。

感谢任何帮助。

编辑:

我不知道如何自动执行此步骤:

【问题讨论】:

    标签: powershell oauth-2.0 azure-active-directory


    【解决方案1】:

    如果您希望您的测试将 API 作为应用程序调用,您可以使用客户端凭据流。

    另一方面,如果您想代表用户调用 API,您可能需要使用资源所有者密码凭证授权流程:https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth-ropc

    请注意,用户通常应该是该 AAD 租户中的本地帐户(没有外部用户/Microsoft 帐户/本地 AD 帐户),没有 MFA。 考虑到这一点并安全地存储用户凭据。 并为此使用测试 AAD 租户,这样凭据就无法访问任何生产环境。

    【讨论】:

    • 嗯,这两种方法在我的情况下有何不同?我想测试 API 端点,我需要一个有效的令牌,不管我如何得到它。或者这对我来说应该重要吗?客户端凭据流 (docs.microsoft.com/en-us/azure/active-directory/develop/…) 比资源所有者密码凭据简单吗?
    • 从 API 的角度来看,这很重要。您是否希望客户端应用程序代表用户调用 API(即访问令牌中有用户信息)?客户端凭据流用于服务到服务场景,其中应用调用具有应用程序权限而不是委派权限的 API。
    【解决方案2】:

    我们可以在 PowerShell 中使用 MSAL 库。

    MSAL.PS 模块的Get-MSALToken 函数提示返回您可以使用的有效令牌。

    示例:- 使用来自应用程序注册(公共客户端)的客户端 ID 强制交互式身份验证以获取特定 Azure AD 租户和 UPN 的 AccessToken(具有 MS Graph 权限 User.Read)和 IdToken。

     PS C:\>Get-MsalToken -ClientId '00000000-0000-0000-0000-000000000000' -TenantId '00000000-0000-0000-0000-000000000000' -Interactive -Scope 'https://graph.microsoft.com/User.Read'
        -LoginHint user@domain.com
    

    【讨论】:

    • 在哪里可以找到不同 OAuth2 流程的 MSAL 示例?
    • 嗨@TomaszKaniewski,刚刚用一个例子更新了我的答案。如果您还需要任何帮助,请告诉我。
    • 好的,但是我可以在哪里输入 user@domain.com 的密码?
    • 当我们运行命令时,它会弹出让登录输入用户名和密码。
    • 我需要它来实现 CD 管道中的自动化测试。我需要在没有任何手动交互的情况下获取授权码,整个过程必须自动化。
    猜你喜欢
    • 2016-01-12
    • 2019-11-03
    • 1970-01-01
    • 2017-04-04
    • 2018-12-18
    • 1970-01-01
    • 2021-04-11
    • 2022-08-22
    • 2017-10-22
    相关资源
    最近更新 更多