Ejemplo n.º 1
0
        public PolicyRule(AssertionsMatch assertionsMatch, IEnumerable <InputPolicyClaim> inputClaims, OutputPolicyClaim outputClaim)
        {
            if (outputClaim.CopyFromInput && inputClaims.Count() > 1)
            {
                throw new PolicyRuleException(Resources.CopyFromInputWithMultipleInputClaims);
            }

            this.AssertionsMatch = assertionsMatch;
            this.OutputClaim     = outputClaim;
            this.InputClaims     = new List <InputPolicyClaim>();
            this.InputClaims.AddRange(inputClaims);
        }
        public PolicyRule(AssertionsMatch assertionsMatch, IEnumerable<InputPolicyClaim> inputClaims, OutputPolicyClaim outputClaim)
        {
            if (outputClaim.CopyFromInput && inputClaims.Count() > 1)
            {
                throw new PolicyRuleException(Resources.CopyFromInputWithMultipleInputClaims);
            }

            this.AssertionsMatch = assertionsMatch;
            this.OutputClaim = outputClaim;
            this.InputClaims = new List<InputPolicyClaim>();
            this.InputClaims.AddRange(inputClaims);
        }
Ejemplo n.º 3
0
        private static PolicyScope RetrieveScope(XElement scopeElement)
        {
            IDictionary <string, string> claimTypes = RetrieveReferences(scopeElement.Element("claimTypes"), "claimType", "displayName", "fullName");

            IDictionary <string, Issuer> issuers = new Dictionary <string, Issuer>();
            PolicyScope scope = new PolicyScope(new Uri(scopeElement.Attribute("uri").Value), new List <PolicyRule>());

            var issuerElements = scopeElement.Element("issuers").Descendants("issuer");

            foreach (var item in issuerElements)
            {
                Issuer issuer = new Issuer(
                    item.Attribute("uri").Value,
                    item.Attribute("thumbprint").Value.ToUpperInvariant(),
                    item.Attribute("displayName").Value);

                scope.AddIssuer(issuer);
                issuers.Add(issuer.DisplayName, issuer);
            }

            foreach (var item in claimTypes)
            {
                scope.AddClaimType(new ClaimType(item.Value, item.Key));
            }

            foreach (XElement ruleElement in scopeElement.Element("rules").Descendants("rule"))
            {
                AssertionsMatch assertionsMatch            = RetrieveRuleAssertionsMatch(ruleElement);
                IEnumerable <InputPolicyClaim> inputClaims = RetrieveInputClaims(ruleElement, issuers, claimTypes);
                OutputPolicyClaim outputClaim = RetrieveOutputClaim(ruleElement, claimTypes);

                scope.AddRule(new PolicyRule(assertionsMatch, inputClaims, outputClaim));
            }

            return(scope);
        }