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, }; }); }
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); }