AddIssuer() public method

public AddIssuer ( ClaimsPolicyEngine.Model.Issuer issuer ) : void
issuer ClaimsPolicyEngine.Model.Issuer
return void
コード例 #1
0
        public void ShouldMatchInputClaim()
        {
            var store = new MockPolicyStore();
            ClaimsPolicyEvaluator evaluator = new ClaimsPolicyEvaluator(store);

            InputPolicyClaim inputClaim = new InputPolicyClaim(this.issuer, this.inputClaimType, "myInputClaim");
            OutputPolicyClaim outputClaim = new OutputPolicyClaim(this.outputClaimType, "myOutputClaimValue");
            PolicyRule rule = new PolicyRule(AssertionsMatch.Any, new[] { inputClaim }, outputClaim);

            var policyScope = new PolicyScope(new Uri("http://myScope"), new[] { rule });
            policyScope.AddIssuer(new Issuer("http://originalIssuer", string.Empty, "OriginalIssuer"));
            store.RetrieveScopesReturnValue = new List<PolicyScope>() { policyScope };

            IEnumerable<Claim> evaluatedOutputClaims = evaluator.Evaluate(new Uri("http://myScope"), new[] { new Claim("http://myInputClaimType", "myInputClaim", string.Empty, "http://myInputClaimIssuer", "http://originalIssuer") });

            Assert.IsNotNull(evaluatedOutputClaims);
            Assert.AreEqual(1, evaluatedOutputClaims.Count());
            Assert.AreEqual("http://myOutputClaimType", evaluatedOutputClaims.ElementAt(0).ClaimType);
            Assert.AreEqual("myOutputClaimValue", evaluatedOutputClaims.ElementAt(0).Value);
            Assert.AreEqual("http://myInputClaimIssuer", evaluatedOutputClaims.ElementAt(0).Issuer);
            Assert.AreEqual("OriginalIssuer", evaluatedOutputClaims.ElementAt(0).OriginalIssuer);
        }
コード例 #2
0
ファイル: XmlPolicyStore.cs プロジェクト: AshD/authbridge
        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;
        }