我正在使用OAuth/Owin生成一個令牌,並且該令牌在請求的授權標頭中發回;它會自動進行比較,這就是我如何驗證請求是否來自有效用戶。令牌具有承載類型。用來生成令牌關於在web api中使用的oAuth令牌
守則如下:
private string GenerateAuthToken(TelephonyLoginCdto loginDto, double tokenExpirationTimeInHours)
{
//Generate AuthToken
var identity = new ClaimsIdentity(OAuthDefaults.AuthenticationType);
identity.AddClaim(new Claim(ClaimTypes.Name, loginDto.Username));
var currentUtc = DateTime.UtcNow;
var props = new AuthenticationProperties()
{
IssuedUtc = currentUtc,
ExpiresUtc = currentUtc.Add(TimeSpan.FromHours(tokenExpirationTimeInHours))
};
var ticket = new AuthenticationTicket(identity, props);
var accessToken = StartUp.OAuthBearerOptions.AccessTokenFormat.Protect(ticket);
return accessToken;
}
外部系統將消耗我的API。 流程將爲: 1.外部系統首先命中登錄api。登錄api返回一個令牌。 2.外部系統使用該令牌並將其傳遞給另一個請求授權標頭使用API的另一種方法進行一些更新。
他們可以在一天中多次重複上述過程5〜6次。他們來打登錄;獲得令牌。通過調用API的save/get方法來使用該標記來執行一些操作。
我的問題是當外部系統長時間沒有打我的任何API方法,並且處於空閒狀態。現在如果外部系統必須擊中API執行某些操作,他們需要再次點擊登錄API才能獲取該令牌,然後使用其他API方法。如果他們這樣做更頻繁地說在10〜15分鐘內回覆令牌只需1〜2秒,但如果他們在2〜2.5小時後說,我的登錄API需要30秒才能返回令牌。
我沒有做任何刷新令牌機制,這種想法是需要這麼多時間,因爲已經生成了很多令牌,並且owin正在嘗試清理服務器,然後給出令牌。我不知道發生了什麼事?
如果不知道可能是什麼原因,請嘗試記錄您的身份驗證機制。之後,在日誌中看看花了那麼多時間。 – Artiom