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); }
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; }
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); }
/// <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); }
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); }