public static ResponseType Evaluate(RequestType request) { PolicyCombAlg[XacmlPolicyCombAlg.FIRST_APPLICABLE] = new FirstApplicablePolicy(); /// deserijalizacija xml dokumenta koji specificira autorizacionu politiku //XmlSerializer serializer = new XmlSerializer(typeof(PolicyType)); //StreamReader reader = new StreamReader("rule1.main.xml"); ////StreamReader reader = new StreamReader("TimeRange.checkTimeInRange.xml"); //var value = serializer.Deserialize(reader); ///// kreiranje objekta koji predstavlja definisanu politiku //PolicyType policy = new PolicyType(); //policy = value as PolicyType; NetTcpBinding binding = new NetTcpBinding(); binding.CloseTimeout = new TimeSpan(0, 10, 0); binding.OpenTimeout = new TimeSpan(0, 10, 0); binding.ReceiveTimeout = new TimeSpan(0, 10, 0); binding.SendTimeout = new TimeSpan(0, 10, 0); string address = "net.tcp://localhost:6000/PapService"; if (policySet.Items == null) { using (PapProxy proxy = new PapProxy(binding, new EndpointAddress(new Uri(address)))) { policySet = proxy.Load(); Console.WriteLine("-------------------------------------"); Console.WriteLine("\nPolicy loaded..."); } } List <PolicyType> policiesL = new List <PolicyType>(); foreach (PolicyType policy in policySet.Items) { policiesL.Add(policy); } PolicyType[] policies = policiesL.ToArray(); DecisionType decision = PolicyCombAlg[policySet.PolicyCombiningAlgId].Evaluate(policies, request); Console.WriteLine("\nAccess decision: {0}", decision.ToString()); ResponseType XacmlResponse = new ResponseType(); ResultType result = new ResultType(); result.Decision = decision; XacmlResponse.Result = new ResultType[1]; XacmlResponse.Result[0] = result; return(XacmlResponse); }
public PolicySetType Load() { XmlSerializer serializer = new XmlSerializer(typeof(PolicySetType)); StreamReader reader = new StreamReader("rule1.main.xml"); //StreamReader reader = new StreamReader("TimeRange.checkTimeInRange.xml"); var value = serializer.Deserialize(reader); /// kreiranje objekta koji predstavlja definisanu politiku PolicySetType policy = new PolicySetType(); try { policy = value as PolicySetType; } catch (Exception) { policy = null; } Console.WriteLine("Policy set loaded"); return(policy); }