2012-03-29 14 views
1

私はDrupal 7コンテンツ管理システムを使用するWebアプリケーションを作成しています。 WebページはJQueryとAJAXを大量に使用しています。Drupalを使用してJava RESTサービスを保護するにはどうすればよいですか?

AJAXは実際にJAVAを使用して実装されたRESTサービスを呼び出します。 ApacheはDrupal 7を実行しており、REST URLへの呼び出しをJava EEサーバー(Jboss AS7)に渡すように構成されています。すべてがSSL経由です。

RESTサービスへの呼び出しを認証して認証し、JavaアプリケーションからDrupalに現在ログインしているユーザーのユーザー名またはIDにアクセスする必要があります。問題は...どういうわけか...

AJAX呼び出しは(別のサーバーなどではなく)同じApacheサーバーに行われるため、すべて同じhttpセッション内で行われるため、これが可能です非常に簡単です。私は思った-できた

もの:

  • 設定カスタムを呼び出すJavaのセキュリティインターセプター(ローカル のみアクセス)何とかセッションIDを読み取り、 リターンがログインしているユーザ名
  • drupalのサービス
  • Javaバックエンドサービスにパススルー前にユーザー名を許可/認証して、すべてのREST呼び出しのゲートウェイとして機能する「ダム」ドリューアップRESTサービスを作成します。
  • https://lists.wisc.edu/read/messages?id=7777296#7777296の記事は私は離れて知恵を得ることができるDrupalのsessionIDを受け取り、現在のユーザーとその役割を返すDrupalサービス(各Javaサービスセッションの開始時)を呼び出します。私はJavaサービスでそれを設定して、x秒ごとにこの呼び出しを再実行したり、yの呼び出しで役割の変更やログアウトをチェックしたりすることができました。

どのように他の人はそれをしますか?これは解決する共通の問題でなければならないのですか?そうでない場合は、AJAX経由で認証されたサービスに安全にアクセスするために代わりに何をしますか?私はむしろ避けられない限り、Drupalに加えて第2のユーザ制御プロセスを導入したくない。 DRY :)

ありがとうございます - これは私を困惑させる!

答えて

1

あなたがしていることを見て、できるだけシンプルなものを保つために、私は最初の選択肢のバリエーションに行きます。これは基本的に現在のnode.jsモジュールが行うものですが、固有の認証トークンを使用します。

ログインしているユーザー
  1. はユニークなトークンが生成され、Drupalのデータベースに保存され、ブラウザがノードに接続するようになると、ブラウザ
  2. に送信され、ページがロードされます。ワークフローは、このようなものです.jsサーバーは、要求と一緒に認証トークンを送信します。
  3. node.jsサーバーは、トークンで要求を初めて受信すると、DrupalサイトのWebサービスに接続し、トークンが有効であることを確認します。そのユーザーに関する情報や、どのような役割を持っているかなどを返送します。
  4. node.jsサーバーは、この要求を内部的に保存して、要求ごとにDrupalサイトにpingする必要がないようにします。
  5. ユーザーがDrupalからログアウトすると、Drupalはそのユーザーのトークンを削除するようにnode.jsサーバーに直接要求します。

基本的には、ノード用のJavaアプリケーションを交換しているようです。jsこれはかなり実行可能でなければならず、これを将来複数のサーバーに分割すると拡張が容易になるという利点があります。

+0

これは意味があります。余分なトークンの必要性を排除するために、ヘッダまたはクッキーに格納されたセッション変数を一意のトークンとして使用することは可能でしょうか? – user1180316

関連する問題