7

最近Google App Engineを使い始めました。私はFlaskを使ってWebページとEndpoints APIを提供し、他のものはEndpoints-Proto-Datastoreを使用することを推奨します。Google App Engine:カスタム認証またはオープンIDを使用するときのエンドポイント認証

GAEでのGoogle以外の認証メカニズムは、当初から何らかの作業が必要なように見えます。あなたも、アプリの一部としてオープンIDプロバイダを書くのPython OpenIDのようなものを使用し、できる場合

カスタム認証

:私は、私がこれまでに発見した問題に当てる任意の光をいただければと思います同じワークフローでコンシューマを実装して、通常のログインのように見えるようにします。このようにして、GAE Users APIが提供するものにうまく統合されます。 これがうまくいけば、users.get_current_user()はうまくいくと思います。

独自のOpenIDプロバイダの作成をスキップし、代わりにNDBと統合されたFlask-Loginを使用して電子メール/パスワード認証システムを作成する場合は、それも問題ありません。 users.get_current_user()まだNoneを返ししかし

user = users.User("[email protected]")

、(ここにはuser.put()方法はありません):ただし、GAE documentationにおける情報の一つ不可解なビットはそうのように、私は、ユーザーオブジェクトをインスタンス化することができますと言います。だから、ユーザーオブジェクトを構築することはこれまでどんなものでしたか?

エンドポイントの許可

エンドポイント・プロトデータストアは、API圧延する方法デコレータに必要なユーザーを=含めで、OAuthのはすぐに動作するようです - あなたはAPIの中でそれをテストしながら、しなければならないすべてOAuth 2.0スイッチを有効にし、有効なOauth 2.0スコープを選択することです。つまり、ユーザーAPIと正しく統合されたOpenIDプロバイダを実装すると、Endpoints APIのOAuthマジックを使用するだけでは不十分です。

ここでも、ユーザーオブジェクトを構築することは認証要件を満たすのに役立たないようです。

カスタム認証/別のOpenID実装がエンドポイントAPIの認証/承認とどのように機能しますか?

+0

非常に良い質問です。私は多かれ少なかれ同じことをしたい:ユーザー名/トークンで何らかの "基本的な"認証を実装する。 servletFilterで試してみましたが、servletFiltersは/ _ah/api-URLで動作しません。 – icyerasor

答えて

5

私はoAuthを使いたくはありませんでしたが、ユーザー/トークンを使った簡単な認証方式です。

私が行ったことは、/ _ah/spi/*にマップされたカスタムServletFilterを作成し、そこにHTTPServletRequestからログイン情報を傍受することです(Endpoint-API-Requestの場合)。

これまでのところ動作しているようですが、それがどうなるかわからないのです。しかし、どこでもoAuth-Auth以外の例は見つかっていないので、それは現在私のベストショットです。

@bossylobsterまたは@Dan Holevoetからヒントを得たいと考えています。

関連する問題