_ASP.NET Core 2.1.1
_を利用します
有効なのは、bothClockSkew
-in Startup.csand_JwtSecurityTokenHandler.TokenLifetimeInMinutes
_-コントローラ内。
例えば:
_services
.AddJwtBearer(x =>
{
...
x.TokenValidationParameters = new TokenValidationParameters()
{
ClockSkew = TimeSpan.FromMinutes(90),
...
_
プラス
_...
public async Task<AuthenticateOutput> Authenticate([FromBody] AuthenticateInput input)
{
var tokenHandler = new JwtSecurityTokenHandler();
tokenHandler.TokenLifetimeInMinutes = (int)TimeSpan.FromMinutes(90).TotalMinutes;
...
_
tokenHandler.TokenLifetimeInMinutes = (int)TimeSpan.FromMinutes(90).TotalMinutes;
部分を削除すると、デフォルトの有効期限が使用されます。
_tokenHandler.TokenLifetimeInMinutes
_はstill冗長であり、有効期限を正しく設定する方法の概念を誤解しているように思えます。
また、有効期限の要求-new Claim(ClaimTypes.Expiration, ...)
-を追加しようとしましたが、それほど効果はありませんでした。
ClockSkew
プロパティは有効期限そのものではなく、 クロックスキュー を補正します。
トークンの有効期限を設定するには、トークンの作成時に指定する必要があります。
new JwtSecurityToken(
...
expires: DateTime.UtcNow.AddMinutes(90),
....);
次のコードはトークン付きの文字列を提供します:
var token = new JwtSecurityToken() { /* setup your token setting here*/ }
var tokenString = new JwtSecurityTokenHandler().WriteToken(token);