ClaimsPolicyEngine.ClaimsPolicyEvaluator.Evaluate C# (CSharp) Method

Evaluate() public method

public Evaluate ( Uri scope, IEnumerable inputClaims ) : IEnumerable
scope System.Uri
inputClaims IEnumerable
return IEnumerable
        public IEnumerable<Claim> Evaluate(Uri scope, IEnumerable<Claim> inputClaims)
        {
            if (scope == null)
            {
                throw new ArgumentNullException(nameof(scope));
            }

            if (!inputClaims.Any())
            {
                return Enumerable.Empty<Claim>();
            }

            IEnumerable<PolicyScope> policyScopes = this.store.RetrieveScopes();

            PolicyScope mappingScope = policyScopes.FirstOrDefault(s => s.Uri == scope);
            if (mappingScope == null)
            {
                throw new ClaimsPolicyEvaluationException(string.Format(CultureInfo.CurrentUICulture, Resources.ScopeNotFound, scope));
            }

            return MapClaims(inputClaims, mappingScope);
        }

Usage Example

        public void ShoudMatchInputClaimWithAssertionMatchAll()
        {
            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.All, new[] { inputClaim }, outputClaim);
            store.RetrieveScopesReturnValue = new List<PolicyScope>() { new PolicyScope(new Uri("http://myScope"), new[] { rule }) };

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

            Assert.IsNotNull(evaluatedOutputClaims);
            Assert.AreEqual(1, evaluatedOutputClaims.Count());
            Assert.AreEqual("http://myOutputClaimType", evaluatedOutputClaims.ElementAt(0).ClaimType);
            Assert.AreEqual("myOutputClaimValue", evaluatedOutputClaims.ElementAt(0).Value);
        }
All Usage Examples Of ClaimsPolicyEngine.ClaimsPolicyEvaluator::Evaluate