检索到Cloud Foundry OAuth令牌,但在POST到REST API

时间:2018-01-13 19:51:31

标签: oauth cloudfoundry restful-authentication

SAP云平台使用Cloud Foundry来容纳其中一些'服务,如HyperLedger等。

如果我手动执行以下操作:

我使用https://login.cf.us10.hana.ondemand.com/login

上的有效用户名/密码登录云代工厂实例

然后将我重定向到另一个主机" blockchain-cockpit.cfapps.us10.hana.ondemand.com"我可以通过" cockpit"成功调用RESTful API。在网页上提供。

我的目标是能够在" blockchain-cockpit.cfapps.us10.hana.ondemand.com"上调用RESTful服务。使用OAuth令牌。

所以我使用以下命令转到命令行获取OAuth令牌:

curl -v -XPOST -H "Application/json" -u "cf:" --data "username=<username>&password=<password>&client_id=cf&grant_type=password&response_type=token" https://login.cf.us10.hana.ondemand.com/oauth/token

然后,我很高兴地将我的回复视为有效的&#34;令牌。

例如:

  

{&#34;&的access_token#34;:&#34; eyJhbGciOiJSUzI1NiIsImtpZCI6ImtleS0xIiwidHlwIjoiSldUIn0.eyJqdGkiOiJmZTY1NjYyOTM3YTk0Nzc0YTUyYmM5MzRiYzU5MjRjOCIsInN1YiI6ImMxYzcyZTcyLWI3OGUtNDAyYy1iZTBjLWQ3MDUyNzYzZmZmYiIsInNjb3BlIjpbIm9wZW5pZCIsInVhYS51c2VyIiwiY2xvdWRfY29udHJvbGxlci5yZWFkIiwicGFzc3dvcmQud3JpdGUiLCJjbG91ZF9jb250cm9sbGVyLndyaXRlIl0sImNsaWVudF9pZCI6ImNmIiwiY2lkIjoiY2YiLCJhenAiOiJjZiIsImdyYW50X3R5cGUiOiJwYXNzd29yZCIsInVzZXJfaWQiOiJjMWM3MmU3Mi1iNzhlLTQwMmMtYmUwYy1kNzA1Mjc2M2ZmZmIiLCJvcmlnaW4iOiJsZGFwIiwidXNlcl9uYW1lIjoia2V2aW5AZXJwZ2VuaWUuY29tIiwiZW1haWwiOiJrZXZpbkBlcnBnZW5pZS5jb20iLCJhdXRoX3RpbWUiOjE1MTU4NzE4NTgsInJldl9zaWciOiI2YzIwMjc2YyIsImlhdCI6MTUxNTg3MTg1OCwiZXhwIjoxNTE1ODcyNDU4LCJpc3MiOiJodHRwczovL3VhYS5jZi51czEwLmhhbmEub25kZW1hbmQuY29tL29hdXRoL3Rva2VuIiwiemlkIjoidWFhIiwiYXVkIjpbImNsb3VkX2NvbnRyb2xsZXIiLCJwYXNzd29yZCIsImNmIiwidWFhIiwib3BlbmlkIl19.WgYaTeDqGcJfOpidmTLi06tJnDTC8eGigyWAaEsfDkRmOEWWJhK48dJVjZ43yCh_aECgKq__SUq7kLc48_yWRQ7fjDQSLPXRoZu-4X1YvVB-Xi68PnYAOTtnJFN_F7e6E43mLLNA5_5 CdXJ8n88__sJXEoDknrI2R8inmolwIm8AtlvZlh_kuFtF5zt6_RudWkheP8GH8cDBXEEolj0jZtONrJ7bs88E_M07Rgo-fXSdOa6bPMGBCiGPWHqSfLsXGgSaFgeNkBu9_MygAcjx3v3QsQissHfORgzixTCVxT0fyWvoLyc-AWM-NrUzSZNq1hl33l99-QDFWq8sTplSh1Gz1G9y9eJEcH3KI_ycR7FRPmJ4l7eIEjXJm-0r05wqKKwnu8rdkX5hrv55-7qqaM_K32Pug6Sb_lBKfuccz_X7bHWtV7IbybiX_-JU2-CljDAZb6DNl9iTkHhSSKcIODpbItM5BD_AiOuCO8RviuD-P142sjwOD-1dQ9YhsvzQ66UZMjt05FNT7_SaYaxU_i5F6IBXFBmY-zFioIMdJyehGatgaxylqvjS_C_xv0Q7cLW_vsJvlv14AWnBhjD_-KO6oUoGN-llxRK8bo-a56ssfz2eBgNJjjroNw1nAqWU4cFmsOgD3Jni3wIpjBSGzh-ogdx63LCK60DVBu5y1NE&#34;&#34; token_type&#34;:&#34;承载&# 34;,&#34; refresh_token&#34;:&#34; eyJhbGciOiJSUzI1NiIsImtpZCI6ImtleS0xIiwidHlwIjoiSldUIn0.eyJqdGkiOiIzZmIxOWQ5NWU3ODY0ZWZhOTE2NTM4NzE3ZjM1YzAxMi1yIiwic3ViIjoiYzFjNzJlNzItYjc4ZS00MDJjLWJlMGMtZDcwNTI3NjNmZmZiIiwic2NvcGUiOlsib3BlbmlkIiwidWFhLnVzZXIiLCJjbG91ZF9jb250cm9sbGVyLnJlYWQiLCJwYXNzd29yZC53cml0ZSIsImNsb3VkX2NvbnRyb2xsZXIud3JpdGUiXSwiaWF0IjoxNTE1ODcxODU4LCJleHAiOjE1MTg0NjM4NTgsImNpZCI6ImNmIiwiY2xpZW50X2lkIjoiY2Y iLCJpc3MiOiJodHRwczovL3VhYS5jZi51czEwLmhhbmEub25kZW1hbmQuY29tL29hdXRoL3Rva2VuIiwiemlkIjoidWFhIiwiZ3JhbnRfdHlwZSI6InBhc3N3b3JkIiwidXNlcl9uYW1lIjoia2V2aW5AZXJwZ2VuaWUuY29tIiwib3JpZ2luIjoibGRhcCIsInVzZXJfaWQiOiJjMWM3MmU3Mi1iNzhlLTQwMmMtYmUwYy1kNzA1Mjc2M2ZmZmIiLCJyZXZfc2lnIjoiNmMyMDI3NmMiLCJhdWQiOlsiY2xvdWRfY29udHJvbGxlciIsInBhc3N3b3JkIiwiY2YiLCJ1YWEiLCJvcGVuaWQiXX0.SsG45uw8qhSU1ulJ54QZdX8bNnykgGXUwzklBme4sjpNjLd2BuJbW0PHBY7_bHbNiPXplqVGSHsIixaUu-QYqFzs2ebjaGRfBeb9ElwPymI7PRak2gGbw6W1lwHLRpYtIQDp5Ezl9Exj9H_4YW8x7WV4Ca2zRhA8BxayKN7yqSdObR7FVNH0o6-8ZtYcpsHVNKu8KCWCkZ4kEBj4jAHrPmH7FV1AQMSTBK8P-iTWmDbWvsaa0RKxkfveCie_ESgAFt-Y8ZO3mu3zqNCxD238fQc3GJvpE2TPbaAAaSCcTRLBVWLFCiV-2VpmY7Fmv4R80RnzMkV1vOrkNutHNc4NYi3   dYf7JNRJ60Nox1jQRqoMuAS_VSGTiHAnLoOPVf7s0Y09wKuIeVwfB2UHFhs7UtKM7egJGKeZFAOcHAZNL8qbyqkRi0bkOOEMD0mqvEvMHEeS1o5KmYQ7zrxyNgQJgwJ98zMgOzHmC3NQ8o_sNZKTurxNqaPFsbmoB2tCoI9AkfaVdeDOd8tiY6XBAu5h76O7pag9RV4ch_nmViAPYwpD_ZxvwhB_3X0oqSKKNKzZaLW9ONip7yBmMhCub48D_zT26bOKUIYenO1LAV5aHjufsut7YxWBadrPSpGF-Oz6VYYeDqCerf7F8-RDA-RZYGUQBK-weTLJAfbQPn6CgTO4&#34;&#34; expires_in&#34;:599,&#34;范围&#34;:&#34;的OpenID   uaa.user cloud_controller.read password.write   cloud_controller.write&#34;&#34; JTI&#34;:&#34; fe65662937a94774a52bc934bc5924c8&#34;} *   连接#0主机login.cf.us10.hana.ondemand.com完好无损

假设我现在有一个有效的令牌,然后使用POSTMAN尝试POST并设置HTTP头:

授权:来自#

的承载#token

如前所述我正在发布&#34; blockchain-cockpit.cfapps.us10.hana.ondemand.com&#34;而不是我收到令牌的主持人,因此不确定这是否是一个主要问题。

PostMan一直给我这个错误

  

{       &#34;错误&#34;:&#34;未授权&#34; }

然后使用以下命令使用CURL尝试相同的操作:

curl -H "Authorization: Bearer <token>" -X POST https://blockchain-cockpit.cfapps.us10.hana.ondemand.com/<remaining rest api> --data "test data"

我得到完全相同的问题:

{&#34;错误&#34;:&#34;未经授权&#34;}

所以我的问题在于,如果我手动登录并与网站上的api进行交互,那么它可以完美地运行,但是当我显然获得有效的令牌并尝试发布到宁静的api时它继续失败?

有什么想法吗?我真的很感激这方面的一些帮助; - )

由于

林顿

2 个答案:

答案 0 :(得分:0)

您无法使用OAuth令牌呼叫https://blockchain-cockpit.cfapps.us10.hana.ondemand.com。在我看来,此URL不会公开您要使用的API,并且可能需要其他参数。

我希望你想要使用区块链API,有一种更好的方法。 导航到https://login.cf.us10.hana.ondemand.com/login

  1. 打开您创建的Blockchain服务实例。
  2. 使用有效名称创建服务密钥。
  3. 创建服务密钥后,您将看到生成的json包含apiKey和URL。现在,您可以使用此URL并调用区块链。
  4. e.g。在区块链中发布交易:

    curl -X POST --header 'Content-Type: application/json;charset=UTF-8' --header 'Accept: application/json' --header 'apiKey: <apiKey_which_you_receive_after_servicekey_creation>' -d '{ 
      "chaincodeId": "your_chaincode_id",
      "fcn": "your_func_name",
      "args": []
    }
    ' '<URL_from_service_key_creation>/invoke'
    

    并且,如果要从区块链查询事务,请将invoke替换为查询。

答案 1 :(得分:0)

您不会通过区块链驾驶舱API调用您的链码。

与SAP Cloud Platform上的所有其他服务(例如MongoDB)一样,您必须创建服务密钥/服务绑定才能访问您的服务实例。

  1. 登录SAP Cloud Platform(account.hana.ondemand.com
  2. 导航到您创建区块链服务实例的空间,然后打开“服务实例”页面。
  3. 点击名称
  4. 打开您的区块链服务实例
  5. 点击左侧导航栏中的服务密钥
  6. 点击Create Service Key并指定名称
  7. 您现在可以看到服务实例的访问信息

    {     “apiKey”:“”,     “serviceUrl”:“https://hyperledger-api.cfapps.us10.hana.ondemand.com” }

  8. 您可以通过打开服务网址来测试API:https://hyperledger-api.cfapps.us10.hana.ondemand.com

    关于注释中的问题,要在部署的Java应用程序中注入此信息,您必须创建服务绑定并将区块链服务实例链接到您的应用程序。然后,您的服务密钥信息将被注入应用程序的环境变量中。更多信息请访问:SAP Help