0

JBoss 5.2 を使用してデプロイする Web アプリケーションがあります。ユーザーがアプリケーションを使用するには、ユーザー名とパスワードを使用して (簡易認証を使用して) LDAP サーバーで認証する必要があります。login-config.xmlこれはすべて、JBoss 用にをセットアップし、<login-module>実装を提供することによって行われます。

ここで問題が発生します。ログインした後、特定のアクションが実行されたときにユーザー名とパスワードを提供する必要があるシナリオがあります (これは LDAP サーバーでも認証されます)。ユーザーを Web アプリケーションに認証するために使用するのと同じメカニズムを再利用できるようにしたいと考えています。

アプリケーションにログインするためのフォームが投稿されてj_security_checkいるので、これに従ってリクエストを送信しようとしましたj_security_checkが、JBOSS は 404 を返しますj_security_check。保護されたリソースへの挑戦された要求に応答して。

では、ユーザーが同じ LDAP サーバーで提供した 2 番目の資格情報のセットを認証するにはどうすればよいでしょうか?

編集:

明確にするために、問題は、認証のためにユーザーの資格情報の入力を LDAP サーバーに送信する方法です。ユーザーからの入力の取得などはすべて完了です。あとは、この入力を取得して LDAP サーバーに送信し、応答を取得するだけです (ここで行き詰まっています)。

言及するのに役立つ場合、Web アプリケーションへのログインは、UsernamePasswordLoginModule を拡張するカスタム クラスを使用します。

4

3 に答える 3

1

そのため、多くの調査の結果、JBoss 環境 (私が使用しているもの) のソリューションを見つけることになりました。

ユーザーのクレデンシャルを取得したら、それらを POST/GET 経由でサーバーに送信します。サーバーは次の手順を実行して、( でlogin-config.xml) 構成した認証ポリシーを使用してクレデンシャルを確認できます。

WebAuthentication webAuthentication = new WebAuthentication();
boolean success = webAuthentication.login(username, password);

HttpServletRequestこれを拡張するために、 (サーバー側ハンドラーに渡される) を介してユーザーのロール/グループを確認することもできました。

boolean userIsInRole = servletRequest.isUserInRole("nameOfGroup")
于 2012-12-04T18:37:14.070 に答える
0

のセキュリティドキュメントで説明されています

于 2012-12-03T20:24:28.020 に答える
0

WebAuthenticationもう存在しないJBoss 6.2+に別の回答を追加したかった。私はLoginContext同じ結果を達成するために a の作成を使用しました:

String SECURITY_DOMAIN_NAME = "ssd"; // the security domain's name from standalone.xml

String username = "user";
String password = "password";

LoginContext lc = null;
try {
    lc = new LoginContext(SECURITY_DOMAIN_NAME, new UsernamePasswordHandler(username, password.toCharArray()));
    lc.login();
    // successful login
} catch (LoginException loginException) {
    // failed login
}

そして、lc.getSubject().getPrincipals()役割を確認するために uf を使用します。

于 2015-01-26T19:26:27.433 に答える