我有一个通过Google Cloud Endpoint公开API的Google App Engine项目。到目前为止,所有的API/端点都使用OAuth2身份验证(和授权),这对于“真正的”用户来说是很好的。
现在我想公开一些新的API,它们是供机器而不是人类用户使用的。我希望这些端点使用API-key授权。
在云控制台中,我创建了一个API密钥(API管理器/凭证)。
Google documentation使用一个yaml文件来配置API-key授权。但是,我不使用yaml配置,而且它在Java应用程序中似乎并不常见。
我希望对于Java,会有使用API-keys进行授权的注释。然而,用于Java的谷歌documentation并没有提到任何类似的东西。
可以在使用注释的Java应用程序中使用API-keys吗?有没有其他推荐的方法呢?
更新:似乎API密钥在云端点2.0中有效,该版本正在测试中(2016年11月)。但是,Google Eclipse插件不支持CE2.0,并且需要Maven (我非常不喜欢Maven)。我没有时间重写我的项目,所以现在我已经在我的API中添加了一个额外的'api_key‘参数,我在代码中检查它。请注意,此参数不能称为“key”,因为Cloud Endpoint会认为这是它自己的API密钥,并以未配置访问权限作为响应。
发布于 2016-11-12 07:26:57
是的,这是可能的。升级到最新的框架,在@Api、@ApiClass或@ApiMethod中使用apiKeyRequired字段。我们最近添加了这个,但文档还没有跟上。很抱歉!
发布于 2016-11-14 02:31:44
昨天我也遇到了同样的问题。
我在Java和Maven中遵循了这个例子:
但是,该示例没有api-key授权。
因此,我花了几个小时解密如何将api-key授权添加到示例中。
由于没有关于如何在java中添加api-key注释的文档,我所做的就是在swagger.json中手动添加注释。
我编辑了swagger.json文件并添加了:
1)安全变量
"Security": [
{
"Api_key": []
}
],
"You consume": [
"Application / json"
],2) securityDefinitions中的变量api_key
"SecurityDefinitions": {
"Api_key": {
"Type": "apiKey",
"Name": "key",
"In": "query"
},
"Google_id_token": {这就解决了问题。
之后,我继续执行README.md示例中定义的deploy to App Engine流程:
1) gcloud测试版服务-管理部署swagger.json
2) mvn appengine:更新
希望这篇文章能对你有所帮助!
https://stackoverflow.com/questions/40549679
复制相似问题