【发布时间】:2015-01-16 13:52:10
【问题描述】:
我想使用 curl 从云代工厂获取数据,但我无法进行身份验证(针对 CF 的 oauth)。拜托,有人可以指点我并举例说明如何获得oauth令牌吗?我想使用登录名和密码。
谢谢
【问题讨论】:
我想使用 curl 从云代工厂获取数据,但我无法进行身份验证(针对 CF 的 oauth)。拜托,有人可以指点我并举例说明如何获得oauth令牌吗?我想使用登录名和密码。
谢谢
【问题讨论】:
这并不完全符合您的要求,但如果安装了最近的 cf cli,您可以正常登录,然后使用 cf curl 命令运行原始请求。
例如
$ cf login (or cf auth for non-interactive login)
$ cf curl /v2/spaces/c4e73f65-4dbc-47dc-9d21-e8c566c40587/summary
要使用实际的 curl,再次使用 cf cli,检索不记名令牌:
$ cf oauth-token
然后执行带有授权标头的 curl 命令:
$ curl --header 'Authorization: bearer ...' https://api.example.com/v2/spaces/c4e73f65-4dbc-47dc-9d21-e8c566c40587/summary
【讨论】:
{"code":10002,"description":"Authentication error","error_code":"CF-NotAuthenticated"};我用过你的 curl 例子。
试试这个。我在 Cloud Foundry 文档中找到了它:https://github.com/cloudfoundry/uaa/blob/master/docs/UAA-APIs.rst#oauth2-token-endpoint
curl -v -XPOST -H"Application/json" -u "cf:" --data "username=<username>&password=<password>&client_id=cf&grant_type=password&response_type=token" https://login.run.pivotal.io/oauth/token
【讨论】:
client_id 和 response_type 可以跳过。
如果您已经使用cf 登录,您会发现授权令牌存储在 ~/.cf/config.json 中的“AccessToken”键下。您可以轻松地将其拉出。
如果您需要在不使用cf CLI 的情况下自己获取授权持有者令牌,您可以按照https://www.ng.bluemix.net/docs/#services/AppUserRegistry/index.html#appuserregistry 的说明进行操作。您也可以export CF_TRACE=true,然后自己执行cf login,然后观看 CLI 与服务器进行的 REST 舞蹈以获取授权令牌。
【讨论】:
用户名、密码应为 base 64 编码。 Url 应该是您的 pcf 服务的登录端点。
curl https://login.<url>.com/oauth/token -X POST --user "cf:" -H 'Content-Type: application/x-www-form-urlencoded' -d "username=<user>&password=<password>&client_id=cf&grant_type=password&response_type=token"
【讨论】: