private async Task <AgsTokenResponse> ImplicitAuthenticate() { await AuthLock.WaitAsync(); try { if (_tokenRes.IsValid()) { return(_tokenRes); } _tokenRes = null; if (string.IsNullOrWhiteSpace(_domain)) { _tokenRes = await InitToken(_tokenUrl, _user, _password, _referer); } else { _tokenRes = await InitIWA(_tokenUrl, _user, _password, _domain); } } finally { if (AuthLock.CurrentCount == 0) { AuthLock.Release(); } } return(_tokenRes); }
private async Task <string> GetAgsToken(ICacheEntry entry) { AgsTokenResponse tokenData = null; try { tokenData = await AgsServer.GenerateToken(_options.Scheme, _options.Host, _options.Port, _options.Instance, _options.Username, _options.Password); } catch { //failed to get token the usual way. } try { //Try the Network Collector way(copied code from Dinesh) if (tokenData is null) { var baseUrl = $"{_options.Scheme}://{_options.Host}:{_options.Port}/{_options.Instance}"; var op = new Operation(baseUrl); var referer = baseUrl; var token = await op.Authenticate(_options.Username, _options.Password, null, referer); } } catch (Exception e) { Console.WriteLine(e); throw; } // set cache entry expiry var expires = FromUnixTime(tokenData.expires); entry.AbsoluteExpiration = expires.AddMinutes(-1); return(tokenData.token); }