使用用户名和密码从 Azure Active Directory 获取访问令牌

时间:2020-12-21 15:45:54

标签: azure-active-directory

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

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

你可以通过邮递员或 curl 操作

LIBC = cdll.LoadLibrary(find_library("c"))

enter image description here

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
<块引用>

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