예제 #1
0
        public AuthResult TryToken(string userName, byte[] token)
        {
            BindUser(userName);
            Send(BinaryMessage.Make(CMD_USETOKEN).Bytes(token).Complete());
            var reply = GetReply();

            if (reply.Type != 0)
            {
                return(AuthResult.Fail());
            }
            var cookie = reply.GetData();

            return(AuthResult.Success(userName, cookie));
        }
예제 #2
0
        public AuthResult TryPassword(string userName, string password)
        {
            BindUser(userName);
            byte[] phash = Digest(password);
            Send(BinaryMessage.Make(CMD_PASSWD).Bytes(phash).Complete());
            var reply = GetReply();

            if (reply.Type != 0)
            {
                return(AuthResult.Fail());
            }
            var cookie = reply.GetData();

            return(AuthResult.Success(userName, cookie));
        }
예제 #3
0
        public AuthResult TryToken(string userName, byte[] token)
        {
            var reply  = Call(CmdTryToken, userName, token);
            var result = reply.ReadCString();

            switch (result)
            {
            case ReplyOk:
                var sessionId     = reply.ReadCString();
                var sessionCookie = GetCookie();
                return(AuthResult.Success(sessionId, sessionCookie));

            case ReplyNo:
                return(AuthResult.Fail());

            default:
                throw new AuthException($"Unexpected reply {result} from auth server");
            }
        }
예제 #4
0
        private async Task <AuthResult> AuthActionAsync(LoginDto login)
        {
            var users = (await _userRepository.GetAllAsync(new UserByEmailSpec(login.Email))).ToArray();

            if (users.Length != 1)
            {
                return(AuthResult.Fail());
            }

            var targetUser = users[0];

            if (!_hashService.Compare(targetUser, login.Password))
            {
                return(AuthResult.Fail());
            }

            var claims = _claimProvider.GetClaims(targetUser);

            return(AuthResult.Success(claims, _tokenFactory.Create(claims)));
        }