Я новичок в Аутентификация JWT . Я практикую это, используя это демонстрационное решение в моем репо . Я понял, как работает код, и смог заставить его работать. Но у меня есть вопрос, который продолжает беспокоить меня. Почему мы должны предоставлять ключ, издателя и аудиторию в обоих местах?
ConfigureServices
- Startup
:
services
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = "http://localhost:44348",
ValidAudience = "http://localhost:44348",
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("superSecretKey@345"))
};
});
Код создания токена в AuthController
:
private JwtSecurityToken GenerateToken(IEnumerable<Claim> claims)
{
var secretKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("superSecretKey@345"));
var signinCredentials = new SigningCredentials(secretKey, SecurityAlgorithms.HmacSha256);
var tokeOptions = new JwtSecurityToken(
issuer: "http://localhost:44348",
audience: "http://localhost:44348",
claims: claims,
expires: DateTime.Now.AddMinutes(1),
signingCredentials: signinCredentials
);
return tokeOptions;
}
Если мы заметим, мы можем видеть ключ, эмитента и аудиторию в обоих местах. Насколько я вижу, мы делаем из-за конфигурации или настройки? Я думаю, что мы должны предоставить эти конфигурации только на ConfigureServices
. Пожалуйста, исправьте меня, если я ошибаюсь, и помогите объяснить причины, по которым мы делаем это в двух местах.