Esempio n. 1
0
        static async Task <ManagedToken> ExecuteClientCredentialsRequestAsync(
            ManagedToken managedToken,
            IServiceProvider serviceProvider,
            IOAuth2CredentialManager oAuth2CredentialManager,
            CancellationToken cancellationToken = default)
        {
            var creds = await oAuth2CredentialManager.GetOAuth2CredentialsAsync(managedToken.CredentialsKey);

            var client   = new HttpClient();
            var response = await client.RequestClientCredentialsTokenAsync(
                new ClientCredentialsTokenRequest
            {
                Address      = creds.DiscoveryDocumentResponse.TokenEndpoint,
                ClientId     = creds.ClientId,
                ClientSecret = creds.ClientSecret,
                Scope        = managedToken.RequestedScope
            },
                cancellationToken);

            if (response.IsError)
            {
                throw new Exception(response.Error);
            }
            managedToken.RefreshToken = response.RefreshToken;
            managedToken.AccessToken  = response.AccessToken;
            managedToken.ExpiresIn    = response.ExpiresIn;
            return(managedToken);
        }
Esempio n. 2
0
        private async Task <ManagedToken> AddUnSafeManagedTokenAsync(string key, ManagedToken managedToken)
        {
            managedToken.StartDate      = DateTimeOffset.UtcNow;
            managedToken.ExpirationDate = managedToken.StartDate.AddSeconds(managedToken.ExpiresIn);
            await _tokenStorage.UpsertManagedTokenAsync(key, managedToken);

            return(managedToken);
        }
Esempio n. 3
0
        public async override Task UpsertManagedTokenAsync(string key, ManagedToken managedToken)
        {
            var tokens = GetManagedTokens();

            if (tokens == null)
            {
                tokens = new Dictionary <string, ManagedToken>();
            }
            tokens[key] = managedToken;
            UpsertManagedTokens(tokens);
        }
Esempio n. 4
0
        public async Task <ManagedToken> AddManagedTokenAsync(string key, ManagedToken managedToken)
        {
            LockReleaser releaser = await _lock.Lock(new TimeSpan(0, 0, 30));

            try
            {
                return(await AddUnSafeManagedTokenAsync(key, managedToken));
            }
            finally
            {
                releaser.Dispose();
            }
        }
Esempio n. 5
0
        public async Task OnGetAsync()
        {
            Creds = await _oAuth2CredentialManager.GetOAuth2CredentialsAsync("test");

            if (Creds == null)
            {
                await _oAuth2CredentialManager.AddCredentialsAsync("test", new OAuth2Credentials
                {
                    Authority    = "https://demo.identityserver.io",
                    ClientId     = "m2m",
                    ClientSecret = "secret"
                });

                // this call will do all the discovery work if it hasn't been done yet.
                Creds = await _oAuth2CredentialManager.GetOAuth2CredentialsAsync("test");
            }
            ManagedToken = await _globalTokenManager.GetManagedTokenAsync("test", true);
        }
Esempio n. 6
0
        private async Task <ManagedToken> GetUnSafeManagedTokenAsync(string key)
        {
            ManagedToken managedToken = await _tokenStorage.GetManagedTokenAsync(key);

            return(managedToken);
        }
Esempio n. 7
0
        public async Task OnGetAsync()
        {
            Creds = await _oAuth2CredentialManager.GetOAuth2CredentialsAsync("test");

            ManagedToken = await _globalTokenManager.GetManagedTokenAsync("test", true);
        }
Esempio n. 8
0
        public async Task AddManagedTokenAsync(ManagedToken managedToken)
        {
            await _sessionTokenManager.AddManagedTokenAsync(ManagedTokenKey, managedToken);

            _httpContextAccessor.HttpContext.Session.SetInt32(ManagedTokenKey, 1); // hint that we are tracking
        }
 public abstract Task UpsertManagedTokenAsync(string key, ManagedToken managedToken);