web-dev-qa-db-ja.com

シングルサインオンおよびデスクトップのActive DirectoryエントリにWindowsログインを使用する方法Javaアプリケーション?

デスクトップにJavaアプリケーションにActive Directoryユーザーに関連するシングルサインオンを持たせたい。2つのステップで、次のことを行いたい:

  1. 特定のユーザーがユーザーエントリを使用してWindowsにログインしていることを確認してください。
  2. Active Directoryからそのユーザーの設定情報を確認します

Java:現在のWindowsユーザーを判別するプログラムによる方法 を使用すると、現在のWindowsユーザーの名前を取得できますが、これに依存できますか?私は思います

System.getProperty("user.name")

十分に安全ではありませんか? (「user.name」は環境変数から取得されているようなので、信頼できないと思いますか?)

質問 Java Linuxの場合)でのActive Directoryに対する認証 は、指定された名前+パスの認証を提供しますが、Windowsログオンに基づいて認証したいですか?

Active Directoryアクセスの場合、LDAPがおそらく選択でしょうか?

30
Touko

サポートされていません。 Java 6は改善されていますが、まだ十分ではありません。

Javaには独自のGSSスタックがあります。問題はシングルサインオンに関するものであり、OSからKerberosチケットを取得する必要があります(Javaスタックではありません)。それ以外の場合、ユーザーはもう一度認証する必要があります(シングルの目的を無効にする)入社する)。

http://Java.Sun.com/developer/technicalArticles/J2SE/security/ を見てください。 「Access Native GSS-API」を探してください。trueに設定すると、Javaが基になるOS GSS実装を使用し、次のようになります。新しいシステムプロパティSun.security.jgss.nativeについて話します。 OSレベル認証へのアクセスパーフェクト!.... Microsoft Windowsではなく、SolarisとLinuxでのみサポートされています。

ただし、Java 6は、IEからSPNEGO認証リクエストを受信し、認証するserverとして機能するための十分なサポートがあるようです)そのユーザーをActive Directoryに対して実行します。デスクトップクライアントのサポートは、まだ完全ではありません。

13
Alan Kent

[〜#〜] jaas [〜#〜]LDAP LoginModule とともに使用します。これにより、基盤となるJavaセキュリティインフラストラクチャにプラグインできます。

アプリをオフラインにするか、アプリを「デバッグ」する必要がある場合は、LDAPモジュールをダミーモジュールに簡単に交換できます。これにより、Active Directoryに依存することなく、「セキュリティ」のテストを継続できます。高度にテスト可能で、分離されており、認証スキームを後で悲惨なことなく行うことができます。

5
James Schek

プロジェクト Waffle には、WindowsでSSOを実行するクライアント側とサーバー側の両方のコードがあります。これはJNAベースで、ネイティブライブラリは必要ありません。

4
dB.

JNA APIの使用を検討しましたか(オペレーティングシステムへのネイティブコールを簡単に実行できます)?

http://msdn.Microsoft.com/en-us/library/ms724432(VS.85).aspx でwin32 metod GetCurrentUser MSDNドキュメントを呼び出すことができます。 Advapi32.dll内にあります。

また、Unicodeバージョン、必要に応じてGetCurrentUserWもあります。

そして、あなたは正しいです。環境変数が変更される可能性があるため、誤解を招く可能性があります。

32/64ビットウィンドウでのクロスプラットフォームの影響についてはよくわかりません。コードでソリューションが必要な場合は、私はそれのために何かを書くことができると確信しています。

しかし、いや、ただのアイデア:)

0
guyumu

Spring Security を使用すると、おそらく最も柔軟性が得られます。 JAAS認証とLDAP認証の両方で使用できます。

0
Bogdan

http://jcifs.samba.org/ でjCifsを確認してください

それ以外は、LDAPを使います(実際には、最初の試みですが...)

0
aldrinleal