예제 #1
0
        private User GetResonseUser(RFNetUser user, string token)
        {
            var responseUser = new User();

            responseUser.UserId   = user.UserId ?? 0;
            responseUser.Token    = token;
            responseUser.Email    = user.Email;
            responseUser.Username = user.UserName;
            return(responseUser);
        }
예제 #2
0
        //PasswordHasher passwordHasher = new PasswordHasher();
        //Configuration configuration = new Configuration();
        //public UserAuthintications(ref Configuration _configuration)
        //{
        //    configuration = _configuration;
        //}
        public User Authenticate(object model, string username, string password, bool isHashBased, LoginType loginType, DbContext context = null)
        {
            RFNetUser user = new RFNetUser();

            if (LoginType.DbLogin == loginType)
            {
                user = GetUserByUserName(model, username);
                if (user == null)
                {
                    return(null);
                }
                bool isVerified;
                var  passwordHasher = new PasswordHasher <RFNetUser>(new OptionsWrapper <PasswordHasherOptions>(
                                                                         new PasswordHasherOptions()
                {
                    CompatibilityMode = PasswordHasherCompatibilityMode.IdentityV2
                }));
                if (isHashBased)
                {
                    isVerified = passwordHasher.VerifyHashedPassword(user, user.PasswordHash, password) == PasswordVerificationResult.Success;
                }
                else
                {
                    isVerified = user.Password == password;
                }
                if (isVerified)
                {
                    return(GetResonseUser(user, GetToken(user)));
                }
            }
            else if (LoginType.ADLogin == loginType)
            {
                if (LoginLdap(username, password))
                {
                    user = GetUserByUserName(model, username);
                }
                if (user != null)
                {
                    return(GetResonseUser(user, GetToken(user)));
                }
            }
            return(null);
        }
예제 #3
0
        private string GetToken(RFNetUser user)
        {
            var tokenHandler = new JwtSecurityTokenHandler();
            //var key = Encoding.ASCII.GetBytes(_appSettings.Secret);
            var expireAt        = DateTime.MaxValue;
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new Claim[]
                {
                    new Claim(ClaimTypes.Name, user.UserName.ToString()),
                    new Claim("UserId", user.UserId.ToString()),
                }),
                //Expires = expireAt,
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(Encoding.ASCII.GetBytes(@"MIGpAgEAAiEAuMmqfAzvVKJpIieaQkfC8BlZACwoOZssBCc/HIphNXcCAwEAAQIg
                                            Givly4ABfZkrDr1RKcYEI8Oyi9IoYes6eiO2fU1ALIECEQDe3gSNIlRk7Y8isu+Y
                                            qS1hAhEA1EJmx1b6rhjMxd4r2SG51wIQVylfgE7/0KU0CK8Qk5T+oQIQOI1cft3g
                                            ukPnQwy3mAlRTwIQDeu1TMQl74QOdaI3YZ5voA==")), SecurityAlgorithms.HmacSha256Signature)
            };
            var token = tokenHandler.CreateToken(tokenDescriptor);

            return(tokenHandler.WriteToken(token));
        }