JAAS在Java Web Start中的设置

简介:

一、前言

  我这个AdminConsole项目是用Java Web Start(简称JWS)来让用户访问的,后来在用户登录部份用到了JAAS,而JAAS有一个登录配置文件的设定。过去,我一直是在Eclipse的Run里做设置“-Djava.security.auth.login.config=D:\wxxr\login.config”,如下图:

54bde01c02000043

  但这只是权宜之计,在将项目从本地以JWS发布到服务器就会碰到两个问题:(1)为了灵活,不能引用绝对地址的(2)在JWS中怎么设定对login.config的引用。

JAAS中对配置文件login.config的引用,主要有两种方法:
(1)动态配置:“-Djava.security.auth.login.config=D:\wxxr\login.config”。它其实是java.exe的一个参数,你可以像我一样在Eclipse的run里设置,也可以在命令行运行程序的方式中指定:c:\jdk\bin\java -Djava.security.auth.login.config=D:\wxxr\login.config -jar.......。
(2)在程序里静态配置:System.setProperty("java.security.auth.login.config", "D:\wxxr\login.config");

二、JWS中对JAAS动态配置的方法

  在JWS中,如果你想动态配置的,则在JWS的jnlp文件里设置如下:
 <resources>
  <j2se version="1.4+" href="http://java.sun.com/products/autodl/j2se"  java-vm-args="-Djava.security.auth.login.config=D:\wxxr\login.config" />
........  
 </resources>

或者

 <resources>
  <j2se version="1.4+" href="http://java.sun.com/products/autodl/j2se" />
  <property name="java.security.auth.login.config" value="D:\wxxr\login.config"/>
........  
 </resources>

上面的设置有一个关键问题:对login.config引用的是绝对地址,这个地址不是指向服务器端的地址,而是客户端的地址。这也就要求客户在D:\wxxr\目录含有login.config文件,显然我们不能对客户有这种麻烦要求(最好就是客户什么都不用做,这也是JWS的存在的价值和目的)。
因此这里还有一个变通的方法:把“D:\wxxr\login.config”改成“http://your_website:8080/adminconsole/login.config”,这样就会去网上定位login.config,而不必再把login.config安装在客户端里了。


三、JWS中对JAAS静态配置的方法

在上面的用web url的方法中还是有一点缺陷,login.config将是可以被其他客户轻易看到的,安全性不高。而且服务器的网站名变了以后,还得相应修改jnlp文件。所以我们不妨考虑一下静态配置的方法,用静态配置方法之后,就不用在jnlp文件里配置了,少了不了麻烦。

第一种:

System.setProperty("java.security.auth.login.config",  new URL(BasicServiceImpl.getInstance().getCodeBase(),"login.config").toString());

说明:
(1)BasicServiceImpl是JDK's javaws.jar包中的类(jdk\jre\javaws\javaws.jar)。
(2)BasicServiceImpl.getInstance().getCodeBase()得到的值是“http://your_website:8080/adminconsole/”,这个还是和前面web url其实一样,只不过它是动态获得web url。至于如何获得服务器的路径的那种,对于普通的java application我没研究过,我只试过下面eclipse RCP的。
(3)你只需要保证http://your_website:8080/adminconsole/login.config 能访问到login.config文件即可。

第二种:在Eclipse RCP程序中设置的方法

String path = AdminConsolePlugin.getDefault().find( new Path("properties/login.config")).toString();  // AdminConsolePlugin就是项目的那***Plugin.java文件,不同的项目会不同。
logger.info("login.config path=" + path);  // logger是log4j的一个对象,你可以把这一行删除
System.setProperty("java.security.auth.login.config", path);

  path的值有点怪,是“bundleentry://3/properties/login.config”。properties/login.config在服务器上的位置如下图:

54bde01c02000044
注:Eclipse RCP要装在JWS上,还得用一个开源软件WebRCP:http://sourceforge.net/projects/webrcp。此开源软件简单易用,连文档都不用看。它提供的webrcp-tutorial,本身就是一个RCP使用webrcp的例子,你只需要参照archives\tutorial.zip的目录结构将自己的RCP项目打包,然后用自己项目的zip替换掉archives\tutorial.zip即可。如果你想换一个zip名字,则需要修改tutorial.jsp文件(其实也是一个jnlp)中的“<property name=....>”相应的几项。


参考资料:
http://forum.java.sun.com/thread.jspa?threadID=612861&tstart=300
http://forum.java.sun.com/thread.jspa?threadID=621588&messageID=3523625

目录
相关文章
|
15天前
|
监控 JavaScript 前端开发
《理解 WebSocket:Java Web 开发的实时通信技术》
【4月更文挑战第4天】WebSocket是Java Web实时通信的关键技术,提供双向持久连接,实现低延迟、高效率的实时交互。适用于聊天应用、在线游戏、数据监控和即时通知。开发涉及服务器端实现、客户端连接及数据协议定义,注意安全、错误处理、性能和兼容性。随着实时应用需求增加,WebSocket在Java Web开发中的地位将更加重要。
|
4天前
|
Web App开发 Java 应用服务中间件
【Java Web】在 IDEA 中部署 Tomcat
【Java Web】在 IDEA 中部署 Tomcat
20 0
|
10天前
|
Java
java实现上位机与西门子PLC的通讯设置
这段代码创建了一个ZCAN_Transmit_Data数组,初始化并设置了数组中的第一个元素,包括写入数据、传输类型为1。然后,创建了一个ZCAN_CAN_FRAME对象,指定了CAN_ID和数据长度为8,并将十六进制字符串转换为字节数组填充到数据字段。将这个帧赋值给ZCAN_Transmit_Data对象。最后通过ZLGCAN接口发送数据,如果返回值不等于1,则抛出异常,否则返回发送结果。
|
13天前
|
安全 前端开发 Java
Java Web开发知识点学习总结
Java Web开发涉及Java基础、Servlet、JSP、数据库操作(SQL+JDBC)、MVC设计模式、Spring框架、Hibernate ORM、Web服务(SOAP&RESTful)、安全认证(HTTP Basic/Digest/OAuth)及性能优化(缓存、异步、负载均衡)。
15 3
|
16天前
|
XML JSON JavaScript
使用JSON和XML:数据交换格式在Java Web开发中的应用
【4月更文挑战第3天】本文比较了JSON和XML在Java Web开发中的应用。JSON是一种轻量级、易读的数据交换格式,适合快速解析和节省空间,常用于API和Web服务。XML则提供更强的灵活性和数据描述能力,适合复杂数据结构。Java有Jackson和Gson等库处理JSON,JAXB和DOM/SAX处理XML。选择格式需根据应用场景和需求。
|
16天前
|
前端开发 安全 Java
使用Java Web框架:Spring MVC的全面指南
【4月更文挑战第3天】Spring MVC是Spring框架的一部分,用于构建高效、模块化的Web应用。它基于MVC模式,支持多种视图技术。核心概念包括DispatcherServlet(前端控制器)、HandlerMapping(请求映射)、Controller(处理请求)、ViewResolver(视图解析)和ModelAndView(模型和视图容器)。开发流程涉及配置DispatcherServlet、定义Controller、创建View、处理数据、绑定模型和异常处理。
使用Java Web框架:Spring MVC的全面指南
|
18天前
|
Java
java中jar启动设置内存大小java -jar 设置堆栈内存大小
java中jar启动设置内存大小java -jar 设置堆栈内存大小
11 1
|
18天前
|
Java
销售业务管理系统【Web系统】(Java课设)
销售业务管理系统【Web系统】(Java课设)
13 5
|
28天前
|
Java Maven
Maven【2】( Web 工程依赖 Java 工程)(命令行操作)
Maven【2】( Web 工程依赖 Java 工程)(命令行操作)
20 0
|
26天前
|
Web App开发 前端开发 开发工具
介绍Web开发的基础知识
介绍Web开发的基础知识
26 7

热门文章

最新文章