2016-11-11 79 views
1

我有一個Google App Engine項目,通過Google Cloud Endpoints公開API。到目前爲止,所有API /端點都使用OAuth2身份驗證(和授權),這對於「真實」用戶來說很好。Google雲端點API密鑰授權的Java註釋?

現在我想公開一些旨在被機器而不是人類用戶使用的新API。我希望這些端點能夠使用API​​密鑰授權。

在雲控制檯中,我創建了一個API密鑰(API管理器/憑證)。

Google documentation使用yaml文件來配置API密鑰授權。但是,我不使用yaml配置,並且它對於Java應用程序似乎並不常見。

我期望對於Java來說,將會有批註使用API​​密鑰進行授權。但是,用於Java的Google documentation並沒有提到這樣的事情。

是否可以在使用註釋的Java應用程序中使用API​​密鑰?有另一種建議的方式來做到這一點?

更新: 似乎API密鑰在測試版(2016年11月)的Cloud Endpoints 2.0中工作。但是,CE 2.0並不支持Google Eclipse插件,並且需要Maven(我非常不喜歡)。我沒有時間重寫我的項目,所以現在我已經在API中添加了一個額外的'api_key'參數,我在代碼中進行檢查。請注意,此參數不能稱爲「密鑰」,因爲雲端點會認爲這是它自己的API密鑰,並通過說沒有配置訪問來回應。

回答

2

是的,這是可能的。升級到最新的框架,並在@Api,@ApiClass@ApiMethod使用apiKeyRequired字段。我們最近添加了這個,文檔還沒有趕上。道歉!

+0

Google Eclipse插件還沒有(還)似乎有此更新?它看起來像卡住在1.9.34。或者也許我需要先更新Eclipse(仍然使用Mars 2)? – rakensi

+0

只有新框架支持此功能,而App Engine SDK不附帶此功能。您需要com.google.endpoints,endpoints-framework工件。 – saiyr

+0

謝謝,我會試試。 – rakensi

1

昨天我有同樣的問題。

我是按照Java和Maven的這個例子:

backend

然而,例如沒有API密鑰授權。

所以我花了幾個小時解密如何添加API密鑰授權的例子。

由於沒有關於如何在java中添加api-key註釋的文檔,我所做的是在swagger.json中手動添加註釋。

我編輯swagger.json文件並加入:

1)的安全性變量

"Security": [ 
    { 
    "Api_key": [] 
    } 
    ], 
"You consume": [ 
    "Application/json" 
], 

2)在securityDefinitions

"SecurityDefinitions": { 

"Api_key": { 
    "Type": "apiKey", 
    "Name": "key", 
    "In": "query" 
}, 
    "Google_id_token": { 

可變API_KEY這解決了這個問題。

之後,我繼續部署到自述文件中定義的App Engine進程。MD例如:

1)gcloud測試服務管理部署swagger.json

2)MVN AppEngine上:更新

我希望這個解決辦法可以幫助你!