/** Login Configuration file **/

// application 1


other {
   com.intel.security.auth.module.LoginModule1 required AAAA=true BBB=false;
   com.intel.security.auth.module.LoginModule2 optional debug=true;
   com.intel.security.auth.module.LoginModule3 sufficient;
   /*some comments*/
};

Login1	{ 
		com.intel.security.auth.module.LoginModule1 required debug1=true test1=false; 
		};

Login2 
	{ 
		com.intel.security.auth.module.LoginModule2 required debug1="true" test1="false"; 
	};

Login3 { com.intel.security.auth.module.LoginModule3 required; 
	};

Login4 { 
	com.intel.security.auth.module.LoginModule4 required debug1=true test1=false; };

Login5 
	{ com.intel.security.auth.module.LoginModule5 required debug1=true test1=false; };

Login6 { com.intel.security.auth.module.LoginModule6 required debug1=true test1=false; };

// application 7

Login7 { 
   com.intel.security.auth.module.LoginModule1 required AAAA="true" BBB=false;
   com.intel.security.auth.module.LoginModule2 optional debug2=true;
   com.intel.security.auth.module.LoginModule3 sufficient debug2="false";
   com.intel.security.auth.module.LoginModule4 requisite
					    useTicketCache="true" 
   						ticketCache="${user.home}${/}tickets";
   //some comments
};

