[英]Issue a refresh token in aspnet5 rc1 Web API2 identity 3 using JwtBearerAuthentication
我目前仍停留在如何在aspnet5中實現刷新令牌流的機制上 。
目標 :我想攔截每筆交易,以檢查令牌是否已過期或即將過期,如果是,請對其進行續訂。 (我已經在驗證它的簽名了)。
我發現可以在設置JWT選項時在Startup.cs中發現到期時間:
app.UseJwtBearerAuthentication(options =>
{
options.Audience = "http://localhost:7001";
//options.Authority = "http://localhost:7001";
options.AutomaticAuthenticate = true;
options.RequireHttpsMetadata = false;
options.TokenValidationParameters = new TokenValidationParameters()
{
LifetimeValidator = (DateTime? notBefore, DateTime? expires, SecurityToken securityToken, TokenValidationParameters validationParameters) =>
{
if (expires.Value < DateTime.UtcNow)
{
// it's expired! issue a refresh token here?
return false;
}
return true;
},
IssuerSigningKey = key,
ValidAudience = tokenOptions.Audience,
ValidIssuer = tokenOptions.Issuer,
ValidateSignature = true,
ValidateLifetime = true,
ClockSkew = TimeSpan.FromMinutes(10)
};
});
目前,這只是引發一個異常,即“生命周期驗證程序失敗”。這就是我的意思。
我要這樣做正確嗎? 這是檢查到期時間的正確地方嗎? 我如何具體要求API從此處發出刷新令牌?
我要這樣做正確嗎? 這是檢查到期時間的正確地方嗎?
否:盡管資源服務器(即API端點)應始終確保接收到的令牌仍然有效,但續訂過期的令牌不是他們的責任。
客戶端應用程序絕對應該向發出刷新令牌的授權服務器詢問自己。 為此,他們可以將令牌響應中返回的expires_in
屬性用作提示,並且/或者從您的API捕獲401響應,以確定他們正在使用的訪問令牌是否仍然有效。
我如何具體要求API從此處發出刷新令牌?
從刷新令牌發出新的訪問令牌通常是由授權服務器/身份提供者完成的。 如果您添加了有關應用程序這一方面的更多詳細信息,它肯定會有所幫助(它是否支持OAuth2或OpenID Connect?)
使用OAuth2服務器時,可以使用refresh_token
授予來獲取新的訪問令牌:
POST /token HTTP/1.1
Host: server.example.com
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token&refresh_token=tGzv3JOkF0XG5Qx2TlKWIA
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.