protected async Task <bool> RefreshTokens(IAuthTokens authTokens)
        {
            var refreshResult = await RefreshTokenClient.RefreshToken(authTokens.RefreshToken)
                                .ConfigureAwait(false);

            if (!string.IsNullOrEmpty(refreshResult.AccessToken) && !string.IsNullOrEmpty(refreshResult.RefreshToken))
            {
                authTokens.AccessToken        = refreshResult.AccessToken;
                authTokens.RefreshToken       = refreshResult.RefreshToken;
                authTokens.RefreshTokenExpiry = refreshResult.ExpiresAt;
                return(true);
            }

            authTokens.AccessToken        = null;
            authTokens.RefreshToken       = null;
            authTokens.RefreshTokenExpiry = null;
            return(false);
        }
        public virtual async Task Init()
        {
            if (DocumentDiscoveryClient == null)
            {
                DocumentDiscoveryClient = new DocumentDiscoveryClient(AuthProviderSettings);
            }

            AuthProviderSettings.DiscoveryResult = await DocumentDiscoveryClient.GetAsync(DocumentDiscoveryEndpoint).ConfigureAwait(false);

            if (IntrospectionClient == null)
            {
                IntrospectionClient = new IntrospectClient(AuthProviderSettings);
            }

            if (RefreshTokenClient == null)
            {
                RefreshTokenClient = new RefreshTokenClient(AuthProviderSettings);
            }

            if (UserInfoClient == null)
            {
                UserInfoClient = new UserInfoClient(AuthProviderSettings);
            }
        }