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

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

用JAAS 實現in Struts Web App(二)

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

  5. 實現xmlPolicyFile類。
  
  public class XMLPolicyFile extends Policy implements JAASConstants {
  PRivate Document doc = null;
  //private CodeSource noCertCodeSource=null;
  /*
  * constrUCtor
  * refresh()
  */  public XMLPolicyFile(){
  refresh();
  }  public PermissionCollection getPermissions(CodeSource arg0) {
  // TODO Auto-generated method stub
  return null;
  }
  /*
  * Creates a DOM tree document from the default XML file or
  * from the file specified by the system property,
  * <code>com.ibm.resource.security.auth.policy</code>. This
  * DOM tree document is then used by the
  * <code>getPermissions()</code> in searching for permissions.
  *
  * @see javax.security.auth.Policy#refresh()
  */  public void refresh() {
  FileInputStream fis = null;
  try {
  // Set up a DOM tree to query
  fis = new FileInputStream(AUTH_SECURITY_POLICYXMLFILE);
  InputSource in = new InputSource(fis);
  DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
  dfactory.setNamespaceAware(true);
  doc = dfactory.newDocumentBuilder().parse(in);
  } catch (Exception e) {
  e.printStackTrace();
  throw new RuntimeException(e.getMessage());
  } finally {
  if(fis != null) {
  try { fis.close(); } catch (IOException e) {}
  
  }
  }
  }  public PermissionCollection getPermissions(Subject subject,CodeSource codeSource) {
  ResourcePermissionCollection collection = new ResourcePermissionCollection();
  try {
  // Iterate through all of the subjects principals
  Iterator principalIterator = subject.getPrincipals().iterator();
  while(principalIterator.hasNext()){
  Principal principal = (Principal)principalIterator.next();
  // Set up the XPath string to retrieve all the relevant permissions
  // Sample xpath string: "/policy/grant[@codebase=/"sample_actions.jar/"]/principal[@classname=/"com.fonseca.security.SamplePrincipal/"][@name=/"testUser/"]/permission"
  StringBuffer xpath = new StringBuffer();
  xpath.append("/policy/grant/principal[@classname=/"");
  xpath.append(principal.getClass().getName());
  xpath.append("/"][@name=/"");
  xpath.append(principal.getName());
  xpath.append("/"]/permission");
  //System.out.println(xpath.toString());
  NodeIterator nodeIter = XPathAPI.selectNodeIterator(doc, xpath.toString());
  Node node = null;
  while( (node = nodeIter.nextNode()) != null ) {
  //here
  CodeSource codebase=getCodebase(node.getParentNode().getParentNode());
  if (codebase!=null codebase.implies(codeSource)){
  Permission permission = getPermission(node);
  collection.add(permission);
  }
  }
  }
  } catch (Exception e) {
  e.printStackTrace();
  throw new RuntimeException(e.getMessage());
  }
  if(collection != null)
  return collection;
  else {
  // If the permission is not found here then delegate it
  // to the standard java Policy class instance.
  Policy policy = Policy.getPolicy();
  return policy.getPermissions(codeSource);
  }
  }
  /**
  * Returns a Permission instance defined by the provided
  * permission Node attributes.
  */
  private Permission getPermission(Node node) throws Exception {
  NamedNodeMap map = node.getAttributes();
  Attr attrClassname = (Attr) map.getNamedItem("classname");
  Attr attrName = (Attr) map.getNamedItem("name");
  Attr attrActions = (Attr) map.getNamedItem("actions");
  Attr attrRelationship = (Attr) map.getNamedItem("relationship");
  if(attrClassname == null)
  throw new RuntimeException();
  Class[] types = null;
  Object[] args = null;
  // Check if the name is specified
  // if no name is specified then because
  // the types and the args variables above
  // are null the default constructor is used.
  if(attrName != null) {
  String name = attrName.getValue();
  // Check if actions are specified
  // then setup the array sizes accordingly
  if(attrActions != null) {
  String actions = attrActions.getValue();
  // Check if a relationship is specified
  // then setup the array sizes accordingly
  if(attrRelationship == null) {
  types = new Class[2];
  args = new Object[2];
  } else {
  types = new Class[3];
  args = new Object[3];
  String relationship = attrRelationship.getValue();
  types[2] = relationship.getClass();
  args[2] = relationship;
  }
  types[1] = actions.getClass();
  args[1] = actions;
  } else {
  
  types = new Class[1];
  args = new Object[1];
  
  }
  types[0] = name.getClass();
  args[0] = name;
  }   String classname = attrClassname.getValue();
  Class permissionClass = Class.forName(classname);
  Constructor constructor = permissionClass.getConstructor(types);
  return (Permission) constructor.newInstance(args);
  }
  /**
  * Returns a CodeSource object defined by the provided
  * grant Node attributes.
  */
  private java.security.CodeSource getCodebase(Node node) throws Exception {
  Certificate[] certs = null;
  URL location;
  if(node.getNodeName().equalsIgnoreCase("grant")) {
  NamedNodeMap map = node.getAttributes();
  Attr attrCodebase = (Attr) map.getNamedItem("codebase");
  if(attrCodebase != null) {
  String codebaseValue = attrCodebase.getValue();
  location = new URL(codebaseValue);
  return new CodeSource(location,certs);
  }
  }
  return null;
  }
  }
  
  6.繼續Principal類PrincipalUser
  public class PrincipalUser implements Principal {
  private String name;
  /**
  *
  * @param name the name for this principal.
  *
  * @exception InvalidParameterException if the <code>name</code>
  * is <code>null</code>.
  */  public PrincipalUser(String name) {
  if (name == null)
  throw new InvalidParameterException("name cannot be null");
  //search role of this name.
  this.name = name;
  }
  /**
  * Returns the name for this <code>PrincipalUser</code>.
  *
  * @return the name for this <code>PrincipalUser</code>
  */
  public String getName() {
  return name;
  }
  /**
  *
  */  public int hashCode() {
  return name.hashCode();
  }
  }
  
  7.繼續Permission和PermissionCollection類
  public class ResourcePermission extends Permission {
  static final public String OWNER_RELATIONSHIP = "OWNER";
  static private int READ  = 0x01;
  static private int WRITE  = 0x02;
  static private int EXECUTE = 0x04;
  static private int CREATE = 0x08;
  static private int DELETE = 0x10;
  static private int DEPLOY = 0x16;
  static private int CONFIRM = 0x24;
  static final public String READ_ACTION = "read";
  static final public String WRITE_ACTION  = "write";
  static final public String EXECUTE_ACTION = "execute";
  static final public String CREATE_ACTION = "create";
  static final public String DELETE_ACTION = "delete";
  static final public String DEPLOY_ACTION = "deploy";
  static final public String CONFIRM_ACTION = "confirm";
  protected int mask;  protected Resource resource;
  protected Subject subject;
  /**
  * Constructor for ResourcePermission
  */
  public ResourcePermission(String name, String actions, Resource resource, Subject subject) {
  super(name);
  this

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人a在线观看| 久久久久久久久久久亚洲| 亚洲精品网址在线观看| 欧美日韩成人在线播放| 国产成人免费91av在线| 国产香蕉一区二区三区在线视频| 2018中文字幕一区二区三区| 538国产精品视频一区二区| 久久久国产精彩视频美女艺术照福利| 国产精品最新在线观看| 日产精品99久久久久久| 国产精品久久久久久久久借妻| 国产成人精品a视频一区www| 91视频88av| 亚洲一区二区三区在线免费观看| 中文字幕日本欧美| 亚洲欧美综合区自拍另类| 97视频免费在线看| 92裸体在线视频网站| 羞羞色国产精品| 亚洲成人网av| 国产婷婷97碰碰久久人人蜜臀| 久久中文字幕在线| 国产精品欧美一区二区三区奶水| 日韩av有码在线| 92看片淫黄大片看国产片| 欧美日韩电影在线观看| 欧美亚洲另类视频| 欧美日韩国产中文精品字幕自在自线| 日韩电影中文字幕在线| 992tv成人免费视频| 欧美交受高潮1| 亚洲人成电影网| 国内精品久久久久久| 日韩精品在线免费播放| 3344国产精品免费看| 97久久精品人搡人人玩| 这里只有视频精品| 亚洲白拍色综合图区| 亚洲伊人第一页| 欧美一级bbbbb性bbbb喷潮片| 国产美女精品视频免费观看| 精品亚洲一区二区三区| 日本欧美国产在线| 国产精品久久久久免费a∨| 色偷偷噜噜噜亚洲男人的天堂| 国产美女精品视频| 午夜精品久久久久久久久久久久久| 在线播放精品一区二区三区| 欧美成人免费在线视频| 亚洲电影第1页| 欧美激情一二区| 日韩一级裸体免费视频| 日韩中文字幕免费视频| 久久久av免费| 中文字幕精品在线视频| 日韩av日韩在线观看| 亚洲人成77777在线观看网| 不卡毛片在线看| 国产欧美精品在线| 日韩中文字幕亚洲| 国产剧情日韩欧美| 欧美多人爱爱视频网站| 欧美激情va永久在线播放| 欧美激情免费视频| 午夜精品久久久久久久久久久久久| 欧美国产极速在线| 亚洲最大的网站| 亚洲一区二区三区久久| 精品网站999www| 欧美性极品xxxx做受| 亚洲欧美精品一区二区| 精品久久香蕉国产线看观看gif| 亚洲精选中文字幕| 97人人爽人人喊人人模波多| 日韩av在线免费看| 91av在线网站| 日韩电影中文字幕在线| 第一福利永久视频精品| 国产精品久久久av久久久| 97超碰色婷婷| 欧美激情影音先锋| 亚洲国产一区二区三区四区| 日韩av片永久免费网站| 日韩在线视频导航| 日韩成人av一区| 亚洲第一区第二区| 97高清免费视频| 欧美日韩美女视频| 成人午夜高潮视频| 久久男人av资源网站| 欧日韩不卡在线视频| 久久91超碰青草是什么| 亚洲男女自偷自拍图片另类| 日韩电视剧免费观看网站| 日韩电影第一页| 亚洲人成网在线播放| 欧洲精品毛片网站| 色av中文字幕一区| 午夜精品久久久久久久白皮肤| 热99精品里视频精品| 亚洲图片在区色| 欧美激情一级精品国产| 国产成人在线视频| 亚洲成avwww人| 欧美另类老女人| 在线观看久久av| 91精品在线播放| 日韩欧美亚洲综合| 欧美日韩999| 亚洲国产精品小视频| 亚洲午夜未满十八勿入免费观看全集| 欧美日韩国产一区中文午夜| 欧美在线视频免费播放| 欧美在线视频播放| 日韩电影网在线| 中文字幕久精品免费视频| 欧美一区视频在线| 国产精品色婷婷视频| 91久久在线播放| 日本一区二区在线免费播放| 国产亚洲精品综合一区91| 欧美一级大片在线观看| 欧美在线免费观看| 亚洲乱码av中文一区二区| 热门国产精品亚洲第一区在线| 精品一区二区三区四区| 亚洲国产精久久久久久| 91av在线精品| 日韩欧美aⅴ综合网站发布| 成人午夜激情网| 久久久国产精品x99av| 色偷偷av一区二区三区乱| 草民午夜欧美限制a级福利片| 亚洲第一男人天堂| 成人有码在线视频| 欧美wwwxxxx| 久久久久久久久久久久久久久久久久av| 色播久久人人爽人人爽人人片视av| 欧美成人一区二区三区电影| 高清在线视频日韩欧美| www.国产精品一二区| 在线视频欧美日韩精品| 国产精品日韩一区| 欧美成人一区二区三区电影| 亚洲色图欧美制服丝袜另类第一页| 国产剧情久久久久久| 国产精品欧美风情| 国产精品免费在线免费| 欧美精品成人91久久久久久久| 日本精品一区二区三区在线播放视频| 91高清免费在线观看| 欧美日本黄视频| 国产伦精品一区二区三区精品视频| 亚洲高清福利视频| 日韩精品视频在线观看免费| 欧美国产精品日韩| 亚洲女人被黑人巨大进入al| 亚洲精品小视频在线观看| 91精品国产91久久久久久| 亚洲欧美日韩一区二区在线| 亚洲第一区中文字幕| 久久精彩免费视频| 日本精品视频在线播放|