SSO/SAML の理解不足で頭が爆発しそうです。現在、shibboleth を使用して SSO ID プロバイダーを実装するプロジェクトに取り組んでいます。
SSO が稼働しており、1 つのアプリを介して認証し、問題なく別のアプリに移動できます。さて、次の要件は、アプリ A が、アプリ B への Ajax 呼び出しを問題なく行うページを返すようにすることです。
これで、(ブラウザーのリダイレクトを介して) フロント チャネルを動作させるためのセットアップが完了したので、アプリ A に Ajax 呼び出しを行うと、301 応答が返され、SP/IdP 間のリダイレクトが開始されますが、Ajax は明らかに従いません。
一方、アプリ A からアプリ A への Ajax 呼び出しを行う場合、ローカル セッション ID を介して送信するため、IdP と通信するためにリダイレクトを送信する必要はありません。
ここで、ブラウザーを介して手動でアプリ B に移動し、すべてのリダイレクトを許可すると (したがって、アプリ B のローカル セッション Cookie も取得します)。その後、まだアプリ A の応答から Ajax リクエストを作成できません。これは、アプリ A のドメインのページにアクセスしているときに、ブラウザーがアプリ B の Cookie 情報を送信しないためです。
だから私の質問は次のとおりです:
アプリ A とアプリ B が兄弟サブドメインである場合、ブラウザーが必要なすべてのセッション Cookie を通過するようにするにはどうすればよいでしょうか?
この種の Sp/IdP 通信は、ブラウザ経由で発生しているリダイレクトに付随して、バック チャネル経由で発生する可能性があると私は推測しています。私が理解していないのは、これがどのように可能であるかです:-)。アプリ A 経由でログインすると、IdP は独自のセッション Cookie を追加するため、アプリ B にアクセスした後にリダイレクトが発生したときに再認証する必要はありません。 、そもそもブラウザが IdP の Cookie をアプリ B に渡さないため、私を認証するために IdP に何を送信できますか。
ノート:
これがはっきりしていない場合は申し訳ありませんが、今はうまく説明できません。達成する必要があることを説明したほうがよいかもしれません。
- アプリケーションをヒットし、SSO を使用してサインインする
- 私がサインインしたアプリケーションは、多数の ajax ウィジェットを備えたポータル タイプのアプリです。
- 各ウィジェットは、SSO によって保護されている他のアプリへの Ajax 呼び出しを行います。
何か案は?乾杯、クリス。