Java ベースの Web アプリケーションで CAC/Active Directory (AD) 認証がどこで機能するかを特定しようとして、かなり困惑しています。たとえば、複数の Weblogic コンテナでホストされている複数の J2E JSF アプリケーションを考えてみましょう。これらの各アプリケーションは、ユーザーがどの AD ロールに属しているかを確認することで、ユーザーのアクセスを制限します。これらすべてのアプリケーションで CAC/AD 認証が必要な場合、どの段階で CAC/AD 認証を実行しますか?
理想的には、認証を行うアプリケーションとは別のゲートウェイが必要だというのが私の理解でした。単純な例は、F5 ハードウェア/ソフトウェア バンドルです。ユーザーが CAC/PIN の組み合わせで認証されると、Weblogic 上のデプロイされたアプリケーションに転送され、ヘッダーにいくつかの追加情報 (前述の AD ロールなど) が含まれます。プログラム可能なソリューションがないため、それを購入する必要があると言っているのではなく、例として、認証と使用リソースは 2 つの別個のエンティティであり、この問題のために必ずしも組み合わせる必要はありません。
しかし実際には、多くのプロジェクトが Microsoft と Apache のサービスを組み合わせて認証を許可していると読んだことがあります。これは、いくつかの利点を概説する優れたブログ投稿です。ユーザーが IIS に対して認証されると、Apache 上のアプリケーションに転送されます。いずれにせよ、IIS と Weblogic を混在させることは、特に 2 つのノード間の通信を構成しようとする場合は、最初から悪い考えのように思えます。
2012 年より前にさかのぼるスタックと Web に関する多数の投稿もあり、さまざまなソリューションを推奨しています。ある投稿では、次のことを推奨しています。
サーバーがクライアント証明書を検証するときに、受け入れ可能な証明書ポリシーのセットを指定できます
答えは一般的には理にかなっていますが、著者はこのコミュニケーションが行われるためのアーキテクチャの詳細には立ち入りません。他のいくつかの投稿では、前述のゲートウェイ機構のような SSO 機能を実行するためにJOSSOを推奨しています。この投稿では、製造元が提供するドライバーを使用してスマート カードを直接読み取るためにPKCS11を使用する方法についても説明します。Java で DOD 発行の CAC を使用して AD サーバー ユーザーを認証するなど、答えのない質問もあります。
これらの投稿の間隔が平均して 5 年であることを考えると、この問題に対する今日のベスト プラクティスが何であるかはわかりません。ゲートウェイ アプローチは認証を行うための理想的な方法ですか? 私のアイデアはまったく適用できず、より良い解決策はありますか?