4

[ # 明確化のために編集された質問 # ]

Web アプリケーションにシングル サインオン (SSO) を実装しようとしています。たぶん、適切な解決策を見つけるのを手伝ってくれたり、指示を与えたり、解決策が既に存在することを教えてくれたりします.

シナリオ: GeoExt (地理データ/地図ベースのアプリ用の ExtJS) Web アプリケーション (JavaScript のみ) が顧客の Web サーバーにデプロイされます。

お客様は「ユースケース」または「プロファイル」を定義します。これは、Web サービス、GeoServer WFS、WCS、Google マップなどの一連のサービスです。これらのサービスでは、資格情報やキーなどの追加の認証が必要になる場合があります。

ユーザー (「プロファイル」に登録して申請する必要がある) は、(申請が許可されるとすぐに) 自分のプロファイルに関連付けられたサービスにアクセスするために必要な資格情報を取得できます。通常の SSO ソリューションと同様に、ユーザーはサービスを使用するために各資格情報/キーを入力する必要はありません。

[ # ここから変更はありません... #]

主な問題: サード パーティのサービス (Google など) を変更して SSO メカニズムを追加することができません。

ユーザーが一度ログインするだけで、必要なすべてのサービスにアクセスできるソリューションが必要です。私の最初のアイデアは、必要な資格情報またはキーをすべて格納するリポジトリでした。ユーザーはログインし、他のサービスにアクセスするために必要なすべての情報を取得できます。既存の実装、論文、おそらくそのようなサービスの実装を知っている人はいますか?

その他の要件: JS アプリケーションとリポジトリ間の通信は安全でなければなりません。資格情報は安全な方法で保存する必要があります。しかし、JS アプリはそれらを使用してサービスにアクセスできる必要があります (JS アプリに復号化キーを安全に保存する機会はありませんよね? *g)。

[編集] 関連するサービスの使用条件のため、プロキシはオプションではありません。

4

4 に答える 4

1

Web サービスへのアクセスはユーザー コンテキスト内にある必要がありますか、それとも一般的な Web サービスですか?

そうでない場合は、Web サーバーでサードパーティの Web サービスとの認証と通信を処理し、サーバーからクライアントにメッセージをルーティングできます。このようにして、ユーザー アカウントとパスワードを追跡して保存する代わりに、サード パーティ プロバイダーのサービス アカウントを簡単に使用できます。

于 2010-03-18T22:30:28.877 に答える
0

GoogleにはすでにいくつかのSSOメカニズムがあります。サービスプロバイダー(SP)として機能するSAML (特定の状況)と、IDプロバイダー(IDP)として機能するOpenIDをサポートしています。統合する必要のある他のサードパーティサービスについては言及していませんが、これらのいずれかと互換性がある場合は、次のことができます。

  1. SAML IDPを設定し、これを使用してGoogleや他のアプリにSSOします
  2. (このサイトのように)OpenID IDPとしてGoogleを使用し、これを使用して他のアプリにSSOします
于 2010-03-12T00:58:12.673 に答える
0

実装する必要がある各 Web サービスをラップ/プロキシする必要があると思います。これは各サービスにとって大変な作業のように聞こえるかもしれませんが、共通のテーマを見つけることができるかもしれません。

詳細: Web サーバーから WS を提供します。この WS は、ユーザーのプロファイル ID を取得し、(サーバー側のストレージから取得した) 正しい資格情報を使用して実際の Web サービスを実際に呼び出します。したがって、クライアントでユーザーが資格情報を使用できるようにする必要はありません。クライアント JavaScript は、サーバーを呼び出すだけで済みます。また、他のサービスをラップすることで SSO API を実装できます。

注意: 各 Web サービスの「公正使用」ライセンスを再確認してください。それらの一部は、サービス契約の違反として単一の IP からの多数の呼び出しを検出し、サーバーをブロックまたはブラックリストに登録します.

于 2010-03-19T20:35:22.910 に答える
0

Drupal をフレームワークとして使用して、同様のことを行いました。http://www.drupal.org

Drupal の組み込み認証を使用するか、Shibboleth などの SSO ソリューションをhttp://drupal.org/project/shib_authにあるモジュールと一緒に使用するか、コア モジュールとして利用できる OpenID を使用できます。

そこに到達すると、多くの方法、drupal_http_request またはhttp://drupal.org/project/rest_client、Restクライアント モジュール、または WSRP http://drupal.org/project/wsrp介して、サービスを利用する世界が開かれます。開発者は、Iframe を介してサービスを消費させました。最良の部分は、Gmaps http://drupal.org/project/gmapや Amazon http://drupal.org/project/amazonなど、既存のサービスを利用するためにすでに作成された多くのモジュールがあることです。

私たちはさまざまな方法でサービスを利用しているため、さらに詳しく説明できれば幸いです。乾杯。

于 2010-03-20T08:54:43.713 に答える