私はPythonでGoogle Cloud Endpoint Frameworkを使用してAPIを作成しました.AndroidクライアントはAPIとの対話権限を持つ唯一のアプリケーションです。クラウドエンドポイント認証のオーディエンス
私は1つは、特定のクライアントIDにアクセス権を与えることができ、認証のためのGoogleでのチュートリアルとガイドを踏襲し、APIを保護するために:彼らは「観客は」のクライアントIDを含めるべきであると言うこのsiteで
WEB_CLIENT_ID = 'myApiClientId.apps.googleusercontent.com'
ANDROID_CLIENT_ID = 'myAndroidClientId.apps.googleusercontent.com'
ANDROID_AUDIENCE = [ANDROID_CLIENT_ID]
ALLOWED_CLIENT_IDS = [WEB_CLIENT_ID, ANDROID_CLIENT_ID, endpoints.API_EXPLORER_CLIENT_ID]
api_collection = endpoints.api(name='myApi',
version='v1',
allowed_client_ids=ALLOWED_CLIENT_IDS,
audiences=ANDROID_AUDIENCE,
auth_level=endpoints.AUTH_LEVEL.REQUIRED
)
をバックエンドAPI
Androidクライアントの場合、このメカニズムは、バックエンドAPIのクライアントIDを指定するaudiences引数です。
しかしthisサイト上で、彼らは「観客」フィールドは、AndroidクライアントIDが含まれている必要があることを教えてくれ:
は、各クライアントのGoogleのクラウドプラットフォームコンソールから生成されたのOAuth 2クライアントIDのリストをALLOWED_CLIENT_IDSを交換してくださいプロジェクト、はANDROID_AUDIENCEをAndroidウェブクライアントIDのリストに置き換えます。ウェブクライアントIDは、.apps.googleusercontent.coを追加したクライアントIDです(例:YOUR-CLIENT-ID.apps.googleusercontent.com)。
不正アクセスのためにAPIを保護する正しい方法は何ですか?私はバックエンド側で "ユーザ"アカウントを必要としません、私はAndroidクライアントがAPIにアクセスできる唯一のクライアントであることを望みます。クライアントIDが指定され、AUTH_LEVELが必須に設定されているにもかかわらず、私のRESTクライアントはAPIにもアクセスできます。