Example #1
0
        public override bool IsInVirtualRole(IPrincipal principal, object context)
        {
            var header = HttpContext.Current.Request.Headers["Authorization"];

            if (string.IsNullOrEmpty(header))
            {
                return(false);
            }
            if (!header.StartsWith("Bearer "))
            {
                return(false);
            }
            string           token = header.Substring(7);
            AccessTokenStore store = new AccessTokenStore();
            var at = store.LoadToken(token);

            if (at == null)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
        public async void ManuallyUpdateToken()
        {
            var clientMock = new Mock <IOAuth2Client>();

            clientMock.Setup(x => x.GetAccessTokenAsync())
            .Returns(() => Task.FromResult(new AccessToken
            {
                Expires = DateTime.UtcNow.AddMinutes(20),
                Token   = "myaccesstoken"
            }));

            var client = clientMock.Object;

            var store = new AccessTokenStore(client);

            await store.RetrieveAccessTokenAsync();

            await store.StoreTokenAsync(new AccessToken
            {
                Expires = DateTime.UtcNow.AddMinutes(20),
                Token   = "newtoken"
            });

            // Simply asserting that we haven't got an exception
            // when cancelling the expiry task within the AccessTokenStore.
            // We got here, so that's success.
        }
        public GoogleAuthentication(IOptions <BotConfig> options, AccessTokenStore accessTokenStore,
                                    AccessCodeStore accessCodeStore, ILogger logger)
        {
            _accessTokenStore = accessTokenStore;
            _accessCodeStore  = accessCodeStore;
            _logger           = logger;
            _botConfig        = options.Value;

            ClientSecrets clientSecrets = new ClientSecrets
            {
                ClientId     = _botConfig.GoogleClientId,
                ClientSecret = _botConfig.GoogleClientSecret
            };

            var scopes = new[] { SheetsService.Scope.Spreadsheets };

            //Google.Apis.Oauth2.v2.Oauth2Service.Scope.UserinfoEmail };

            GoogleAuthorizationCodeFlow.Initializer initializer = new GoogleAuthorizationCodeFlow.Initializer {
                ClientSecrets = clientSecrets,
                Scopes        = scopes,
                DataStore     = _accessTokenStore
            };

            AuthorizationCodeFlow = new GoogleAuthorizationCodeFlow(initializer);
        }
        public async void ReceivesNewTokenUponExpiry()
        {
            var count = 0;

            var clientMock = new Mock <IOAuth2Client>();

            clientMock.Setup(x => x.GetAccessTokenAsync())
            .Returns(() =>
            {
                count = count + 1;
                return(Task.FromResult(new AccessToken
                {
                    Expires = DateTime.UtcNow.AddSeconds(5),
                    Token = $"myaccesstoken{count}"
                }));
            });

            var client = clientMock.Object;

            var store = new AccessTokenStore(client);

            var token = await store.RetrieveAccessTokenAsync();

            Assert.Equal("myaccesstoken1", token);

            // Access Token should have expired within this timeframe.
            await Task.Delay(7000);

            // This will force the store to get a new access token from the auth
            // server.
            token = await store.RetrieveAccessTokenAsync();

            Assert.Equal("myaccesstoken2", token);
        }
 public PublicAuthenticator(
     IXeroApiSettings applicationSettings,
     AccessTokenStore accessTokenStore,
     RequestTokenStore requestTokenStore)
     : base(accessTokenStore, applicationSettings)
 {
     this.requestTokenStore = requestTokenStore;
     consumer = new Consumer(
         applicationSettings.ConsumerKey,
         applicationSettings.ConsumerSecret);
 }
Example #6
0
 public Note(SpreadsheetDriver spreadsheetDriver, TextParser textParser, ITelegramBotClient telegramBotClient,
             Authorize authorize, AccessTokenStore accessTokenStore, AccessCodeStore accessCodeStore, ILogger logger)
 {
     _spreadsheetDriver = spreadsheetDriver;
     _textParser        = textParser;
     _telegramBotClient = telegramBotClient;
     _authorize         = authorize;
     _accessTokenStore  = accessTokenStore;
     _accessCodeStore   = accessCodeStore;
     _logger            = logger;
 }
Example #7
0
        private void SetUser()
        {
            using (WebClient client = new WebClient())
            {
                AccessTokenStore     store       = Providers.GetSessionProvider <AccessTokenStore>();
                QueryStringParameter accessToken = new QueryStringParameter("access_token", store.AccessToken);

                string  data        = client.DownloadString(string.Format("{0}{1}", CurrentUserUrl, accessToken.ToString()));
                JObject currentUser = JObject.Parse(data);
                currentUser.Add("auth_source", "Facebook");
                currentUser.Add("access_token", store.AccessToken);

                FacebookPrincipal principal = new FacebookPrincipal(currentUser, store.AccessToken);
                System.Web.HttpContext.Current.User = principal;
                Providers.SetSessionProvider <FacebookPrincipal>(principal, true);
                OnUserSet(currentUser);
            }
        }
        private static AccessTokenStore CreateAccessTokenStore(IEnumerable <Account> userAccounts = null, IEnumerable <Account> clientAccounts = null)
        {
            var accessTokenStore = new AccessTokenStore(new InMemoryAccountStore());

            if (userAccounts != null)
            {
                var userTasks = userAccounts.Select(a => accessTokenStore.SaveUserAccessToken(a.Username, ServiceId, new AccessToken(a.Properties), CancellationToken.None)).ToArray();
                Task.WaitAll(userTasks);
            }

            if (clientAccounts != null)
            {
                var clientTasks = clientAccounts.Select(a => accessTokenStore.SaveClientAccessToken(a.Username, ServiceId, new AccessToken(a.Properties), CancellationToken.None)).ToArray();
                Task.WaitAll(clientTasks);
            }

            return(accessTokenStore);
        }
Example #9
0
        /// <summary>
        /// 获取 Token
        /// </summary>
        /// <returns></returns>
        public virtual AccessToken GetPlatformToken()
        {
            var result = AccessTokenStore.Get(Config.AppId);

            if (result == null || result.IsExpired())
            {
                lock (RefreshAccessToken_Locker)
                {
                    result = AccessTokenStore.Get(Config.AppId);
                    if (result == null || result.IsExpired())
                    {
                        result = RequestAccessToken();
                        AccessTokenStore.Set(Config.AppId, result);
                    }
                }
            }
            return(result);
        }
        public async void ReceivesNewTokenUponExpiryWithConcurrency()
        {
            var count = 0;

            var clientMock = new Mock <IOAuth2Client>();

            clientMock.Setup(x => x.GetAccessTokenAsync())
            .Returns(() =>
            {
                count = count + 1;
                return(Task.FromResult(new AccessToken
                {
                    // Expire in 5 seconds on the first request, 20 minutes on the second.
                    Expires = count == 1 ? DateTime.UtcNow.AddSeconds(5) : DateTime.UtcNow.AddMinutes(20),
                    Token = $"myaccesstoken{count}"
                }));
            });

            var client = clientMock.Object;

            var store = new AccessTokenStore(client);

            var token = await store.RetrieveAccessTokenAsync();

            Assert.Equal("myaccesstoken1", token);

            // Access Token should have expired within this timeframe.
            await Task.Delay(7000);

            // This will force the store to get a new access token from the auth
            // server.
            var task1 = store.RetrieveAccessTokenAsync();
            var task2 = store.RetrieveAccessTokenAsync();

            token = await task1;
            Assert.Equal("myaccesstoken2", token);

            token = await task2;
            Assert.Equal("myaccesstoken2", token);
        }
Example #11
0
        protected virtual void SetTargetUrl(string url)
        {
            AccessTokenStore token = Providers.GetSessionProvider <AccessTokenStore>();

            token.TargetUrl = url;
        }
        private static AccessTokenStore CreateAccessTokenStore(IEnumerable<Account> userAccounts = null, IEnumerable<Account> clientAccounts = null)
        {
            var accessTokenStore = new AccessTokenStore(new InMemoryAccountStore());

            if (userAccounts != null)
            {
                var userTasks = userAccounts.Select(a => accessTokenStore.SaveUserAccessToken(a.Username, ServiceId, new AccessToken(a.Properties), CancellationToken.None)).ToArray();
                Task.WaitAll(userTasks);
            }

            if (clientAccounts != null)
            {
                var clientTasks = clientAccounts.Select(a => accessTokenStore.SaveClientAccessToken(a.Username, ServiceId, new AccessToken(a.Properties), CancellationToken.None)).ToArray();
                Task.WaitAll(clientTasks);
            }

            return accessTokenStore;
        }
 private void InitializeFakeObjects()
 {
     _identityServerClientFactoryStub = new Mock <IIdentityServerClientFactory>();
     _storageStub      = new Mock <IStorage>();
     _accessTokenStore = new AccessTokenStore(_storageStub.Object, _identityServerClientFactoryStub.Object);
 }