⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmepunit.java

📁 一个完整的XACML工程,学习XACML技术的好例子!
💻 JAVA
字号:
/*
* Copyright (c) 2006, University of Kent
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without 
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this 
* list of conditions and the following disclaimer.
* 
* Redistributions in binary form must reproduce the above copyright notice, 
* this list of conditions and the following disclaimer in the documentation 
* and/or other materials provided with the distribution. 
*
* 1. Neither the name of the University of Kent nor the names of its 
* contributors may be used to endorse or promote products derived from this 
* software without specific prior written permission. 
*
* 2. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS  
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
* PURPOSE ARE DISCLAIMED. 
*
* 3. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
* POSSIBILITY OF SUCH DAMAGE.
*
* 4. YOU AGREE THAT THE EXCLUSIONS IN PARAGRAPHS 2 AND 3 ABOVE ARE REASONABLE
* IN THE CIRCUMSTANCES.  IN PARTICULAR, YOU ACKNOWLEDGE (1) THAT THIS
* SOFTWARE HAS BEEN MADE AVAILABLE TO YOU FREE OF CHARGE, (2) THAT THIS
* SOFTWARE IS NOT "PRODUCT" QUALITY, BUT HAS BEEN PRODUCED BY A RESEARCH
* GROUP WHO DESIRE TO MAKE THIS SOFTWARE FREELY AVAILABLE TO PEOPLE WHO WISH
* TO USE IT, AND (3) THAT BECAUSE THIS SOFTWARE IS NOT OF "PRODUCT" QUALITY
* IT IS INEVITABLE THAT THERE WILL BE BUGS AND ERRORS, AND POSSIBLY MORE
* SERIOUS FAULTS, IN THIS SOFTWARE.
*
* 5. This license is governed, except to the extent that local laws
* necessarily apply, by the laws of England and Wales.
*/
package issrg.pba.rbac.policies;


/**
 * This class represents a MMEP unit -- it includes a forbiddenCardinality and a privilege set 
 * which comprises several mutually exclusive privileges with the forbiddenCardinality.  
 *
 * @author W.Xu
 * @version 0.1
 */
  public class MMEPUnit {

      private int forbiddenCardinality;
      private int matchCount = 0;  
      java.util.Vector mmep;  // this is a vector of class UserAction
      java.util.Vector mmepBackup;

    /**
     * This constructor creates the MMEPUnit object. 
     *
     * @params forbiddenCardinality is the forbidden cardinality of this MMEP unit.  
     * @params mmep is a vector of MMEP i.e. mutually exclusive privileges. 
     * 
     */
      public MMEPUnit(int forbiddenCardinality, java.util.Vector mmep) {
          this.forbiddenCardinality = forbiddenCardinality;
          this.mmep = mmep;  
      }

     /**
      * This method returns the current match count of MMEP, 
      * i.e. until now, how many MMEP have been matched by the user actions this MMEP Unit. 
      */
      public int getMatchCount(){
          return matchCount;
      }

     /**
      * This method starts a new matching between user actions and this MMEP unit.  
      */
      public void startMatch(){
          mmepBackup = (java.util.Vector) mmep.clone();
          matchCount = 0;
      }

    /**
     * This method compare mmep with the input user action and target, 
     * to determine if this action and target pair match any mmep privileges. Once matched, matchCount is increased by 1, 
     * and if matchCount reaches forbiddenCardinality, then this MMEP rule is broken by the user, true will be returned; 
     * otherwise, false will be returned. 
     * 
     * return true if this user action and target matches any one of the MMEP privilege and the forbeddenCardinality
     * is reached; otherwise return false.  
     */
      public boolean MMEPMatches(String action, String target) {
          if (mmepBackup == null) { 
              return false; 
          }

          for (int i=mmepBackup.size()-1; i>=0 ; --i )    {
              UserAction ua = (UserAction) mmepBackup.get(i); 
              if ( (ua.getAction()).compareTo(action) == 0 && ua.getTarget().compareTo(target) ==0 )  {  // they are equal 
                mmepBackup.remove(i); 
                matchCount++;
                if (matchCount >= forbiddenCardinality) {
                  // System.out.println("rule broken " );
                  return true; 
                }
                break; 
              }
          }

          return false; 
      }

     /**
      * This method is to output all the MMEP action information as a String. This is for testing purposes. 
      */
      public String toString(){
		// testing code here
		  int size = mmep.size();
		  StringBuffer result = new StringBuffer();
		  for (int i = 0; i< size ; i++ ) {
			    UserAction ua = (UserAction) mmep.get(i);
				result.append ( ua.toString() );
		  }
		  
		  return result.toString();
	  }  

  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -