30

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

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

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

System.getProperty("user.name")

十分に安全ではないでしょうか?(「user.name」は環境変数から取得しているようで、あてにできないかな?)

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

Active Directory へのアクセスには、おそらく LDAP が選択されるでしょうか?

4

6 に答える 6

14

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

Java には独自の GSS スタックがあります。問題はシングル サインオンの場合です。OS (Java スタックではなく) から Kerberos チケットを取得する必要があります。そうしないと、ユーザーはもう一度認証する必要があります (シングル サインオンの目的に反します)。

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

ただし、Java 6 は、IE から SPNEGO 認証要求を受信し、Active Directory に対してそのユーザーを認証するサーバーとして機能するための十分なサポートを備えているようです。まだ不完全なデスクトップ クライアントのサポートです。

于 2009-10-06T02:11:31.903 に答える
4

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

于 2010-11-15T13:19:22.937 に答える
0

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

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

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

そして、あなたは正しいです。環境変数は変更できるように見えるため、誤解を招く可能性があります。

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

しかし、ええ、単なるアイデアです:)

于 2009-02-13T13:02:22.070 に答える