JAASの快速開発JBOSSカスタム認証


詳細
企業応用では、認証はよく見られる需要であるが、J 2 EEプロジェクトでは、認証登録には大きく2つの方法がある.
1つはフィルタによってログインと権限の制御を要求することをブロックすることであり、もう1つはJAASを適用することであり、今日はJAASを使用してJBOSSを迅速に開発するカスタム認証について簡単に紹介します.
一、環境準備作業:
1.1導入されたwarパッケージで、リソース保護を構成し、JAAS検証を有効にする必要があります.
WEB-INFのweb.xmlでのリソース保護の構成例:
       war_all_pages   *.do   *.jsp   *.htm   GET   POST       users   
 
   FORM     /login.jsp   /error.jsp      users 
 
WEB-INFでjboss-web.xml構成の例:
       java:/jaas/test
       
 
ログインページの例:
ルートディレクトリの下にloginを追加します.jsp,j_にコミットsecurity_checkおよびコミットアカウントパスワードj_username 、j_password
      
      
 
    
 
 
 
 
二、簡単なカスタム認証モジュールを開発する:
 
多くのLoginmoduleの中で、UsernamePasswordLoginModuleは急速に拡張できるクラスで、コミットされたパラメータを処理しています.簡単に拡張するだけで使用できます.コードリファレンス:
 
public class TestLoginModule extends UsernamePasswordLoginModule
{
    private SimplePrincipal user;
    private boolean guestOnly;
    protected static Logger log = Logger.getLogger(TestLoginModule .class);

    protected Principal getIdentity()
    {
        Principal principal = this.user;
        if (principal == null)
            principal = super.getIdentity();
        return principal;
    }

    protected boolean validatePassword(String inputPassword, String expectedPassword)
    {

        boolean isValid = false;
        if (inputPassword == null)
        {
            this.guestOnly = true;
            isValid = true;
            this.user = new SimplePrincipal("guest");
        }
        else
        {
            log.debug("inputPassword" + inputPassword);
             //             ,         。
            isValid = inputPassword.equals("aaaaa888");
        }
        return isValid;
    }

    protected Group[] getRoleSets() throws LoginException
    {
        Group[] roleSets = { new SimpleGroup("Roles") };
        if (!this.guestOnly)
         //          。
            roleSets[0].addMember(new SimplePrincipal("users"));
        roleSets[0].addMember(new SimplePrincipal("guest"));
        return roleSets;
    }

    
    @Override
    public void initialize(Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options)
    {
        super.initialize(subject, callbackHandler, sharedState, options);
    }

    @Override
    protected String getUsersPassword() throws LoginException
    {
        return getUsername();
    }

}

 
 
 
 
三、JBOSSでカスタム認証モジュールを配置する:
 
開発した認証モジュールを構成し、{jboss_server}defaultconfでlogin-configを変更する必要があります.xml
 
ノードの下に追加:
 
                                  
 
四、テスト.
 
今、最初のステップで準備したwarパッケージを配置ディレクトリに入れ、2番目のステップで開発したモジュールでコンパイルしたjarパッケージを{jboss_server}defaultlibの下に入れ、サーバを再起動し、
 
アクセスhttp://xxxx:ポート/test、アカウントのパスワードを入力して、ok、あなたのjbossのカスタム認証モジュールは使用することができます.