/// <summary> /// Получить авторизационный токен /// </summary> /// <param name="claimsIdentity">Идентификационные данные</param> /// <param name="dateFrom">Дата начала действия токена</param> /// <param name="dateExpires">Дата истечения токена</param> /// <returns></returns> private string GetAccessToken(ClaimsIdentity claimsIdentity, DateTimeOffset dateFrom, DateTimeOffset dateExpires) { // создаем JWT-токен var jwt = new JwtSecurityToken( _tokenOptions.Issuer, _tokenOptions.Audience, notBefore: dateFrom.UtcDateTime, claims: claimsIdentity.Claims, expires: dateExpires.UtcDateTime, signingCredentials: new SigningCredentials(_tokenOptions.GetSymmetricSecurityKeyForAccess(), SecurityAlgorithm)); var accessToken = new JwtSecurityTokenHandler().WriteToken(jwt); return(accessToken); }
/// <summary> /// Регистрация аутентификации /// </summary> /// <param name="services"></param> private void RegisterAuthentication(IServiceCollection services) { RegisterTokenService(services); var tokenOptions = new TokenOptions(); Configuration.GetSection("TokenOptions").Bind(tokenOptions); services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(op => { if (!Environment.IsProduction()) { op.RequireHttpsMetadata = false; } op.TokenValidationParameters = new TokenValidationParameters { // Валидация издателя ValidateIssuer = true, // строка, представляющая издателя ValidIssuer = tokenOptions.Issuer, // Валидация потребителя токена ValidateAudience = true, // установка потребителя токена ValidAudience = tokenOptions.Audience, // Валидация время жизни токена ValidateLifetime = true, // Установка ключа безопасности IssuerSigningKey = tokenOptions.GetSymmetricSecurityKeyForAccess(), // Валидация ключа безопасности ValidateIssuerSigningKey = true }; }); }