亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

用JAAS 實現in Struts Web App(一)

2019-11-18 12:54:44
字體:
來源:轉載
供稿:網友

  JAAS參考資料中流行的文章是擴展JAAS實現類實例級授權
  
  但它是基于JDK1.3,與目前的JDK1.4,JDK1.5不兼容,例如其中的配置如下:
  
  The following assumes you are using JDK 1.3 and the files were extracted to
  the d:/JaasExample Directory. You will save some work by extracting the files
  to this directory otherwise you will have to modify the policy and the ResourceSecurity.xml
  policy files with the correct path names.
  
  1) Copy the jaas.jar and the jaasmod.jar to your JDK jre/lib/ext directory
  (i.e. D:/JDK1.3/jre/lib/ext).
  
  2) Add the following to the end of the java.security file located in JDK's
  jre/lib/security directory (i.e. D:/JDK1.3/jre/lib/security):
  auth.policy.PRovider=com.ibm.resource.security.auth.XMLPolicyFile
  
  3) Execute the run.bat file.
  
  1.4以后為policy.provider=PolicyFile。而且需要修改java.security文件
  
  我經過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.jspRedirect 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
  debug = "true".equalsIgnoreCase((String) options.get("debug"));
  }
  /**
  * Prompts the user for a userid and password.
  *
  * @return true if the authentication succeeded,
  * or false if this LoginModule should be ignored
  *
  * @exception FailedLoginException if the authentication fails.
  *
  * @exception LoginException if the <code>LoginModule<
  /code>
  * is unable to authenticate.
  */  public boolean login() throws LoginException {
  if (callbackHandler == null)
  throw new LoginException("Error: CallbackHandler cannot be null");
  Callback[] callbacks = new Callback[2];
  callbacks[0] = new NameCallback("userid: ");
  callbacks[1] = new PasswordCallback("password: ", false);
  try {
  callbackHandler.handle(callbacks);
  username = ((NameCallback) callbacks[0]).getName();
  char[] tmpPassword = ((PasswordCallback) callbacks[1]).getPassword();
  if (tmpPassword == null)
  {
  // treat a NULL password as an empty

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲高清免费观看高清完整版| 美女999久久久精品视频| 亚洲日本中文字幕免费在线不卡| 中文字幕亚洲一区二区三区| 秋霞成人午夜鲁丝一区二区三区| 日本免费久久高清视频| 亚洲精品电影久久久| 成人淫片在线看| 亚洲国产精彩中文乱码av| 亚洲精品一区中文字幕乱码| 亚洲欧洲免费视频| 亚洲国产欧美在线成人app| 久久精品国产一区二区三区| 韩日欧美一区二区| 精品视频中文字幕| 亚洲自拍在线观看| 欧美在线视频在线播放完整版免费观看| 美女视频黄免费的亚洲男人天堂| 久久久国产成人精品| 久久精品国产久精国产一老狼| 欧美成人午夜免费视在线看片| 亚洲美女性生活视频| 亚洲少妇中文在线| 欧美日韩免费在线观看| 国产精品久久久久久影视| 欧美影院久久久| 亚洲精品电影网| 国产精品高潮视频| 国产精品嫩草影院一区二区| 免费不卡在线观看av| 国产亚洲一级高清| 欧美在线视频播放| 色99之美女主播在线视频| 蜜月aⅴ免费一区二区三区| 亚洲最大福利网| 亚洲天堂视频在线观看| 日韩欧美在线视频日韩欧美在线视频| 欧美黄网免费在线观看| 欧美又大粗又爽又黄大片视频| 成人福利免费观看| 亚洲级视频在线观看免费1级| 日韩精品免费在线视频观看| 38少妇精品导航| 欧美成年人视频网站| 亚洲天堂男人的天堂| 久久久久久香蕉网| 日韩av三级在线观看| 亚洲视频日韩精品| 色偷偷88888欧美精品久久久| 疯狂做受xxxx高潮欧美日本| 欧美疯狂做受xxxx高潮| 亚洲午夜女主播在线直播| 成人h猎奇视频网站| 欧美老肥婆性猛交视频| 国产裸体写真av一区二区| 欧美激情一级欧美精品| 日韩欧美国产高清91| 中文在线资源观看视频网站免费不卡| 国产精品伦子伦免费视频| 91国内产香蕉| 中文字幕亚洲一区在线观看| 亚洲成avwww人| 亚洲三级av在线| 韩国国内大量揄拍精品视频| 亚洲少妇中文在线| 久久影视电视剧免费网站清宫辞电视| 日韩风俗一区 二区| 国产亚洲精品高潮| 欧美日在线观看| 丝袜一区二区三区| 亚洲精品日韩欧美| 亚洲午夜小视频| 日本aⅴ大伊香蕉精品视频| 欧美又大又粗又长| 成人福利在线视频| 国产成人精品一区二区在线| 91精品一区二区| 欧美一区二区大胆人体摄影专业网站| 欧美成人激情视频| 国产精品美女主播| 最近2019年日本中文免费字幕| 91久久精品美女| 麻豆国产精品va在线观看不卡| 亚洲第一精品福利| 国产性猛交xxxx免费看久久| 成人做爰www免费看视频网站| 精品视频—区二区三区免费| 日韩风俗一区 二区| 久久久精品久久久久| 26uuu另类亚洲欧美日本老年| 亚洲字幕一区二区| 亚洲欧美激情视频| 国产不卡精品视男人的天堂| 欧美激情在线一区| 欧洲中文字幕国产精品| 亚洲精品视频免费在线观看| 欧美高清视频免费观看| 国产成人综合精品| 亚洲最大的成人网| 亚洲91精品在线观看| 日韩在线视频导航| 一区二区三区国产在线观看| 久久在线观看视频| 日韩在线视频观看| 黑人精品xxx一区| 欧美性xxxx极品高清hd直播| 欧美超级乱淫片喷水| 97久久国产精品| 国产日韩在线播放| 成人福利视频网| 亚洲最新中文字幕| 欧美性受xxxx黑人猛交| 91色视频在线导航| 亚洲乱码一区二区| 91av免费观看91av精品在线| 久久成年人视频| 日韩经典中文字幕在线观看| 国产91在线播放精品91| 亚洲人成网站在线播| 欧美大片在线免费观看| 国产午夜精品视频免费不卡69堂| 成人网在线视频| 亚洲高清av在线| 欧美国产日韩中文字幕在线| 亚洲午夜女主播在线直播| www.xxxx精品| 国产精品亚洲视频在线观看| 96pao国产成视频永久免费| 国产精品∨欧美精品v日韩精品| 欧美日韩免费观看中文| 久久视频在线直播| 亚洲综合国产精品| 国产精品高潮呻吟久久av野狼| 亚洲色图狂野欧美| 91嫩草在线视频| 91禁国产网站| 欧洲日本亚洲国产区| 美日韩精品免费视频| 精品美女国产在线| 中文字幕av一区二区三区谷原希美| 亚洲新声在线观看| 日韩av电影在线网| 91在线无精精品一区二区| 亚洲男人av在线| 国产精品久久久久国产a级| 色婷婷久久一区二区| 亚洲精品av在线播放| 4438全国亚洲精品在线观看视频| 一区二区三区视频观看| 亚洲3p在线观看| 久久久精品国产网站| 日韩成人av网址| 日本高清视频精品| 国产视频丨精品|在线观看| 色中色综合影院手机版在线观看| 国产一区二区三区在线观看视频| 成人精品在线视频| 国产精品欧美日韩一区二区| 国产欧美va欧美va香蕉在| 欧美激情一级精品国产| 日本成人在线视频网址| 欧美日韩国产页| 欧美国产亚洲视频| 日韩在线精品一区|