【问题标题】:Get Access Token from Azure Active Directory using username and password使用用户名和密码从 Azure Active Directory 获取访问令牌
【发布时间】:2020-12-21 15:45:54
【问题描述】:

我正在尝试使用 Azure Active Directory 创建 POF,因为我计划稍后在生产应用程序中使用它。

在 Microsoft 文档中,我发现登录的唯一方法是重定向到 microsoft 页面以提供用户名和密码。

是否有一些 API 可以用来获取提供用户名和密码的访问令牌?我可以测试它,例如,使用邮递员。

【问题讨论】:

标签: azure-active-directory


【解决方案1】:

您可以使用Resource Owner Password Credentials(ROPC) flow 获取访问令牌。请先查看重要提示,以确保您可以在应用程序中使用它。

  • Microsoft 标识平台终结点仅支持 Azure AD 租户的 ROPC,不支持个人帐户。这意味着您必须使用 特定于租户的端点 (https://login.microsoftonline.com/{TenantId_or_Name}) 或 组织端点。
  • 受邀加入 Azure AD 租户的个人帐户无法使用 ROPC。
  • 没有密码的帐户无法通过 ROPC 登录。对于这种情况,我们建议您为您的应用使用不同的流程 而是。
  • 如果用户需要使用多重身份验证 (MFA) 来登录应用程序,他们将被阻止。
  • 混合身份联合方案(例如,用于对本地帐户进行身份验证的 Azure AD 和 ADFS)不支持 ROPC。 如果用户被整页重定向到本地身份 提供商,Azure AD 无法测试用户名和密码 针对该身份提供者。直通身份验证是 但是,ROPC 支持。

尝试执行此请求以获取访问令牌。

POST https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token

client_id=<your-app-id>
&scope=<scopes-in-api-permissions>
&username=<username>
&password=<password>
&grant_type=password

【讨论】:

    【解决方案2】:

    当您希望通过发送用户名和密码来获取访问令牌时

    你可以使用邮递员或卷曲操作

    POST {tenant}/oauth2/v2.0/token
    Host: login.microsoftonline.com
    Content-Type: application/x-www-form-urlencoded
    
    client_id=6731de76-14a6-49ae-97bc-6eba6914391e
    &scope=user.read%20openid%20profile%20offline_access
    &username=MyUsername@myTenant.com
    &password=SuperS3cret
    &grant_type=password
    

    curl -X POST -d "client_id=clientid&scope=user.read&grant_type=password&username=username&password=Password" https://login.microsoftonline.com/tenantid/oauth2/v2.0/token 
    

    注意:Microsoft 建议您不要使用 ROPC 流程。多数情况 在各种情况下,可以使用并推荐更安全的替代方案。 此流程需要对应用程序高度信任,并且 承担其他流程中不存在的风险。你应该只 在无法使用其他更安全的流程时使用此流程。

    【讨论】:

      猜你喜欢
      • 2018-02-17
      • 1970-01-01
      • 1970-01-01
      • 2020-06-16
      • 2018-03-24
      • 2020-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多