0

Apache Web サーバーでホストされている Web アプリケーションがあります。そして、このWebアプリケーションに統合されたTomcatで実行される外部Javaアプリケーションがあります。

Apache は Kerberos 化されており、イントラネットでアクセスしているユーザーのユーザー名を取得しています。同じユーザー名を使用して tomcat に渡し、ldap と照合してユーザーを承認したいと考えています。

LDAPモジュールをサポートするJNDIレルムを調べていました。しかし問題は、ユーザーのパスワードにアクセスできないことです。しかし、ユーザーが属するグループを取得でき、それに基づいてユーザーを認証したいと考えています。

私の質問は、パスワードではなくユーザー名だけを使用して、LDAP を介して Tomcat サーバーに対してユーザーを認証できるでしょうか?

PS: 申し訳ありませんが、現時点で投稿できるコードや構成はありません。私が見つけた唯一のリソースは、ユーザー名とパスワードの両方を実装していました。ネットワークに他の問題があるため、Tomcat サーバーを kerberize できません。

4

1 に答える 1

0

「LDAP モジュールをサポートする JNDI レルムを調べていました。しかし問題は、ユーザーのパスワードにアクセスできないことです。しかし、ユーザーが属するグループを取得でき、それに基づいてユーザーを認証したいと考えています。 "

まったく同じことをするコードを書くように頼まれたことがあります。私はそれを機能させる方法を見つけました。ただし、Windowsユーザー名を自動的に検出するInternet Explorerでは十分に機能するように見えましたが(私のコードは、Internet Explorerのみがヘッダーとして渡すNTLM情報を解析していたため)、Firefoxまたはその他のブラウザーではユーザーが表示されます認証ボックスと入力したユーザー名を使用すると、受け入れられます! その非常に不安定です。

(ええと、IE だけがヘッダーを渡すというのは本当ではありません。IE だけがヘッダーを自動的に渡しますが、Firefox も、誰かが認証ボックスを取得して任意の名前を入力した後にヘッダーを渡します。それが問題です。)

私が提案するのは、C#.NET サービスを作成して、IIS であり、統合認証がオンになっている Web サーバーで実際の認証を行うことです。次に、誰かが Java サイトにアクセスし、username セッション変数が null の場合、C# サービスにリダイレクトします。C# サービスに、IP アドレスとブラウザーを含む信頼できる安全なデータベースに情報を保存させ、データベースを読み取って IP アドレスとブラウザーを検証し、レコードが作成されたことを確認する Java アプリにリダイレクトします。

編集: あなたの Apache は Kerberos 化されており、既に Windows ユーザー名を取得しているとのことですが、NTLM ヘッダーの null と void の解析の信頼性が低いという上記の問題が発生する可能性があります。この場合、LDAP 経由で AD グループを取得できれば、独自のコードを使用して webapp でユーザーを認証できますが、おそらく公式の Tomcat 認証スキームを使用する必要はありません。上記の説明は、Tomcat が Apache サーバーではなく IIS サーバーとペアになっているためです。つまり、基本的には同じことですが、C# は必要ありません。

于 2013-04-26T19:05:09.363 に答える