Beispiel #1
0
 private static void RefreshTokenIfNeeded()
 {
     _messageLogConsole.Write("Token expires in " + TimeSpan.FromTicks(_accessToken.Expiry.Ticks - DateTime.UtcNow.Ticks) + " ticks", true);
     // Check for expiration within the next 2 minutes
     if (DateTime.Compare(DateTime.UtcNow.AddMinutes(2), _accessToken.Expiry.ToUniversalTime()) > 0)
     {
         if (_accessToken.RefreshToken.Expiry.ToUniversalTime() > DateTime.UtcNow)
         {
             _messageLogConsole.Write("Requesting access token refresh using the refresh token.", true);
             GetAccessTokenResult getAccessTokenResult = _client.GetAccessToken(_accessToken.RefreshToken);
             if (getAccessTokenResult.Success)
             {
                 _accessToken = getAccessTokenResult.Token;
             }
             else
             {
                 CreateErrorWindow(getAccessTokenResult.Error, _mainConsole);
             }
         }
         else
         {
             _messageLogConsole.Write("We need a new access token but the refresh token is expired.", true);
         }
     }
 }
Beispiel #2
0
        /// <summary>
        /// Attempt to log in to the game server (could be lan or other)
        /// </summary>
        /// <param name="username">An account name</param>
        /// <param name="password">A password which should be transmitted using TLS. The server will receive the password and calculate its hash.</param>
        /// <returns>TRUE if authentication is successful.</returns>
        public static bool DoLogin(string username, string password)
        {
            _gameStatus = GameStatus.LoggingIn;
            GetAccessTokenResult result = _client.GetAccessToken(username, password);

            if (!result.Success)
            {
                _gameStatus = GameStatus.Startup;
                CreateErrorWindow(result.Error, _loginWindow.Children.First());
                return(false);
            }
            else
            {
                _accessToken                 = result.Token;
                _messageLogConsole           = new MessageLogConsole(_mainConsole.Width, _mainConsole.Height / 4);
                _messageLogConsole.Position  = new Point(0, 0);
                _messageLogConsole.IsVisible = true;
                _mainConsole.Children.Add(_messageLogConsole);
                _gameStatus            = GameStatus.LoggedIn;
                _loginWindow.IsVisible = false;
                _loginWindow.Controls.RemoveAll();
                _loginWindow.Clear();
                StartHeartbeat(TimeSpan.FromSeconds(10), CancelHeartbeat);
                return(true);
            }
        }
Beispiel #3
0
        public GetAccessTokenResult GetAccessToken(RefreshToken refreshToken)
        {
            var output = new GetAccessTokenResult();
            var dto    = new RefreshTokenContainer();

            dto.Content = refreshToken.Content;
            var result = _endpoint
                         .AllowAnyHttpStatus()
                         .WithHeader("Accept-Version", "1.0")
                         .AppendPathSegment("api")
                         .AppendPathSegment("Rpc")
                         .AppendPathSegment("GetTokenUsingRefreshToken")
                         .PostJsonAsync(dto).Result;

            if (result.IsSuccessStatusCode)
            {
                output.Success = true;
                output.Token   = Newtonsoft.Json.JsonConvert.DeserializeObject <AccessToken>(result.Content.ReadAsStringAsync().Result);
                output.Error   = null;
            }
            else
            {
                output.Success = false;
                output.Error   = Newtonsoft.Json.JsonConvert.DeserializeObject <ErrorFromServer>(result.Content.ReadAsStringAsync().Result);
                output.Token   = null;
            }
            return(output);
        }
Beispiel #4
0
        public GetAccessTokenResult GetAccessToken(string username, string password)
        {
            var output = new GetAccessTokenResult();
            LoginInformation loginInformation = new LoginInformation(username, password);
            var result = _endpoint
                         .AllowAnyHttpStatus()
                         .WithHeader("Accept-Version", "1.0")
                         .AppendPathSegment("api")
                         .AppendPathSegment("Rpc")
                         .AppendPathSegment("GetToken")
                         .PostJsonAsync(loginInformation).Result;

            if (result.IsSuccessStatusCode)
            {
                output.Success = true;
                output.Token   = Newtonsoft.Json.JsonConvert.DeserializeObject <AccessToken>(result.Content.ReadAsStringAsync().Result);
                output.Error   = null;
            }
            else
            {
                output.Success = false;
                string content = result.Content.ReadAsStringAsync().Result;
                output.Error = Newtonsoft.Json.JsonConvert.DeserializeObject <ErrorFromServer>(content);
                output.Token = null;
            }
            return(output);
        }
Beispiel #5
0
        private void DoTokenRequest(string postData)
        {
            string requestUrl           = m_configuration.ApiBaseUrl + "/oauth2/token";
            GetAccessTokenResult result = m_apiInvoker.InvokeApi(
                requestUrl, "POST", postData, null, null, "application/x-www-form-urlencoded");

            m_accessToken  = result.AccessToken;
            m_refreshToken = result.RefreshToken;
        }
Beispiel #6
0
        public async Task GetAccessTokenWithRefreshToken(RefreshToken refreshToken)
        {
            var accessToken = _authService.CreateAccessTokenFromRefreshToken(refreshToken.Content);

            if (accessToken != null)
            {
                var result = new GetAccessTokenResult();
                result.Error   = null;
                result.Success = true;
                result.Token   = accessToken;
                await Clients.Caller.ReceiveAccessTokenFromRefreshToken(result);
            }
        }
Beispiel #7
0
 public async Task GetAccessToken(CredentialsContainer ctr)
 {
     if (_authService.TryLoginCredentials(ctr.Username, ctr.Password))
     {
         AccessToken token  = _authService.CreateGameplayToken(ctr.Username);
         var         result = new GetAccessTokenResult();
         result.Error   = null;
         result.Success = true;
         result.Token   = token;
         await Clients.Caller.ReceiveAccessTokenResult(result);
     }
     else
     {
         var result = new GetAccessTokenResult();
         result.Error   = new ErrorFromServer("Could not verify credentials.");
         result.Success = false;
         result.Token   = null;
         await Clients.Caller.ReceiveAccessTokenResult(result);
     }
 }
Beispiel #8
0
        public void XmlSerializeTest()
        {
            var ixml = ToolFactory.CreateIXmlSerializeTool();
            var r    = new GetAccessTokenResult()
            {
                access_token = "j;alskdjf;asldkfj",
                expires_in   = 7200
            };
            CacheDto s = new CacheDto()
            {
                Value  = r,
                Key    = "lkjl",
                Expire = DateTime.Now.AddDays(2)
            };
            List <CacheDto> l = new List <CacheDto>()
            {
                s
            };

            ixml.SerializeToFile(l, "D:\\d.xml");
            ixml.DeserializeFromFile <List <CacheDto> >("D:\\d.xml");
        }
        private void RequestToken()
        {
            string postData = "grant_type=client_credentials&client_id="
                              + m_configuration.AppSid
                              + "&client_secret="
                              + m_configuration.AppKey;
            string requestUrl = m_configuration.AuthBaseUrl + "/connect/token";

            try
            {
                GetAccessTokenResult result = (GetAccessTokenResult)m_apiInvoker.InvokeApi(
                    requestUrl, "POST", postData, null, null, "application/x-www-form-urlencoded", typeof(GetAccessTokenResult));
                m_configuration.AuthToken = result.AccessToken;
            }
            catch (ApiException ex)
            {
                if (ex.ErrorCode == 400)
                {
                    throw new ApiException(401, ex.Message);
                }
                throw;
            }
        }