public static void AddAuthSolutionService(this IServiceCollection service, string Key)
        {
            if (Key.Length >= 6)
            {
                AuthModalOption.KEY = Key;
            }
            service.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(options =>
            {
                options.RequireHttpsMetadata      = false;
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    // укзывает, будет ли валидироваться издатель при валидации токена
                    ValidateIssuer = true,
                    // строка, представляющая издателя
                    ValidIssuer = AuthModalOption.ISSUER,

                    // будет ли валидироваться потребитель токена
                    ValidateAudience = true,
                    // установка потребителя токена
                    ValidAudience = AuthModalOption.AUDIENCE,
                    // будет ли валидироваться время существования
                    ValidateLifetime = true,

                    // установка ключа безопасности
                    IssuerSigningKey = AuthModalOption.GetSymmetricSecurityKey(),
                    // валидация ключа безопасности
                    ValidateIssuerSigningKey = true,
                };
            });
        }
示例#2
0
        public string SetToken(List <Claim> claims, TUser user = null)
        {
            var claimsIdentity = new ClaimsIdentity(claims, "Token", ClaimsIdentity.DefaultNameClaimType, ClaimsIdentity.DefaultRoleClaimType);
            var now            = DateTime.Now;
            var jwt            = new JwtSecurityToken(
                AuthModalOption.ISSUER,
                AuthModalOption.AUDIENCE,
                notBefore: now,
                claims: claimsIdentity.Claims,
                expires: now.Add(TimeSpan.FromMinutes(AuthModalOption.LIFETIME)),
                signingCredentials: new SigningCredentials(AuthModalOption.GetSymmetricSecurityKey(),
                                                           SecurityAlgorithms.HmacSha256));
            var token = new JwtSecurityTokenHandler().WriteToken(jwt);

            if (user != null)
            {
                user.Token = token;
                SetRefresh(user);
                user.LastLoginDate = DateTime.Now;
            }
            return(token);
        }
        public LoginResult Login(TUser user)
        {
            if (user == null)
            {
                return(null);
            }
            var roles        = user.UserRoles.Select(m => m.MongoRole).ToList();
            var jwt          = AuthModalOption.GenerateClaims <TUser, MongoRole, string>(user, roles);
            var accessToken  = AuthModalOption.SetToken <TUser, string>(jwt, user);
            var refreshToken = RepositoryState.GenerateRandomString(24);

            user.RefreshToken = refreshToken;
            _repo.Update(user);
            LoginResult loginResult = new LoginResult()
            {
                AccessToken  = accessToken,
                RefreshToken = refreshToken,
                UserName     = user.UserName,
                UserId       = user.Id,
                IsSentOtp    = false
            };

            return(loginResult);
        }