WebApiプロジェクトで使用するJWTを生成しています。有効期限が過ぎてから提出されたときにトークンを拒否するかどうかをテストできるように、トークンが1分で期限切れになるように設定します。.NetCore JwtBearerAuthenticationが期限切れのトークンを拒否しない
CreateTokenコントローラ
public async Task<IActionResult> CreateToken([FromBody] CredentialModel model)
{
var user = await _unitOfWork.UserManager.FindByNameAsync(model.UserName);
if (user == null) return BadRequest();
if (Hasher.VerifyHashedPassword(user, user.PasswordHash, model.Password) !=
PasswordVerificationResult.Success) return BadRequest();
var userClaims = awaitUserManager.GetClaimsAsync(user);
var claims = new[]
{
new Claim(JwtRegisteredClaimNames.Sub, user.UserName),
new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
new Claim(JwtRegisteredClaimNames.Iat, DateTime.UtcNow.ToString()),
new Claim(JwtRegisteredClaimNames.GivenName, user.FirstName),
new Claim(JwtRegisteredClaimNames.FamilyName, user.LastName),
new Claim(JwtRegisteredClaimNames.Email, user.Email)
}
.Union(userClaims);
var cert = new Certificate(Configuration["Tokens:Certificate"]);
var token = new JwtSecurityToken(
issuer: Configuration["Tokens:Issuer"],
audience: Configuration["Tokens:Audience"],
claims: claims,
expires: DateTime.UtcNow.AddMinutes(1),
signingCredentials: cert.Signature
);
return Ok(new
{
token = new JwtSecurityTokenHandler().WriteToken(token),
expiration = token.ValidTo
});
}
トークン認証 - 起動クラス
app.UseJwtBearerAuthentication(new JwtBearerOptions()
{
AutomaticAuthenticate = true,
AutomaticChallenge = true,
TokenValidationParameters = new TokenValidationParameters()
{
ValidIssuer = Configuration["Tokens:Issuer"],
ValidAudience = Configuration["Tokens:Audience"],
ValidateIssuerSigningKey = true,
IssuerSigningKey = new Certificate(Configuration["Tokens:Certificate"]).SecurityKey,
ValidateLifetime = true
},
});
私はvalidateLifetime = tokesは、2分後に拒否されていない真を設定しておりますが。それはトークンを受け入れ続けるでしょう。私が気づいていない、またはセットアップが間違っている最小有効期限はありますか?
私はあなたがこのコードの実行可能なバージョンを持っているとは思いませんか?いずれにしても、私は 'UseJwtBearerAuthentication'のドキュメントを参照しましたが、これは推奨されなくなったようです:/ https://github.com/aspnet/Security/blob/99aa3bd35dd5fbe46a93eef8a2c8ab1f9fe8d05b/src/Microsoft.AspNetCore.Authentication.JwtBearer/JwtBearerAppBuilderExtensions。 cs –
@MariaInesParnisariはい私のコードが実行されており、トークンの発行と検証が機能しています。これは、私が非対称X509Certificate2をインポートするために書いた小さな証明書クラスを除いて、ほとんどすべてです。それはちょうど満了を常に検証するようではない。私はあなたのリンクを見て、それは非難されるようです。しかし、私はそれに取って代わるものは見当たりません。 – Dblock247
このコードがGitHubでホストされているので、私はそれをダウンロードして自分で試すことができます。検証が機能していると言えば、トークンの他のプロパティ(たとえば、視聴者)を手動で変更して失敗したことを確認してみましたか? –