`
小码哥BASE64
  • 浏览: 124568 次
社区版块
存档分类
最新评论

JAAS之快速开发JBOSS自定义认证

    博客分类:
  • JAAS
阅读更多

      在企业应用中,认证是一个很常见的需求,而在J2EE项目中,认证登录大致有两种方式来实现:

      一种是通过过滤器来拦截请求控制登录与权限,另外一种方式就是适用JAAS, 今天就简单介绍下使用JAAS快速开发一个JBOSS的自定义认证。

一、环境准备工作:

1.1 一个部署的war包,包内应当配置资源保护,和启用JAAS验证。

  WEB-INF中web.xml 中配置资源保护 示例:        

  <security-constraint>
  <web-resource-collection>
   <web-resource-name>war_all_pages</web-resource-name>
   <url-pattern>*.do</url-pattern>
   <url-pattern>*.jsp</url-pattern>
   <url-pattern>*.htm</url-pattern>
   <http-method>GET</http-method>
   <http-method>POST</http-method>
  </web-resource-collection>
  <auth-constraint>
   <role-name>users</role-name>
  </auth-constraint>
 </security-constraint>

 

 <login-config>
  <auth-method>FORM</auth-method>
  <form-login-config>
   <form-login-page>/login.jsp</form-login-page>
   <form-error-page>/error.jsp</form-error-page>
  </form-login-config>
 </login-config>
 <security-role>
  <role-name>users</role-name>
 </security-role>

 

  WEB-INF 中 jboss-web.xml配置  示例:

<jboss-web>

<!-- 下面的test就是在login-config.xml配置的application-policy的名称 -->

       <security-domain>java:/jaas/ test</security-domain>

        </jboss-web>

 

登陆页面 示例:

根目录下添加login.jsp ,提交至j_security_check 且提交帐号密码为j_username 、j_password

      

<form name="form" method="POST" action="j_security_check">

<table >

 <tr><td>

<input type="text" name="j_username" >

 </td> </tr>

 <tr><td>

<input type="password" name="j_password" >

     </td>

   </tr>

<tr><td></td><td><input type="submit" value="登录"></td></tr>

 </table>

</form> 

 

 

 

二、开发一个简单自定义认证模块

 

       在众多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}\default\conf 下修改login-config.xml

 

         在    <application-policy name = "other">节点下加入:

 

          <authentication>
             <login-module code = "org.jboss.security.auth.spi.TestLoginModule" flag = "required"></login-module>
           </authentication>

 

四、测试。

 

         现在把第一步准备的war包放入部署目录,把第二步开发的模块编译的jar包放入{jboss_server}\default\lib下,重启服务器,

 

 访问http://xxxx:端口/test  ,输入账号密码,ok,你的jboss自定义认证模块可以使用了。  

 

 

 

 

分享到:
评论

相关推荐

    JBOSS security using JAAS

    - **认证**:JAAS的核心功能之一是用户身份验证,即确认用户是否是他们声称的身份。这通常通过用户名和密码实现,但也可以扩展到支持其他认证机制,如数字证书或智能卡。 - **授权**:认证成功后,JAAS处理用户...

    JAAS认证与授权教程

    `i`和`j-sec2`可能是文档或示例项目的部分,它们可能提供了关于如何配置和使用JAAS的详细指南,或者展示了如何将JAAS集成到具体的应用服务器如Tomcat或JBoss中的实例。 学习JAAS对于任何希望构建安全Java应用程序的...

    jboss3 快速入门

    本节详细介绍了如何配置jBoss的安全服务,包括使用JAAS进行认证和授权。 ##### 8.2 Securing Your Application 进一步探讨了如何保护应用程序免受攻击,包括权限控制、身份验证策略等。 #### 九、CMP 2.0 CMP ...

    Jboss开发者手册

    《JBoss开发者手册》是专为Java开发人员提供的一份详尽指南,它涵盖了JBoss应用服务器的各个方面,包括安装、配置、管理以及应用程序的开发和部署。JBoss是一款开源的Java EE应用服务器,它提供了全面的支持来实现...

    JBoss学习全集多本书整合

    JBoss支持多种认证方式,如JaAS(Java Authentication and Authorization Service),可以通过修改`standalone/configuration/standalone.xml`或`domain/configuration/domain.xml`中的安全域配置进行设定。...

    JBoss 3.0 Quick Start Guide

    《JBoss 3.0 快速入门指南》是一本专为希望快速掌握 JBoss 3.0 应用服务器安装、配置及基本使用的开发人员编写的实用手册。本书由 JBoss Group 的成员 Andreas Schaefer 编写,并于 2002 年 7 月 16 日发布。此书...

    jaas文档

    在实际开发中,经常需要将JAAS与JBoss这样的应用服务器集成起来使用,以实现更复杂的安全管理需求。 1. **配置JAAS**: - 配置JAAS通常涉及到在JBoss的应用部署目录下创建`login-config.xml`文件来定义登录模块和...

    jboss

    9. **安全管理**:涵盖用户认证、角色授权和访问控制,包括jaas配置和jboss-security-naming.xml的修改。 10. **故障排查**:提供常见问题的解决方法,如日志分析、错误代码解读等。 11. **性能调优**:介绍如何...

    jboss-4.2.2.GA

    1. **用户认证**:JBoss支持多种安全认证机制,如JaAS(Java Authentication and Authorization Service)和LDAP。 2. **角色基线访问控制**:通过定义角色和权限,实现不同用户对资源的访问控制。 3. **SSL/TLS**...

    jboss 安装应用

    3. 应用安全设置:配置应用的角色和认证方式,如JaAS、LDAP集成。 九、启动与停止JBoss - 启动:`$JBOSS_HOME/bin/standalone.sh` - 停止:`$JBOSS_HOME/bin/jboss-cli.sh --connect command=:shutdown` 十、监控...

    JAAS in web applications, 9 of JAAS in Action

    - **Servlet容器**:大多数现代Servlet容器,如Tomcat、Jetty和JBoss,都支持JAAS。它们通常有自己的配置来指定如何使用JAAS进行用户验证。 - **web.xml配置**:在Web应用程序的部署描述符web.xml中,可以通过配置...

    JBoss-A.Developer's.Notebook

    5. **安全机制**:讲解 JBoss 的安全模型,包括用户认证、角色授权、SSL 安全连接以及基于 JAAS(Java Authentication and Authorization Service)的安全配置。 6. **JMS 消息服务**:阐述 JBoss 对 JMS(Java ...

    jboss 第二部分

    JBoss,全称为Red Hat JBoss Middleware,是Red Hat公司推出的一款开源的应用服务器,它基于Java EE(Enterprise Edition)标准,为开发和部署企业级应用程序提供了一个全面的平台。本部分将深入探讨JBoss的相关知识...

    jaas in action

    书中的章节可能涵盖了如何创建自定义认证模块,以及如何在不同环境中部署和使用这些模块。 4. **配置与安全性**:JAAS的配置是通过配置文件进行的,书里可能会详细解析这些配置文件的结构和语法,以及如何设置安全...

    jboss portal手册

    JBoss Portal使用JAAS(Java Authentication and Authorization Service)来处理用户的认证和授权。它支持多种安全模型,如基于角色的访问控制(RBAC)、LDAP集成等,确保只有授权的用户才能访问特定的portlet和资源...

    PacktPub.JBoss.AS.7.Development.Jun.2013.rar

    - **安全性**:讨论如何实现用户认证和授权,包括JAAS、LDAP集成以及角色和权限的设置。 - **性能优化**:提供性能调优的策略和最佳实践,如内存配置、线程池调整、日志优化等。 - **故障排查**:介绍如何通过日志...

    acegi-security-jboss-0.8.1.jar.zip

    1. **身份验证**:系统可以通过多种方式验证用户身份,如基于数据库、LDAP或JAAS(Java Authentication and Authorization Service)的认证机制。 2. **授权**:提供了基于角色的访问控制(RBAC),允许开发人员定义...

    基于JMS(Java Messaging Service)开发JAVAMAIL详解

    JAAS允许开发人员自定义认证模块,以适应各种身份验证机制,如数据库、LDAP或Active Directory等。 在具体的应用中,开发者通常会实现一个与角色相关的用户管理系统,用于处理用户注册、登录、权限分配等功能。这...

    Seam security

    在Seam Security中,可以基于JAAS进行自定义配置以满足特定需求。 6. 安全需求:Seam Security的设计目标是让设置变得简单,易于管理,并确保应用程序不会因为安全性扩展而变得过于复杂,即应用程序不应该因安全...

Global site tag (gtag.js) - Google Analytics