【问题标题】:Getting access token in azure with azure account username and password使用 azure 帐户用户名和密码在 azure 中获取访问令牌
【发布时间】:2017-06-27 07:55:54
【问题描述】:

我正在尝试收集 azure 资源的指标信息。为此,我需要一个访问令牌来授权。但是要获得访问令牌,我必须提供客户端 ID、客户端密码、订阅 ID、租户 ID。我想知道我是否可以在不提供除我的 Azure 帐户的用户名和密码之外的太多详细信息的情况下获得此访问令牌。

【问题讨论】:

    标签: azure azure-active-directory


    【解决方案1】:

    基本上你需要参数。 Azure 的 API 受 Azure AD 保护,因此您必须先对其进行身份验证。如果您想以用户身份进行呼叫,您仍然需要使用少数可用方法之一进行身份验证。密码授予(如@4c74356b41 答案所示)是一种选择,但实际上并不推荐。原因是如果用户密码已过期或启用了 MFA,则无法使用。

    您通常做的是请求用户通过 Azure AD 登录页面(通过重定向或 Web 视图)登录,然后将生成的授权代码交换为访问令牌和刷新令牌。然后,您可以作为用户调用 API。

    另一种选择是在 Azure AD 中注册您的应用并授予其服务主体在您的 Azure 订阅/资源组/资源中的一些角色。然后它可以使用客户端凭据进行身份验证(仅使用其客户端 ID 和机密 + 您的 Azure AD 租户 ID)。

    【讨论】:

      【解决方案2】:

      这是可能的,但它被认为是不安全的。而且你仍然需要很多参数:

      Name    Description
      grant_type  The OAuth 2 grant type: password
      resource    The app to consume the token, such as Microsoft Graph, Azure AD Graph or your own Restful service
      client_id   The Client Id of a registered application in Azure AD
      username    The user account in Azure AD
      password    The password of the user account
      scope   optional, such as openid to get Id Token
      

      参考:
      https://blogs.msdn.microsoft.com/wushuai/2016/09/25/resource-owner-password-credentials-grant-in-azure-ad-oauth/

      ps。别介意沃尔特,他的答案有 50% 的时候是错误的。

      【讨论】:

        【解决方案3】:

        这真的取决于您的需要,以及您是否想要完全自动化。

        如果您想获得 ServicePrincipal 的令牌,4c74356b41 的答案是一个很好的方法。

        但是,如果您想为已在 PowerShell 会话中通过身份验证的用户(您或其他 AAD 用户)获取不记名令牌,如果您使用我编写的这段代码,您可以非常轻松地做到这一点。

        https://gallery.technet.microsoft.com/scriptcenter/Easily-obtain-AccessToken-3ba6e593

        基本上它的作用是从令牌缓存中获取当前令牌并将其返回给您。这样您就不必处理 clientId、cliendSecret 或证书。当我需要以即时方式调用 Azure REST API 时,我一直使用它。

        【讨论】:

        • 是否有一种简单的方法可以在不使用 login-azurermaccount 的情况下仅使用 AAD 凭据向 Azure 进行身份验证?
        猜你喜欢
        • 1970-01-01
        • 2020-06-16
        • 2019-03-21
        • 2020-09-15
        • 2023-04-05
        • 2021-11-12
        • 1970-01-01
        • 2013-02-18
        • 1970-01-01
        相关资源
        最近更新 更多