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); }
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); }