private void AddToCache(string key, AccessTokenItem accessTokenItem) { var options = new DistributedCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromDays(cacheExpirationInDays)); lock (_lock) { _cache.SetString(key, System.Text.Json.JsonSerializer.Serialize(accessTokenItem), options); } }
private void AddAuthTokenToCache(string key, AccessTokenItem accessTokenItem) { var tokenExpiryMinutes = accessTokenItem.ExpiresIn.Subtract(DateTime.UtcNow).TotalMinutes; var deductTokenExpiryMinutes = essManagedIdentityConfiguration.Value.DeductTokenExpiryMinutes < tokenExpiryMinutes ? essManagedIdentityConfiguration.Value.DeductTokenExpiryMinutes : 1; var options = new DistributedCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromMinutes(tokenExpiryMinutes - deductTokenExpiryMinutes)); options.SetAbsoluteExpiration(accessTokenItem.ExpiresIn); lock (_lock) { _cache.SetString(key, JsonConvert.SerializeObject(accessTokenItem), options); logger.LogInformation(EventIds.CachingExternalEndPointToken.ToEventId(), "Caching new token for external end point resource {resource} and expires in {ExpiresIn} with sliding expiration duration {options}.", key, Convert.ToString(accessTokenItem.ExpiresIn), JsonConvert.SerializeObject(options)); } }
public async Task <string> GetAccessTokenAsync(string clientName, string apiScope, string secret) { AccessTokenItem accessToken = GetFromCache(clientName); if (accessToken != null && accessToken.Expiry > DateTime.UtcNow) { return(accessToken.AccessToken); } AccessTokenItem accessTokenItem = await RequestNewToken(clientName, apiScope, secret); AddToCache(clientName, accessTokenItem); return(accessTokenItem.AccessToken); }
public async Task <string> GetAccessToken(string client_name, string api_scope, string secret) { AccessTokenItem accessToken = GetFromCache(client_name); if (accessToken != null && accessToken.Expiry > DateTime.UtcNow) { return(accessToken.AccessToken); } // Token not cached, or token is expired. Request new token from auth server AccessTokenItem newAccessToken = await RequestNewToken(client_name, api_scope, secret); AddToCache(client_name, newAccessToken); return(newAccessToken.AccessToken); }
public async Task <string> GetAccessToken() { string clientId = "ClientCredentials"; string secret = "538D080E-BDF6-4178-8F07-29AFBCFD755F"; string scope = "ApiTemplateApi"; AccessTokenItem accessToken = GetFromCache(clientId); if (accessToken != null && accessToken.Expiry > DateTime.UtcNow) { return(accessToken.AccessToken); } // Token not cached, or token is expired. Request new token from auth server AccessTokenItem newAccessToken = await RequestNewToken(clientId, scope, secret); AddToCache(clientId, newAccessToken); return(newAccessToken.AccessToken); }