public ValidateAuthenticationResponse GetResponse(ValidateAuthenticationRequest request)
        {
            try
            {
                string secret = ServerConfiguration.Instance().ServerSecret;

                IJsonSerializer   serializer = new FastJSONSerializer();
                IDateTimeProvider provider   = new UtcDateTimeProvider();
                IJwtValidator     validator  = new JwtValidator(serializer, provider);
                IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
                IJwtDecoder       decoder    = new JwtDecoder(serializer, validator, urlEncoder);

                var json = decoder.Decode(request.AuthenticationToken, secret, true);

                JWTPayload payload = JSON.ToObject <JWTPayload>(json);

                return(new ValidateAuthenticationResponse
                {
                    Code = 200,
                    Claims = payload.Claims
                });
            }
            catch (Exception)
            {
                return(new ValidateAuthenticationResponse
                {
                    Code = 403
                });
            }
        }
        public AuthenticationResponse GetResponse(AuthenticationRequest request)
        {
            IAuthenticationService authenticationService = new AuthenticationService();

            bool isSuccessful = authenticationService.Authenticate(request.Username, request.Password);

            if (isSuccessful)
            {
                List <Claim> claims = new List <Claim>
                {
                    new Claim(ClaimTypesMetadata.Username, request.Username)
                };

                JWTPayload payload = new JWTPayload
                {
                    Claims = claims
                };

                string secret = ServerConfiguration.Instance().ServerSecret;

                IJwtAlgorithm     algorithm  = new HMACSHA256Algorithm();
                IJsonSerializer   serializer = new FastJSONSerializer();
                IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
                IJwtEncoder       encoder    = new JwtEncoder(algorithm, serializer, urlEncoder);

                string token = encoder.Encode(payload, secret);

                return(new AuthenticationResponse
                {
                    Code = 200,
                    AuthenticationToken = token
                });
            }

            return(new AuthenticationResponse
            {
                Code = 400
            });
        }