5

次のようなサービス アカウントを使用して、コマンドラインから Google クラウド エンドポイントにアクセスしようとしています。

https://code.google.com/p/google-api-python-client/source/browse/samples/service_account/tasks.py

例の指示に従って、clientid + pk12 証明書を作成し、それらを使用して oauth2client.client モジュールからの SignedJwtAsertionCredential 呼び出しで資格情報を作成しました。

ローカル devserver で実行されているクラウド エンドポイントを呼び出すと期待どおりに動作しますが、デプロイされた gae クラウド エンドポイントを呼び出すと、

Oauth フレームワーク ユーザーが oauth トークン ユーザーと一致しませんでした。

user_id_token._set_bearer_user_vars() からの oauth.get_client_id(scope) 呼び出しで失敗しているようです。

例外にトレースバックを追加したところ、_maybe_raise_exception から来ているようです

E 2014-01-02 10:30:53.926 発生 NotAllowedError (error_detail) E 2014-01-02 10:30:53.926 NotAllowedError

アプリの認証タイプを変更せずにこのエラーを解決する方法はありますか? ドメインの制限によりリクエストが許可されていないようですか?

私の目標は、ユーザーを関与させずにクラウドエンドポイントを呼び出すことです.SignedJwtAsertionCredential呼び出しを使用して正しいパスであるかどうか、または可能であれば?

追加情報。

エンドポイントの認証タイプが「Google App Domain」に設定されている

エンドポイント メソッドで user_required が True である

SignedJwtAssertCredential から生成されたアクセス トークンは、 https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=ya29を使用すると期待どおりです。

エンドポイントは、API エクスプローラーから期待どおりに機能し、認証フローが関係している場合に機能します。

endpoints_proto_datastore ライブラリの使用。

4

2 に答える 2

10

広範な調査の結果、OAuth の実装はアプリケーションにとって実行可能な認証方法ではないという結論に達しました。これは、実装が恐ろしいという単純な事実からです。Stackoverflow で単純な Twitter oAuth 実装のデバッグと質問に数え切れないほどの時間を費やした後、数え切れないほどの間違った回答を受け取りました (これにより、開発者の大部分が OAuth の使用方法を知らないことが安全に推測できます)。オース。

フランスの偉大な皇帝ナポレオン・ボナパルトの言葉を残します

「ウナ・レティラダ・ア・ティエンポ・エス・ウナ・ヴィクトリア」 - ナポレオン・ボナパルト

これは基本的に、先を行っている間は外に出て、OAUTH で時間を無駄にしないことを意味します。

追加情報

OAUTH でフラストレーションを感じていたときに、この頭痛を誘発するコンセプトを実際に思いついたのは誰なのかを調査したところ、作成者はこのプロジェクトをやめて、実際に彼のブログで OAUTH を公に非難したことがわかりました。

http://hueniverse.com/2012/07/oauth-2-0-and-the-road-to-hell/興味深いことに、道を地獄と名付けました。したがって、作成者が OAUTH を使用していない場合は、絶対に使用しないでください。私はhttps://petitions.whitehouse.gov/で OAUTH の使用を違法にするための請願を開始しました。よろしければ、この戦いに参加して投票してください。現在、支持が高まっています。投票してください。

ここに画像の説明を入力

于 2014-01-02T17:56:42.703 に答える