イントラネットユーザー向けのWebアプリケーションを開発する必要があります。サイトにアクセスするたびにログイン資格情報を入力してほしくない。システムのユーザー名とパスワードから自動的に読み込まれるはずです。つまり、有効なシステムユーザー名とパスワードを持っている場合は、アプリケーションにログインできるはずです。私はJavaを使用しています。この要件を満たす方法は?
6 に答える
この問題を解決するには、ワッフルとCOM4Jを使用できます。覚えておく必要があるのは、ワッフルはWindowsのクレデンシャルでのみ機能するということです。UIサイドコードでの自動ログインにワッフルAPIを使用できます。COM4J apiは、Java側で自動ログイン用のコードを記述したい場合に便利です。
SSO(シングルサインオン)は、システム資格情報を使用した自動ログインに使用できます。Waffleは、ActiveDirectory上にSSOを実装するために使用されます。ローカルマシンとActiveDirectoryの間でネゴシエートします。ただし、ユーザーが認証されると、Waffleを使用してすべてのパラメーターを取得することはできません。そのためにCom4jを使用することができます。
あなたが探しているのは、Windows統合認証と呼ばれるものです。これを実装できるようにするには、サーバーがActive Directoryに対する認証(Kerberosを使用)をサポートし、ブラウザからの認証されていない要求にWWW-Authenticate:NTLMまたはNegotiateヘッダーで応答するように構成する必要があります。
使用しているサーバープラットフォームがわからないと、これを行う方法を正確に説明することはできません。ただし、プラットフォームがJAASをサポートしていると仮定すると、これは、プラットフォームの構成に関する基本事項を示すブログ投稿です-http ://webmoli.com/2009/08/29/single-sign-on-in-java-platform/
「Windows」に固有の場合は、NTLM認証を使用できます。たとえば、http://davenport.sourceforge.net/ntlm.html
これが役立つかどうかはわかりませんが、HTTPクライアントの使用方法を確認できますhttp://hc.apache.org/httpclient-3.x /authentication.html#NTLM
NTLMクレデンシャルは、SPNEGO(Kerberos)またはNTLM認証(どちらもWindowsネイティブ認証を構成します)をサポートするサーバーに渡すことができます。残念なことに、このようなサーバーの多くはデフォルトでこれをサポートしていません。Microsoft IISは、必要な認証モードをサポートするサーバーの1つです。
私の知る限り、Java Webアプリケーションでこれを実現するには、アプリケーションサーバーでのWNAのサポートを確認する必要があります。たとえば、WebLogic Serverはこれをある程度サポートしますが、MicrosoftIISWebサーバーを前面に配置する必要があります。
シングルサインオンソリューションがMicrosoftActiveDirectoryに対する資格情報の検証もサポートしている可能性もありますが、シームレスな統合の性質は製品ごとに異なる場合があります。
さらに、使用中のブラウザも重要です。WNAは、IE 5以降、およびFirefoxの特定のバージョンで使用できます。バージョン5以降、GoogleChromeで利用できるようです。NTLM認証は、Opera9でも最初に導入されました。