【问题标题】:how to pass client credentials in postman?如何在邮递员中传递客户凭据?
【发布时间】:2015-11-23 10:56:55
【问题描述】:

这个卷发很好用

curl acme:acmesecret@localhost:9999/uaa/oauth/token  -d "password=password&username=user&grant_type=password" -H "Accept: application/json"

在此 curl 中,acmeacmesecret 是客户端凭据,应用程序使用该凭据向运行在 localhost:9999 中的授权服务器进行身份验证

我正在尝试使用邮递员(chrome 的休息客户端)发出相同的请求。

这是屏幕截图(我在基本身份验证选项卡中输入了凭据)

这是发出的请求的预览:(注意:添加了授权基本标头)

我收到错误为“invalid_client”。如何解决这个问题?

谢谢

【问题讨论】:

  • 在您的 curl 请求中,您在表单数据中有 user's 凭据(这是正确的),但在 Postman 请求中,您正在放置客户端的凭据。您是否不小心切换了凭据?客户端凭据应放在 auth 标头中,而用户凭据应放在表单数据中
  • 否则,用户凭据应作为基本摘要标头。您可以在上面的预览图像中看到。客户端 ID 和密码以acme:acmesecret@localhost:... 发送。我想知道如何在邮递员中发送这个。
  • 如果 acme 是 client_id 并且 acmesecret 是 client_secret,并且您正在发出 oauth 2.0 密码授予请求,则 client_id:client_credentials 进入 auth 标头。您的 curl 请求在 auth 标头中发送它们。添加-i 开关以查看标题。然后在 Postman 中进行更改,您应该会在 auth 标头中看到相同的 base64。
  • -d 是表单数据。在 oauth 2.0 密码授予请求中,用户凭据应该进入表单数据,如 curl 请求所示
  • 谢谢。这有帮助。我按照您的建议进行了操作,现在可以使用了。

标签: curl rest-client postman


【解决方案1】:

我发现 Postman 文档中的这条信息很有帮助,以防其他人需要更多说明。

邮递员 > 发送 API 请求 > 授权

https://learning.getpostman.com/docs/postman/sending_api_requests/authorization/

【讨论】:

    【解决方案2】:

    卷曲

    acme:acmesecret@localhost:9999/uaa/oauth/token
    

    acme:acmesecret 是在基本身份验证标头中发送的 HTTP 客户端凭据。您可以添加-v 开关以查看请求中的标头。

    -d "password=password&username=user&grant_type=password"
    

    这是表单数据。

    在 Postman 请求中,您已将其切换。您在表单数据中有客户端凭据,我猜您在 auth 标头中有用户凭据。

    只需切换它们。对于 OAuth 2.0 密码授予请求,客户端凭据应位于 auth 标头中,而用户凭据应位于表单数据中。

    【讨论】:

    • 通过添加-i,我没有看到授权标头。我只看到这个HTTP/1.1 200 OK Server: Apache-Coyote/1.1 X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Cache-Control: no-store Pragma: no-cache Content-Type: application/json;charset=UTF-8 Transfer-Encoding: chunked Date: Fri, 28 Aug 2015 18:06:24 GMT
    • 是的,我想它不会那样工作。我一定是弄错了。不过,它仍然是 HTTP 凭据的一部分。这是在规范中。无论如何都不鼓励将凭据放在 URL 中。而使用 curl 您使用 -u username:password 它将进入标题。如果您想更安全并且不将密码存储在shell历史记录中,只需使用-u username,它会提示输入密码
    • 哦,这就是响应。检查请求标头。也许它在里面。我不知道。您看到请求标头还是仅看到响应标头?如果只是请求,请使用-v(详细)开关。请求以> 开头,而响应以< 开头。或者也许反过来:-)懒得检查
    • 所以当您将凭据放入 url 时,标题 is 就在那里?
    • @peeskillet 。我正在尝试通过带有基本身份验证的 Postman "POST https:///TestDataManager/user/login" 使用 API url 执行基本登录操作。我可以登录访问门户,但不能通过 API 调用。我是否需要具有通过 API 与服务器/应用程序通信的特殊权限?我现在得到的响应是 401 错误。
    猜你喜欢
    • 2020-06-09
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 2019-11-11
    • 2020-07-30
    • 1970-01-01
    • 2019-03-26
    • 2020-05-23
    相关资源
    最近更新 更多