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时它继续失败?
有什么想法吗?我真的很感激这方面的一些帮助; - )
由于
林顿
答案 0 :(得分:0)
您无法使用OAuth令牌呼叫https://blockchain-cockpit.cfapps.us10.hana.ondemand.com。在我看来,此URL不会公开您要使用的API,并且可能需要其他参数。
我希望你想要使用区块链API,有一种更好的方法。 导航到https://login.cf.us10.hana.ondemand.com/login
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)一样,您必须创建服务密钥/服务绑定才能访问您的服务实例。
Create Service Key
并指定名称您现在可以看到服务实例的访问信息
{ “apiKey”:“”, “serviceUrl”:“https://hyperledger-api.cfapps.us10.hana.ondemand.com” }
您可以通过打开服务网址来测试API:https://hyperledger-api.cfapps.us10.hana.ondemand.com
关于注释中的问题,要在部署的Java应用程序中注入此信息,您必须创建服务绑定并将区块链服务实例链接到您的应用程序。然后,您的服务密钥信息将被注入应用程序的环境变量中。更多信息请访问:SAP Help