如何使用curl练习安全的应用程序引擎托管的REST API?

时间:2017-05-30 23:03:50

标签: google-app-engine authentication curl

我们假设在https://xyz.appspot.com托管了一个app引擎标准python应用,其网址受以下内容保护:

login: admin
secure: always

如何使用curl运行API?我想真正的问题是如何使用curl对应用程序进行身份验证。如果该应用程序是从浏览器中使用的,那么会将其重定向到Google登录名,但我想知道如何从卷曲中模拟相同的内容。

非常感谢任何帮助。

谢谢, Raghu

3 个答案:

答案 0 :(得分:1)

一种方法是首先在浏览器中进行身份验证,然后将cookie从那里复制到curl。例如,在Chrome中,您可以打开devtools(F12)并选择“网络”标签。

当您访问安全资源时,它将显示在那里。然后你可以right click -> Copy -> Copy as cURL (bash)

这将为您提供一个有权调用您的安全资源的cURL命令。

答案 1 :(得分:0)

根据@Erfa的建议,我在Chrome中访问了该网站,同时保持开放工具的开放性。

浏览器将指导您完成登录过程并显示该站点。此时,右键单击" Network"中的GET请求。选项卡并选择"另存为内容和#34;它将API信息保存在文本文件中。

在文件中,您将找到与GET请求一起发送的cookie。您现在可以使用与curl相同的cookie,如下所示:

$ curl --cookie "NAME=VALUE" <URL>

答案 2 :(得分:0)

您可以结合使用Cloud Endpoints和API Key。 在Google Cloud Platform的这篇文章https://cloud.google.com/endpoints/docs/frameworks/python/restricting-api-access-with-api-keys-frameworks中,您有一个如何使用此组合进行卷曲身份验证的示例:

  

如果API或API方法需要API密钥,请使用a提供密钥   查询参数named key,如此cURL示例所示:

curl \
    -H "Content-Type: application/json" \
    -X POST \
    -d '{"message": "echo"}' \
    "${HOST}/_ah/api/echo/v1/echo_api_key?key=${API_KEY} 
     

其中HOST和API_KEY是包含API主机名和API密钥的变量,   分别。将echo替换为API的名称,将v1替换为   您的API版本。