<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    子在川上曰

      逝者如斯夫不舍晝夜
    隨筆 - 71, 文章 - 0, 評論 - 915, 引用 - 0
    數據加載中……

    JAAS在Java Web Start中的設置

    文/陳剛 from www.chengang.com.cn

    一、前言

      我這個AdminConsole項目是用Java Web Start(簡稱JWS)來讓用戶訪問的,后來在用戶登錄部份用到了JAAS,而JAAS有一個登錄配置文件的設定。過去,我一直是在Eclipse的Run里做設置“-Djava.security.auth.login.config=D:\wxxr\login.config”,如下圖:

      但這只是權宜之計,在將項目從本地以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=" ........  
     </resources>

    或者

     <resources>
      <j2se version="1.4+" href="
      <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在服務器上的位置如下圖:


      注: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

    posted on 2006-03-07 14:53 陳剛 閱讀(1366) 評論(0)  編輯  收藏 所屬分類: Java

    主站蜘蛛池模板: 亚洲精品国精品久久99热| 亚洲高清免费在线观看| 国产免费午夜a无码v视频| 亚洲人成77777在线观看网| 国产免费一区二区三区| 亚洲精品中文字幕无码AV| 99精品视频在线观看免费专区| 亚洲熟妇中文字幕五十中出| 男女拍拍拍免费视频网站| 亚洲国产黄在线观看| 黄色网址免费在线观看| 自拍偷自拍亚洲精品第1页| 又黄又大的激情视频在线观看免费视频社区在线 | 亚洲性线免费观看视频成熟| 67pao强力打造67194在线午夜亚洲| 日本卡1卡2卡三卡免费| 亚洲自偷精品视频自拍| 免费在线观看的网站| 亚洲国产成人久久综合| 亚洲国产精品自在拍在线播放| 国产日韩AV免费无码一区二区三区| 国产成人精品久久亚洲| 无码AV片在线观看免费| 亚洲精品福利网站| 青苹果乐园免费高清在线| 国产成人精品亚洲| 亚洲日产韩国一二三四区| 日本h在线精品免费观看| 亚洲精品欧美综合四区| 亚洲一区二区三区在线观看精品中文 | 亚洲日本一线产区和二线| 国产一级理论免费版| 久久精品无码免费不卡| 亚洲短视频在线观看| 国产精品二区三区免费播放心| 久久99久久成人免费播放| 亚洲成在人线电影天堂色| 四虎影视免费永久在线观看| a级黄色毛片免费播放视频| 亚洲天堂2017无码中文| 亚洲国产一区二区视频网站|