【问题标题】:Acquire AAD B2C access token in webtest在 webtest 中获取 AAD B2C 访问令牌
【发布时间】:2019-04-11 03:29:19
【问题描述】:

我有一个受 AAD B2C 访问令牌保护的 REST API。我现在想添加可用于对 API 进行负载测试的 webtest。

我在为我的测试用户从 AAD B2C 获取有效的访问令牌时遇到了困难。我正在考虑以某种方式获取令牌作为对 AAD B2C 的 REST API 调用的响应。

在网上看那个方向,我发现许多页面指向这个相当无证的端点

https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/oauth2/v2.0/token?p={policy}

我需要提供一些参数。到目前为止,我发现了

  • client_id
  • client_secret
  • 范围
  • grant_type

当我现在添加时

  • grant_type=密码
  • 用户名
  • 密码

我认为在发布到该消息时我会从 AAD 获得一个令牌 - 但我宁愿获得一个服务端异常

{
    "error": "server_error",
    "error_description": "AADB2C: An exception has occurred.\r\nCorrelation ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\r\nTimestamp: 2018-11-07 16:27:10Z\r\n"
}

问题

  • 方法是否正确?
  • 有没有更好的方法来获取 webtest 的访问令牌?
  • POST 请求是否存在格式错误?

【问题讨论】:

  • 不要以为你可以嘲笑成为用户。 OAuth 2.0 规范适用于任何涉及授权类型的用户,需要用户交互才能授予访问权限,因为允许随机站点创建 UI 以收集用户名/密码并将其发送到其中,这将是一个安全漏洞。
  • 您需要了解很多关于应用程序的信息,例如客户端 ID 和客户端密码 - 所以仅通过随机 uid/pwd 发送是行不通的。尽管如此 - 我认为 /token 端点几乎就是为了这个目的......或者 - 我将如何以非交互方式获取令牌??
  • OAuth 不假定身份提供者的所有者也是消费者的所有者。因此,有人可以注册一个客户端(获得一个 client_id/client_secret/etc),然后收集身份提供者用户的私人登录信息并将其发送给他们以进行授权。但现在该人还可以记录用户凭据,并在使用该身份提供者的任何站点中冒充他们。
  • docs.microsoft.com/en-us/azure/active-directory/develop/… 是获取 API 到 API 调用等访问令牌的方式。

标签: azure-ad-b2c restful-authentication


【解决方案1】:

您可以通过create a resource owner policy 使用password 授权从token 端点获取访问令牌。

【讨论】:

  • 完美 - 像魅力一样工作。我正在阅读很多 MS 文档页面 - 我没有找到这一页。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-05
  • 2021-06-03
相关资源
最近更新 更多