2016-11-11 4 views
1

私はGoogle Cloud Endpointsを通じてAPIを公開するGoogle App Engineプロジェクトを持っています。これまでは、すべてのAPI /エンドポイントでOAuth2認証(および認証)が使用されていましたが、これは「実際の」ユーザーにとっては問題ありません。Google Cloud EndpointでのAPIキー認証のJava注釈

ここでは、人間の代わりにマシンが使用するいくつかの新しいAPIを公開したいと考えています。これらのエンドポイントにAPIキー認証を使用したいと思います。

クラウドコンソールでAPIキー(APIマネージャー/クレデンシャル)を作成しました。

Google documentationは、yamlファイルを使用してAPIキー認証を設定します。しかし、私はyaml構成を使用せず、Javaアプリケーションでは一般的ではないようです。

Javaの場合、APIキーを使用して認証する注釈があると思います。しかし、Google documentation for Javaにはこのようなことは言及されていません。

アノテーションを使用してJavaアプリケーションでAPIキーを使用することはできますか?これを行う別の推奨方法はありますか?

更新: ベータ版(2016年11月)のCloud Endpoints 2.0では、APIキーが動作しているようです。しかし、CE 2.0はGoogle Eclipseプラグインでサポートされておらず、Mavenが必要です(私は強く嫌いです)。私は自分のプロジェクトを書き直す時間がないので、私はコードにチェックインする私のAPIに追加の 'api_key'パラメータを追加しました。クラウドエンドポイントはこれが独自のAPIキーであると判断し、アクセスが設定されていないと応答するため、このパラメータは 'key'と呼ばれることはできません。

答えて

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とMav​​enでこの例を以下ました:

backend

例は、APIキーの権限を持っていませんが。

私は例に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で定義されているApp Engineプロセスへのデプロイを続けました。MDの例:

1)のgcloudベータサービス管理デプロイswagger.json

2)MVNのAppEngineの:更新

私はこの仕事はあなたの周りを助けることができる願っています!

関連する問題