[Python] webapp2セッションを使用したGoogle Cloud Endpoints認証


Answers

Question

Google Cloud Endpoints APIのクライアントは、エンドポイントAPI自体と同じGoogle App EngineアプリケーションでホストされるJavaScript(AngularJS)Webアプリケーションです。 ユーザーはwebapp2セッション (データストア)を使用して認証します。 必ずしもGoogleアカウントを持っているとは限りません。 私は、 /api/users/meようなEndpoints APIに対して、現在ログインしているユーザーのユーザーデータを返す要求を出すことができるようにしたいと考えています。

最初に私はApp Engineアプリケーション用のOAuth2プロバイダを実装し、AngularJSアプリケーションが自分のApp Engine OAuthプロバイダ(OAuthプロバイダではなく、GoogleのOAuthプロバイダ)からOAuth2アクセストークンを要求するようにしました。 )。

しかし、 このコメントは、独自のOAuth2プロバイダを実装するのではなく、エンドポイントAPIに対するリクエスト(メッセージフィールドまたはHTTPヘッダー内)で任意のパラメータを提供することを示唆しています。 私はそのパラメータは、ユーザートークン(いくつかの暗号化された値は、ログインユーザーに固有のものでなければならないと思います)。 その値はブラウザに渡されます。 それは安全ではないですか? 可能であれば(コストを節約するために)私のAngularJSアプリケーションをHTTPSで提供しないことをお勧めします。

これはOAuth2の良いユースケースですか? または、OAuth2は、サードパーティのアプリケーションにユーザデータへのアクセスを許可する場合にのみ使用できますか?

OAuth2は、ユーザートークンをブラウザに安全に渡し、man-in-the-middle攻撃を防ぐ方法です。 特定の時間が経過した後にユーザートークンが期限切れになる必要がありますか?