Program:
builder.Services.AddAuthentication(auth =>
{
auth.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
auth.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer((opts) =>
{
opts.RequireHttpsMetadata = false
opts.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidIssuer = jwtOptions.Issuer,
ValidateAudience = false,
ValidAlgorithms = new List<string> { jwtOptions.AlgorithmForAccessToken },
ValidateIssuerSigningKey = true,
IssuerSigningKey = jwtOptions.GetAccessSymmetricSecurityKey(),
ValidateLifetime = true,
LifetimeValidator = (notBefore, expires, securityToken, validationParameters) =>
{
if (expires != null)
return expires.Value > DateTime.UtcNow;
return false;
}
};
});
builder.Services.AddAuthorization();
Само создание токена:
public string AccessTokenCreate(UserEntity user)
{
var signingCredentials = new SigningCredentials(
_options.GetAccessSymmetricSecurityKey(),
_options.AlgorithmForAccessToken);
var claims = new List<Claim>
{
new Claim("userId", user.Id.ToString()),
new Claim("userName", user.Name.ToString()),
new Claim("userEmail", user.Email.ToString())
};
var token = new JwtSecurityToken(
issuer: _options.Issuer,
claims: claims,
notBefore: DateTime.UtcNow/*notBefore - начиная с какого времени токен может быть валидным*/,
expires: DateTime.UtcNow.AddMinutes(_options.AccessTokenExpiresMinutes),
signingCredentials: signingCredentials);
return new JwtSecurityTokenHandler().WriteToken(token);
}
И вот конфиг:
"Issuer": "localhost",
"AlgorithmForAccessToken": "HS512",
"AccessTokenExpiresMinutes": 15,
"AccessTokenNameInCookies": "jwtToken",
"AccessTokenSecretKey": "accesstokensecretkeyaccesstokensecretkeyaccesstokensecretkeyaccesstokensecretkey",
Самое странное что аутентификацию юзер прошел но при этом User = null. Откуда может быть проблема?