11

Active Directory でのシングル サインオンを必要とする Java EE Web アプリケーションを実行しています。

アプリケーションはユーザー名とパスワードを要求しなくなります。認証プロセスでは、現在 Windows にログオンしているユーザーを取得する必要があります。ユーザーを取得したら、Active Directory にクエリを実行して、ログオンしているユーザーのロールを取得する必要があります。これにより Windows 以外のユーザーが除外されることは承知していますが、これは内部アプリケーションであり、すべてのクライアントが Windows を使用しています。

2 つの Java EE Web アプリケーションに SSO を実装する必要があります。1 つのアプリケーションは GlassFish v2.1.1 (JDK 1.6) で実行され、もう 1 つのアプリケーションは Tomcat (JDK 1.5) で実行されます。

基本的に私の主な問題は、現在の Windows ログオン ユーザーを取得する方法です。

私はすでにJAASKerberosに出会いました。私が間違っている場合は、親切に修正してください。私の理解では、これらは認証プロトコルであり、現在のウィンドウにログオンしているユーザーを取得する機能はありません。

私はすでに次のことを試しましたが、常にnullサーバー自身のユーザー名を取得しています。

  1. System.getProperty("user.name");
  2. new com.sun.security.auth.module.NTSystem().getName();
  3. request.getUserPrincipal().getName();
  4. System.getenv("USERNAME");
  5. Tomcat での JCIF NTLM HTTP 認証
  6. ログインコンテキスト

私はどんな提案にもオープンです。

4

4 に答える 4

4

WAFFLEはこれに最適なソリューションです。Kerberos 構成は必要ありません。

于 2011-04-29T11:14:08.017 に答える
3

SPNEGOは、統合 Windows 認証を提供するサーブレット フィルターを提供するオープン ソース プロジェクトです。

組織が Java ベースの Web/アプリケーション サーバーを使用していて、認証プロトコルとして NTLM ではなく Kerberos/SPNEGO を好み、コンテナ固有の認証モジュール (JSR -196)、SSO (ユーザー名/パスワードのプロンプトなし) が必要な場合は、このプロジェクトに興味があるかもしれません。

TomcatGlassfishの両方を構成する手順が記載されています。

于 2011-01-04T02:54:24.463 に答える
0

これは役立つかもしれません: http : //webmoli.com/2009/08/29/single-sign-on-in-java-platform/ http://appliedcrypto.com/

于 2011-01-04T10:01:42.520 に答える
0

JCIFS NTLM はサポートされなくなりました(ただし、NTLMv1 では動作します)。私の現在のプロジェクトでは、以前に推奨されたようにSPNEGOを使用しました。

オプション 1、2、および 3 は、サーバー ユーザーを取得しようとします。このコードが実行されている場所と、クライアント マシンとどのようにやり取りできるかを考えてください (ヒント - できません)。

于 2011-01-04T13:30:54.370 に答える