示例#1
0
        private async Task <AuthorizationPolicyResult> Validate(TicketLineParameter ticketLineParameter, ResourceSet resource, ClaimTokenParameter claimTokenParameter)
        {
            if (resource.Policies == null || !resource.Policies.Any())
            {
                return(new AuthorizationPolicyResult
                {
                    Type = AuthorizationPolicyResultEnum.Authorized
                });
            }

            foreach (var authorizationPolicy in resource.Policies)
            {
                var result = await _basicAuthorizationPolicy.Execute(ticketLineParameter, authorizationPolicy, claimTokenParameter);

                if (result.Type == AuthorizationPolicyResultEnum.Authorized)
                {
                    return(result);
                }
            }

            return(new AuthorizationPolicyResult
            {
                Type = AuthorizationPolicyResultEnum.NotAuthorized
            });
        }
示例#2
0
        public async Task <AuthorizationPolicyResult> IsAuthorized(Ticket validTicket, string clientId, List <ClaimTokenParameter> claimTokenParameters)
        {
            if (validTicket == null)
            {
                throw new ArgumentNullException(nameof(validTicket));
            }

            if (string.IsNullOrWhiteSpace(clientId))
            {
                throw new ArgumentNullException(nameof(clientId));
            }

            var resourceSet = await _resourceSetRepository.Get(validTicket.ResourceSetId);

            if (resourceSet == null)
            {
                throw new BaseUmaException(ErrorCodes.InternalError,
                                           string.Format(ErrorDescriptions.TheResourceSetDoesntExist, validTicket.ResourceSetId));
            }

            if (resourceSet.Policies == null ||
                !resourceSet.Policies.Any())
            {
                return(new AuthorizationPolicyResult
                {
                    Type = AuthorizationPolicyResultEnum.Authorized
                });
            }

            foreach (var authorizationPolicy in resourceSet.Policies)
            {
                var result = await _basicAuthorizationPolicy.Execute(validTicket, authorizationPolicy, claimTokenParameters);

                if (result.Type != AuthorizationPolicyResultEnum.Authorized)
                {
                    _umaServerEventSource.AuthorizationPolicyFailed(authorizationPolicy.Id);
                    return(result);
                }
            }

            return(new AuthorizationPolicyResult
            {
                Type = AuthorizationPolicyResultEnum.Authorized
            });
        }
示例#3
0
        public async Task When_Passing_Null_Parameters_Then_Exceptions_Are_Thrown()
        {
            // ARRANGE
            InitializeFakeObjects();

            // ACTS & ASSERTS
            await Assert.ThrowsAsync <ArgumentNullException>(() => _basicAuthorizationPolicy.Execute(null, null, null, null));

            await Assert.ThrowsAsync <ArgumentNullException>(() => _basicAuthorizationPolicy.Execute("openid", null, null, null));

            await Assert.ThrowsAsync <ArgumentNullException>(() => _basicAuthorizationPolicy.Execute("openid", new ResourceSet(), null, null));
        }
示例#4
0
        public void When_Passing_Null_Parameters_Then_Exceptions_Are_Thrown()
        {
            // ARRANGE
            InitializeFakeObjects();

            // ACTS & ASSERTS
            Assert.ThrowsAsync <ArgumentNullException>(() => _basicAuthorizationPolicy.Execute(null, null, null));
            Assert.ThrowsAsync <ArgumentNullException>(() => _basicAuthorizationPolicy.Execute(new Ticket(), null, null));
        }
示例#5
0
 private Task <ResourceValidationResult> Validate(string openidProvider, TicketLineParameter ticketLineParameter, ResourceSet resource, ClaimTokenParameter claimTokenParameter)
 {
     return(_basicAuthorizationPolicy.Execute(openidProvider, resource, ticketLineParameter, claimTokenParameter));
 }