4

jsf、ejbs、jpaを使用してWebアプリケーションを構築しています。私は現在、フォームベースのj_security_checkを使用して認証を処理しています。

Cookieのサポート、つまり「Rememberme」オプションを実装する必要があります。また、ブルートフォース攻撃を防ぎたいです。つまり、ログオンに5回失敗した後、特定のユーザーをロックします。

他のオプションは、ServletFiltersなどを使用してプログラムで実行することであることを理解しています。

j_security_checkを使用してこれらすべてを実装する方法はありますか?または、プログラムで実行するように戻す必要がありますか?

4

1 に答える 1

0

これは、j_security_check に関するカスタム実装である必要があります。j_security_check でサーブレットフィルターをアタッチできます

<filter-mapping>
    <filter-name>SecurityFilter</filter-name>
    <url-pattern>/j_security_check</url-pattern>
</filter-mapping>

SecurityFilter で、セキュリティ チェックが userPrincipal を返した後、セッションで詳細を設定して続行します。ただし、userPrincipal が null の場合は、データベースから失敗回数を取得し、ログイン ページに表示できる失敗メッセージ (失敗回数を含む) をセッションに配置します。

public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain chain) throws IOException, ServletException {

    Principal userPrincipal = null;
            String username = httpServletRequest.getParameter("j_username");
    String rememberme = httpServletRequest.getParameter("rememberme");
    chain.doFilter(request, response);
    userPrincipal = httpServletRequest.getUserPrincipal();

クッキーを忘れないように設定する必要があり、変数「rememberme」の値は、j​​_security_check の完了後に使用可能になります。ログインの成功または失敗に基づいて、Cookie を設定できます。

于 2012-07-19T19:07:10.443 に答える