タイトルが少し不明確である場合はお詫びします。探しているものをどのように表現すればよいか完全にはわかりません。
基本的に、私がこれにいる状況は次のとおりです。
- いくつか (3 つ以上) の Web アプリケーションを持っています
- 各アプリケーションは個別のサーバーに存在します
- ユーザーは各アプリケーションに個別にアクセスすることはできません。すべてのユーザーは Apache の背後にあり、リバース プロキシとして機能します。
- Apache はさらに別のサーバー上にあります
- アプリケーションは、リバース プロキシまたは相互に直接アクセスできません。
- Web アプリケーションはすべて Java ベースで、Tomcat や Glassfish などで実行されます。
- すべてのアプリケーションで SSO を有効にしたい
- IdP (OpenAM、Shibboleth など) がある場合、Web アプリケーションから直接アクセスすることはできません。
*
私に関する限り、これらはすべて不変の要件です。上記の制約に違反することなく SSO を機能させる必要があります。
以上のことを考えると、一般的な SSO セットアップを実装できるとは思えません。なぜならSP -> IdP -> SP
、それには行くことができる必要SP -> IdP
があるからIdP -> SP
です。
さて、ここに解決策があります。mod_mellon
、mod_auth_saml
、およびがすべて Apache で SAML をサポートしているのを見てきmod_shib
ましたが、少なくともmod_mellon
HTTP 要求のヘッダーで SAML 認証の結果を通過することがわかっています。それで基本的に私の問題は解決しますが、いくつかのことについてはすぐに説明します。
私が最終的に望むのは、Apache が認証を実行し、その認証の結果を Web アプリに送信することを除いて、これに似たものです。
したがって、フローは次のようになります。
Request -> Not Authenticated -> Redirect to Login Page -> Authenticate (e.g. via LDAP) -> Add results to headers -> Redirect to requested page
、すべて Apache を離れることなく。
これは、典型的な SSO プロバイダーとまったく同じフローですが、Apache が基本的に IdP とリバース プロキシの両方として機能し、結果をヘッダーに含めることで認証が成功したことを SP に通知する点が異なります。別の IdP を使用する方が簡単かもしれませんが、可能であればオーバーヘッドを回避したいと考えています。
最後に、ApacheとIdP を併用するか、ApacheをIdP として使用するかにかかわらず、ヘッダーに追加される内容を署名などで保護できる必要があります。
ただし、ちょっと待ってください。これらに署名したい場合は、SAML 標準 (およびライブラリ) が処理するため、SAML トークンを含める必要があるかもしれません...
最後の質問: Apache を SP として機能させ、IdP を呼び出し、リバース プロキシの背後にあるアプリに SAML トークンを転送することは可能ですか? さらに読むとECP
、、または「拡張クライアントまたはプロキシ プロファイル」がこれを可能にする可能性があるようです。このユースケースを意図したものではありません (実際には WAP プロキシなどを対象としています) が、やりたいことを実行できる可能性があります。SAML 標準では、SP 以外の何かがログイン要求を開始することを許可していますか? し、といいIdP-Initiated SSO
ます。ただし、この質問の最初の部分は依然として関連していると思います。
誰かが持っている提案やコメントを本当に感謝します(「WTFはあなたがやろうとしていることですか?!」というコメントでも大歓迎です)。
*
この状況では、パズルのすべてのピースを制御できますが、セキュリティ関連の理由から、クライアントのユーザーがクライアント経由でアプリケーションにログインできるようにする必要がある場合があります。 SSO インフラストラクチャですが、IdP へのネットワーク アクセスがありません。ただし、彼らの IdP には、リバース プロキシへのネットワーク アクセスがあります。これは、最近の潜在的なクライアントの実際の要件だったと思います。