コード例 #1
0
        public override bool CheckAccess(OperationContext operationContext, ref Message message)
        {
            var basicState = new BasicAuthenticationState(operationContext, GetRealm(ref message));

            if (!basicState.IsRequestBasicAuth)
            {
                return(UnauthorizedResponse(basicState));
            }

            string password;

            if (!GetPassword(ref message, basicState.Username, out password))
            {
                return(UnauthorizedResponse(basicState));
            }

            if (basicState.Password != password)
            {
                // According to RFC2616, a forbidden response should be in response to valid credentials where the
                // authenticated user is not allowed to use the site but WCF responds with Forbbiden with an incorrect
                // password. We should be returning Unauthorized, but this matches WCF behavior.
                return(ForbiddenResponse(basicState));
            }

            return(Authorized(basicState, operationContext, ref message));
        }
コード例 #2
0
        private bool Authorized(BasicAuthenticationState basicState, OperationContext operationContext, ref Message message)
        {
            object identitiesListObject;
            if (!operationContext.ServiceSecurityContext.AuthorizationContext.Properties.TryGetValue("Identities",
                out identitiesListObject))
            {
                identitiesListObject = new List<IIdentity>(1);
                operationContext.ServiceSecurityContext.AuthorizationContext.Properties.Add("Identities", identitiesListObject);
            }

            var identities = identitiesListObject as IList<IIdentity>;
            identities.Add(new GenericIdentity(basicState.Username, "GenericPrincipal"));

            return true;
        }
コード例 #3
0
        private bool Authorized(BasicAuthenticationState basicState, OperationContext operationContext, ref Message message)
        {
            object identitiesListObject;

            if (!operationContext.ServiceSecurityContext.AuthorizationContext.Properties.TryGetValue("Identities",
                                                                                                     out identitiesListObject))
            {
                identitiesListObject = new List <IIdentity>(1);
                operationContext.ServiceSecurityContext.AuthorizationContext.Properties.Add("Identities", identitiesListObject);
            }

            var identities = identitiesListObject as IList <IIdentity>;

            identities.Add(new GenericIdentity(basicState.Username, "GenericPrincipal"));

            return(true);
        }
コード例 #4
0
        public override bool CheckAccess(OperationContext operationContext, ref Message message)
        {
            var basicState = new BasicAuthenticationState(operationContext, GetRealm(ref message));
            if (!basicState.IsRequestBasicAuth)
            {
                return UnauthorizedResponse(basicState);
            }

            string password;
            if (!GetPassword(ref message, basicState.Username, out password))
            {
                return UnauthorizedResponse(basicState);
            }

            if(basicState.Password != password)
            {
                // According to RFC2616, a forbidden response should be in response to valid credentials where the
                // authenticated user is not allowed to use the site but WCF responds with Forbbiden with an incorrect
                // password. We should be returning Unauthorized, but this matches WCF behavior.
                return ForbiddenResponse(basicState);
            }

            return Authorized(basicState, operationContext, ref message);
        }
コード例 #5
0
 private bool ForbiddenResponse(BasicAuthenticationState basicState)
 {
     basicState.SetChallengeResponse(HttpStatusCode.Forbidden, "Access Denied");
     return false;
 }
コード例 #6
0
 private bool UnauthorizedResponse(BasicAuthenticationState basicState)
 {
     basicState.SetChallengeResponse(HttpStatusCode.Unauthorized, "Access Denied");
     return false;
 }
コード例 #7
0
 private bool ForbiddenResponse(BasicAuthenticationState basicState)
 {
     basicState.SetChallengeResponse(HttpStatusCode.Forbidden, "Access Denied");
     return(false);
 }
コード例 #8
0
 private bool UnauthorizedResponse(BasicAuthenticationState basicState)
 {
     basicState.SetChallengeResponse(HttpStatusCode.Unauthorized, "Access Denied");
     return(false);
 }