Esempio n. 1
0
        public bool Evaluate(EvaluationContext evaluationContext, ref object state)
        {
            var operationContext = OperationContext.Current;
            var authContext      = AuthorizationContext.CreateDefaultAuthorizationContext(new List <IAuthorizationPolicy>());

            if (operationContext.EndpointDispatcher.ContractName == ServiceMetadataBehavior.MexContractName &&
                operationContext.EndpointDispatcher.ContractNamespace == "http://schemas.microsoft.com/2006/04/mex" &&
                operationContext.IncomingMessageHeaders.Action == "http://schemas.xmlsoap.org/ws/2004/09/transfer/Get")

            {
                var principal = new GenericPrincipal(new GenericIdentity("MexAccount"), null);
                authContext.Properties["Principal"]       = principal;
                evaluationContext.Properties["Principal"] = principal;
                return(true);
            }

            var user = evaluationContext.ClaimSets
                       .SelectMany(c => c.FindClaims(ClaimTypes.Name, Rights.PossessProperty))
                       .Select(c1 => c1.Resource.ToString())
                       .FirstOrDefault();

            var identity = (evaluationContext.Properties["Identities"] as IEnumerable <IIdentity>)?.First();

            using (var userStore = new NorthwindUsers.NorthwindUsers())
            {
                var roles = userStore.Users.SingleOrDefault(u => u.UserName == user)?.Roles.Select(r => r.RoleName).ToList();
                evaluationContext.Properties["Principal"] = new CustomPrincipal(identity, roles);
            }

            return(true);
        }
Esempio n. 2
0
        public override void Validate(string userName, string password)
        {
            if (userName == "Guest" && String.IsNullOrEmpty(password))
            {
                return;
            }

            using (var userStore = new NorthwindUsers.NorthwindUsers())
            {
                var base64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(password));
                var user   = userStore.Users.SingleOrDefault(u => u.UserName == userName);
                if (user != null && user.Password == base64)
                {
                    return;
                }

                throw new SecurityTokenValidationException();
            }
        }