我经过2天的呕血奋战实现了不改变java VM环境和Web server环境,在struts下实现JAAS。
步骤如下:
1. welcome.jsp, index.jsp, struts-config.xml
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<logic:redirect forward="index"/>
<%-- welcome.jsp
Redirect default requests to Welcome global ActionForward.
By using a redirect, the user-agent will change address to match the path of our Welcome ActionForward.
--%>
index.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="/tags/struts-bean" prefix="bean"%>
<%@ taglib uri="/tags/struts-html" prefix="html"%>
<%@ taglib uri="/tags/struts-logic" prefix="logic"%>
<html:html>
<Title>Logon</Title>
<body>
<html:form action="/LoginAction.do">
<p>User ID: <input type="text" name="userID" value="tyrone" /><br>
Passord: <input type="password" name="password" value="password"/><br>
<html:submit /></p>
</html:form>
</body>
</html:html>
struts-config.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
<!-- ================================================ Form Bean Definitions -->
<form-beans>
<!--2 Login formbean-->
<form-bean
name="LoginForm"
type="com.nova.colimas.web.form.LoginForm"/>
</form-beans>
<global-forwards>
<!-- Default forward to "Welcome" action -->
<!-- Demonstrates using index.jsp to forward -->
<forward
name="index"
path="/index.do"/>
</global-forwards>
<!-- =========================================== Action Mapping Definitions -->
<action-mappings>
<!-- Default "Welcome" action -->
<!-- Forwards to Welcome.jsp -->
<action path="/index"
type="com.nova.colimas.web.action.StartupServlet">
<forward name="success" path="/pages/index.jsp"/>
</action>
<!-- 2 Login -->
<action path="/LoginAction"
type="com.nova.colimas.web.action.LoginAction"
name="LoginForm"
scope="request"
input="/pages/indexcon.jsp"
validate="true">
<forward name="success" path="/pages/index.jsp"/>
<forward name="failure" path="/pages/index.jsp"/>
</action>
</action-mappings>
</struts-config>
2. 实现com.nova.colimas.web.action.StartupServlet用来初始化JAAS需要的系统属性
public class StartupServlet extends Action {
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception{
// Initialization of the log
//LoggerFactory.setFactory(new EPricerLogFactory ());
//Log.info (this, "Startup of Settings application");
initJAAS();
return mapping.findForward("success");
}
//初始化JAAS需要的系统属性
private void initJAAS(){
//set env variable
//用于认证JAASConstants接口内保存login.config文件地址 System.setProperty("java.security.auth.login.config",JAASConstants.AUTH_SECURITY_LOGINFILE);
}
}
public interface JAASConstants {
String AUTH_SECURITY_POLICYXMLFILE="D:\\MyProject\\colimas\\clms-web\\colimas\\security-policy.xml";
String AUTH_SECURITY_LOGINFILE="D:\\MyProject\\colimas\\clms-web\\colimas\\login.config";
String AUTH_SECURITY_MODULENAME="ColimasLogin";
}
Login.config文件内容:
ColimasLogin {
com.nova.colimas.security.auth.ColimasLoginModule required debug=true;
};
3.实现ColimasLoginModule登录模块
/*
* Created on 2005/07/01
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package com.nova.colimas.security.auth;
import java.util.*;
import javax.security.auth.*;
import javax.security.auth.callback.*;
import javax.security.auth.login.*;
import javax.security.auth.spi.LoginModule;
//import java.security.*;
//import org.w3c.dom.traversal.*;
import org.w3c.dom.*;
//import org.apache.xpath.*;
/**
* @author tyrone
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class ColimasLoginModule implements LoginModule {
private Subject subject;
private CallbackHandler callbackHandler;
private boolean debug = false;
private boolean succeeded = false;
private boolean commitSucceeded = false;
private String username;
private char[] password;
/**
* Initializes the <code>LoginModule</code>.
*
* @param subject the <code>Subject</code> to be authenticated.
*
* @param callbackHandler a <code>CallbackHandler</code> for
* prompting and retrieving the userid and password from the user.
*
* @param sharedState shared <code>LoginModule</code> state.
*
* @param options options specified in the login configuration
* file for this <code>LoginModule</code>.
*/
public void initialize(Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options) {
this.subject = subject;
this.callbackHandler = callbackHandler;
// initialize configuration options
margin
分享到:
相关推荐
- **Web.xml配置**:在Web应用的部署描述符中,可以配置安全管理器,指定使用哪个JAAS Realm进行身份验证。 - **Filter和Servlet拦截**:通常会使用Filter来拦截请求,进行身份验证和权限检查。 **4. JAAS API** - ...
在Mac版Tomcat中配置JAAS,可以确保只有经过验证的用户才能访问Web应用程序,从而增强系统的安全性。 首先,让我们了解一下JAAS的基本概念。JAAS定义了一种框架,允许开发人员创建和集成各种认证模块,这些模块可以...
- **配置(Configuration)**: JAAS配置文件定义了哪些登录模块将被用于特定的认证上下文,以及它们的执行顺序。 - **登录模块(Login Module)**: 登录模块是认证的核心,每个模块都有自己的认证策略。如果所有...
Java Authentication and Authorization Service (JAAS) 是...通过深入学习提供的`J2EE的安全认证机制_1.mht`、`J2EE的安全认证机制_2.mht`和`J2EE的安全认证机制_3.mht`文档,你可以更全面地了解JAAS的详细配置过程。
- **web.xml配置**:在Web应用程序的部署描述符web.xml中,可以通过配置`<login-config>`元素来指定认证方法和相关的JAAS配置。 - **过滤器**:可以使用Servlet过滤器进行预处理,如进行认证检查,然后将控制权...
综上所述,《JAAS in Action》是一本深入了解Java安全体系的宝贵资源,对于希望在Java环境中构建安全系统的开发者来说,是不可或缺的学习材料。通过阅读这些章节,读者不仅可以理解JAAS的基本工作原理,还能学习到...
总的来说,"Java JAAS安全认证 demo"是一个实用的学习资源,它展示了Java平台内置的安全机制,这对于构建安全的Web应用或企业级服务至关重要。开发者可以通过研究这个示例,掌握在实际项目中实施安全认证的最佳实践...
4. **配置文件(Configuration File)**:JAAS 使用配置文件来指定哪些登录模块应用于哪个主体(Subject,代表用户或实体),以及它们的配置选项。 现在,让我们来看看如何使用纯 Java 文件实现一个简单的 JAAS ...
文章提到,在 Borland 应用服务器的基础上,使用 JAAS 与 J2EE Web 容器的内置安全机制,并结合 Oracle 数据库的用户验证功能,实现了 Web 应用中对用户的验证和授权。这种方法的一个关键优势在于,它可以将用户能...
Java Authentication and Authorization Service (JAAS) 是Java平台中用于安全认证和授权的核心组件。它为开发者提供了一种标准的方式来实现用户身份验证和访问控制,从而确保应用程序的安全性。"Jaas in Action"这...
通过以上步骤,我们成功地使用 JAAS 在 Web 应用中实现了基本的页面验证与授权功能。这种实现方式不仅增强了系统的安全性,还简化了开发者的工作流程,使得用户认证和授权管理变得更加灵活和高效。
1. **配置安全策略**:开发者需要定义一个安全策略文件,指定哪些类和方法需要进行安全性检查,以及使用哪个登录模块(Login Module)进行认证。 2. **创建Subject对象**:Subject是JAAS中的核心类,代表了与安全...
Java Authentication and Authorization Service (JAAS) 是Java平台中用于实现用户认证和权限授权的一个核心组件。它为开发者提供了一种灵活的方式来实现安全控制,确保只有经过验证和授权的用户能够访问敏感资源或...
Java Authentication and Authorization Service (JAAS) 是Java平台中用于安全性的关键组件,它提供了一种框架,用于在Java应用程序中实现认证(Authentication)和授权(Authorization)。`jaas.jar` 文件是这个...
1. **配置**:首先,应用程序通过Jaas.login()方法触发JAAS流程,系统会查找相应的jaas.conf配置文件,确定需要使用的LoginModule。 2. **身份验证**:接着,JAAS根据配置启动对应的LoginModule,执行用户身份验证...
这一步骤分为两个部分:服务端认证配置和客户端认证配置。 **1. 服务端认证配置** 在 Zookeeper 的配置目录下创建 `zkServer-jaas.conf` 文件: ```ini Server { ...
Java Authentication and Authorization Service (JAAS) 是Java平台中用于实现安全认证和授权的核心框架。它为开发者提供了一种标准化的方法来处理用户身份验证和权限控制,使得应用程序能够根据用户的身份和角色来...
Java Authentication and Authorization Service (JAAS) 是Java平台提供的一种安全框架,用于实现用户身份验证和权限管理。这个框架使得开发者可以轻松地在Java应用程序中集成安全性,而不必深入理解底层的复杂安全...