最近、Google App Engine を使い始めました。Flask を使用して Web ページとエンドポイント API を提供するつもりです。
最初から、GAE の Google 以外の認証メカニズムは、何らかの作業が必要なように見えます。これまでに見つけた問題に光を当てていただければ幸いです。
カスタム認証
アプリの一部として Open ID プロバイダーを記述できる場合は、Python-OpenID などを使用し、同じワークフローでコンシューマーも実装して、通常のログインのように見せます。このようにして、GAE ユーザー API が提供するものにうまく統合されます。これが正しく行われていれば、 users.get_current_user() は問題なく動作すると思います。
独自の OpenID プロバイダーの作成をスキップして、代わりに NDB と統合された Flask-Login を使用して電子メール/パスワード認証システムを作成する場合も、問題ありません。ただし、GAE ドキュメントの不可解な情報には、次のようにユーザー オブジェクトをインスタンス化できると書かれています。
user = users.User("XYZ@XYZ.com")
ただし、(user.put()
ここにはメソッドはありません) a はusers.get_current_user()
依然として None を返します。では、ユーザー オブジェクトを構築することの用途は何でしょうか?
エンドポイントの承認
Endpoint-Proto-Datastore ロール API のメソッド デコレーターに user=required を含めると、OAuth はすぐに機能するようです。API エクスプローラーでテスト中に行う必要があるのは、OAuth 2.0 スイッチをオンにして、有効な Oauth 2.0 スコープ。つまり、Users API と正しく統合された OpenID プロバイダーを実装した場合、Endpoints API の OAuth マジックを使用するだけでは十分ではないということですか?
ここでも、ユーザー オブジェクトを構築しても認証要件を満たすのに役立たないようです。
カスタム認証/別の OpenID 実装は、エンドポイント API 認証/承認でどのように機能しますか?