質問

これがシナリオです。私は、広告ドメインのWebサーバーで実行されているコードです。一部のクライアントが私に接続しています。クライアントにブラウザのフォームに記入することなく、クライアントのユーザー名を取得するにはどうすればよいですか? Webサーバー側でJavaテクノロジーを使用する必要があります。

編集:

以下のリンクで説明されているように、Spring Security Negotiate Filterを使用することになりました。利用可能なチュートリアルがあります。使用 request.getPrincipal()。getName() サーブレット内からユーザー名を与えます。

http://waffle.codeplex.com/

役に立ちましたか?

解決

を設定する必要があります Spring Security Kerberos Extension - これは、Spring Security 3で説明していることを行うための唯一の箱から外れた方法です。これは、Spnegoの交渉をサポートしますが、サーバー上のある程度のセットアップが必要です(SpnegoとKerberosの仕組みに関する知識)。

ドキュメントはあまりありませんが、1.0m2で出荷するマイクのサンプルアプリケーションは優れており、自動化されたSPNEGO認証など、ほとんどの一般的なシナリオをカバーしています。

Spnegoの重要なことは、カスタムをセットアップすることです AuthenticationEntryPoint - 次のように、カスタムスプリングビーンでこれを行う必要があります。

<bean id="kerbEntryPoint" class="org.springframework.security.extensions.kerberos.web.SpnegoEntryPoint" />

<bean id="kerbAuthenticationProcessingFilter" class="org.springframework.security.extensions.kerberos.web.SpnegoAuthenticationProcessingFilter">
    <property name="authenticationManager" ref="authenticationManager" />
</bean>

...これら以外に必要な豆が増えます(繰り返しますが、Kerberos拡張機能のサンプルを参照してください)。 Spring Securityとともにさらに詳しく説明した場合、または正確な詳細が必要な場合(豆 /構成ビットが多数あるため、構成に関する知識が役立つでしょう。 <http> 名前空間スタイルかどうか)。

このオプション以外に、同様のタイプのspnego Authを設定する必要があります(ワッフルを使用するなど) - 他のSO質問 これをかなりよくカバーしてください。

最後に、Microsoft IISやApache Webサーバーなど、SPNEGOやNTLMをより適切にサポートする別のWebサーバーを使用してTomcatをフロントフロントすることができます。 mod_spnego.

うまくいけば、これらのアイデアの1つがあなたのために働くでしょう!

他のヒント

ユーザーはどのブラウザを使用していますか? IEの場合;簡単な解決策があります:

<html>
<script type="text/javascript">
var WinNetwork = new  ActiveXObject("WScript.Network");
alert(WinNetwork.UserName);
</script>
</html>

Windowsの最新の方法は、それを行うことです spnego. 。それを完全に機能させるには、ADにアカウントを作成し、Kerberosと通信する必要があります。それから、春のセキュリティはこれをサポートしていると言われました。

これで、常にユーザーを承認する必要があるとは限りません。時々(たとえば、統計上の理由で)、ユーザーの広告IDを取得するのに十分です。 SPNEGOで再生していたとき、ブラウザから渡されたバイナリデータは、ユーザーIDをクリアテキストに含めていました。そこから抽出することはできますが、もちろん信頼することはできません。

NTLMは時代遅れであり、安全性が低く、環境から大部分が展開されています。

Tomcatを使用している場合は、使用してください ワッフル.

ApacheがTomcatの前にApache Webサーバーを置くことができると確信しています。 ntlm また Kerberos. 。次に、ルールを書き換えて、プレーンにユーザー名を使用してTomcatにリクエストを送信できます。これは単なるアイデアであり、私はこれを自分で実装していません。ただし、イントラネットでApache Kerberos認証を使用しています。私の提案は、NTLMを使用することではなく、時代遅れでフレーク状です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top