2016-03-27 4 views
0

SSOを実装するための共有セッションがうまくいかないのはなぜですか?私はSSOシステムを学んでいます。SSOを実装するセッションを共有できないのはなぜですか?

このシーンを考える: は、ビジネス・サービスへのすべてのHTTPリクエストは、ビジネスサービスが要求を検証する必要がある、ログインを要求されることを想定すると、CASまたはSAMLでSSOサービスを尋ねることによって、ログインまたはではありません。 10のビジネスサービスがあり、各サービスのリクエストが1k req/sの場合、SSOサービスのリクエストは10k req/sです。 SSOサービスのイメージを保持することは難しいです。

だから、ログイントークンを確認するためにビジネスサービスにキャッシュ機構があるかもしれません。しかし、ユーザーがログアウトすると、SSOサービスは確認情報を削除する必要があり、ビジネスサービスはキャッシュ検証情報も削除する必要があります。それはあまりにも複雑だと思う。 SSOサービスは、一部のユーザーがログアウトしていたビジネスサービスを伝える必要があります。だから、すべてのサービスがログイントークンの確認情報を共有していないのはなぜですか? SSOサービスの書き込み、および他のビジネスの読み取りを許可します。それは私にsharing the session to implement SSOを思い出させる。 ログイントークン確認情報redis分散クラスタを共有できると思いました。しかし、私はセッションが良いではないと聞いている?なぜ?

答えて

0

SSOサーバーが多数の要求を処理できるかどうかは、SSOサーバーがその多数の要求を処理できるかどうかによって異なります。数十万の要求を処理するCASの非常に大規模な導入が行われています。それは様々です。

一般に、SSOセッションはアプリケーションセッションとは完全に別です。 SSO経由でアプリケーションにログオンすると、そのアプリケーションとのセッションが確立されます。このセッションは、そのセッションが最後に設定されている限り持続します。期限が切れると、アプリケーションはSSOサーバーに対して再度認証を決定することがあります。 SSOサーバーにSSOセッションが残っている場合、SSOサーバーは適切なデータを再発行し、アプリケーションはセッションを再作成します。そうでない場合は、ユーザーは資格情報を要求しても構わないし、それをやり直すことになります。

アプリケーションに関するセッションの懸念事項は、あなた自身とアプリケーションの懸念事項です。 SSOサーバーは決して関与すべきではありません。アプリケーションがクラスタ化されているためセッションを共有する必要がある場合は、セッションを共有する必要があります。誰もそれは悪い考えだとは言いませんでした。しかし、一般的には、クラスタ化されたデプロイメントを容易にするため、アプリケーションの状態を無制限にする必要があります。

アプリケーションからログアウトすると、アプリケーションセッションは終了しますが、SSOセッションがまだ存在する可能性があります。その結果、資格情報を提供する必要がないため、アプリをすぐに利用できます。必要に応じて、アプリとSSOサーバーからログアウトすることができます。

他のすべてのアプリケーションがSSO経由でログインしていて、ログアウトしてログアウトする場合は、これをSLOと呼びます。あなたのSSOサーバーは、チケットを作成したすべてのアプリにアクセスしてログアウトするように連絡する必要があります。または、すべてのアプリが同じスイートの一部であると仮定して、共有セッションを破棄することもできます。

関連する問題