0

構築中のシステムに問題があります。SP が開始する SSO システムの実装に成功しました。ただし、このシステムに複数の一意で完全に分離されたサービス プロバイダーがあり、データのやり取りと交換が可能でなければならないことを考慮すると、問題が発生します。1 つの SP (SP1) が別の SP (SP2) と通信する必要がある場合、セキュリティを維持しながらシームレスに移行できる必要があります。したがって、SAML データをアサートまたは共有できる必要があると思います。

たとえば、ユーザーが SP1 経由でシステムにアクセスしようとすると、IdP にリダイレクトされます。ユーザーは、IdP に対して認証を行います。IdP は、SP1 への http ポストを介してアサートします。ユーザーは SP1 で一連のタスクを実行しますが、最終的には SP2 へのデータ転送またはブラウザーのリダイレクトが必要になります。SP2 は、SP1 がユーザーの認証に成功し、IdP から SAML 応答を受信したことを認識していません。ここで私の問題が発生します。SP2 が SP1 でのユーザーの状態を認識できるようにするメカニズムを実装する必要があります。より一般的に言えば、一連のサービス プロバイダーの任意のサービス プロバイダーが、ユーザーのステータスについて相互にアサーションできるようにする必要があります。ただし、このタスクを達成するための「公式」の方法に関するドキュメントは見つかりません。

この問題に対する複数の解決策を考えましたが、少なくともそれらのいずれかが「公式」であるとは思えません。1 つは、guid によって参照できる IdP 上の SAML アサーションのリストを永続化することです。次に、SP1 から SP2 へのリンクを渡します。このリンクはコントローラーのアクションと GUID を参照し、IdP がデータを SP2 に再アサートできるようにします。これは遅くて複雑に思えます。2 つは、SP1 で応答を受信した後、何らかの方法で SAML 応答を保持し、ユーザーがリダイレクトされるたびに何らかの方法でデータを SP2 に渡すことです。

私は考えすぎて、このプロセスを複雑にしすぎているのかもしれません。IdP が開始する SSO ベースのソリューションに移行する必要があるかもしれません。私はドキュメントで何かを見ているかもしれません。

誰かがこのトピックに光を当てることができれば、それはありがたいです. この件に関する追加情報があれば喜んで提供します。

4

2 に答える 2

0

問題を解決した方法は、IdP に対してユーザーを認証することです。次に、ユーザーが認証されると、セッションがしばらくの間アクティブなままになることを許可します。このソリューションは、IdP に対する認証を SP から完全に独立させることで、SSO を可能にします。つまり、他のどの SP が認証されているかを追跡するのは SP ではありません。これは IdP の仕事だからです。ユーザーがブラウザから IdP にログインし、そのブラウザを分散 SP のいずれかにリダイレクトする場合、その SP が認証要求を IdP に送信するたびに、SP は自身のセッションに対して検証し、SP にアサートします。

于 2012-08-23T15:08:43.710 に答える