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);
        }
    }
Exemplo n.º 2
0
        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));
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 5
0
        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);
        }