6

次の認証フローを実装する方法を見つけようとしています。

  1. ユーザーは Web アプリケーション (Ruby on Rails を使用して記述されている可能性が最も高い) にアクセスし、認証 (ユーザー名/パスワードなど) を行います。
  2. クライアントは、Google App Engine (Python、webapp2) 上に構築された RESTful API によって提供される AJAX を介してデータを消費します。

ここに画像の説明を入力

要件:

  1. Web アプリケーション (Rails) で認証されたユーザーのみが、App Engine でホストされている API にアクセスできる必要があります。
  2. ユーザーは Web アプリケーション (Rails) でさまざまな役割を持つことができ、API (App Engine) は、特定のデータへのアクセスを制限するために、特定のユーザーに関連付けられている役割を知る必要があります。
  3. クライアントは、Web アプリケーション (Rails) を介してすべてのリクエストをルーティングすることなく、AJAX を介して API (App Engine) を直接呼び出すことができる必要があります。

このようなワークフローを実装する方法についての提案を探しています。API へのアクセスに OAuth (または OAuth2) を使用する必要がありますか? OAuth プロバイダを App Engine に配置し、Web アプリケーション (Rails) がユーザーに代わって API にトークンを要求する必要がありますか? もしそうなら、Web アプリケーション (Rails) だけが OAuth トークンを要求できるようにする最善の方法は何ですか? それとも、まったく別の戦略を検討する必要がありますか?

どんな提案でも大歓迎です。上記のコンテキストで OAuth を実装するためのライブラリの提案も探しています。

4

2 に答える 2

1

セキュリティ層に OAuth を使用して Google App Engine 上に構築された API を実装することを検討している場合は、注意することをお勧めします。私は現在、この問題を正確に解決するのに苦労しているプロジェクトに携わっています。GAE 上の OAuth レイヤーはまだ新しく、Google では「実験的」であると見なされています。現時点では、Google のドキュメントは最小限です。そこにあるものはここから始まります。続行される場合は、最善を尽くしてお手伝いします。

于 2012-07-28T01:15:34.170 に答える
0

この同じ問題に対する私の解決策は、独自の 3 方向認証 (OAuth など) を作成することでした。

  1. ユーザーが RoR サーバーで認証されると、一時的なトークンで応答します。このトークンは RoR サーバーに保存され、60 秒間有効で、ユーザーの役割が含まれています。
  2. ブラウザーは、このトークンを (AJAX を使用して) webapp2 サーバーに送信します。トークンだけを使用してそのサーバーにログインするようなものです。
  3. webapp2 サーバーはトークンを RoR サーバーに転送して、トークンが有効であることを確認します。
  4. RoR サーバーは、トークンの有効期限が切れていないことを確認し、すぐにトークンを削除してリクエストの重複を防ぎます。トークンが有効な場合、RoR サーバーはユーザーの役割で応答します。
  5. RoR サーバーからの応答が良好な場合、webapp2 サーバーはブラウザーの AJAX 呼び出し (手順 2) に、このユーザーが現在ログインしていることを示す Cookie で応答します。セッションには、ユーザーのロールが含まれている必要があります。
  6. webapp2 サーバーへの後続の要求には Cookie が含まれるため、サーバーはユーザーの役割に従って応答できます。
于 2015-04-30T23:55:30.017 に答える