Example #1
0
        public static string GenerateLoginToken(int playerID, DateTime tokenTTL)
        {
            //Setup Header
            TokenHeader header    = new TokenHeader();
            string      jwtHeader = JsonSerializer.Serialize(header);

            byte[] headerBytes   = Encoding.UTF8.GetBytes(jwtHeader);
            string encodedHeader = Base64UrlEncoder.Encode(headerBytes);

            //Setup data body
            TokenBody body    = new TokenBody(playerID, tokenTTL);
            string    jwtBody = JsonSerializer.Serialize(body);

            byte[] bodyBytes   = Encoding.UTF8.GetBytes(jwtBody);
            string encodedBody = Base64UrlEncoder.Encode(bodyBytes);

            string jwtToken = $"{encodedHeader}.{encodedBody}";

            string jwtSignature     = GetTokenSignature(jwtToken);
            string encodedSignature = Base64UrlEncoder.Encode(jwtSignature);

            string signedJWTToken = $"{jwtToken}.{encodedSignature}";

            return(signedJWTToken);
        }
Example #2
0
        public static bool TokenIsExpired(string jwtToken)
        {
            //Token anatomy is "encodedHeader.encodedBody.encodedSignature"
            string[] tokenParts       = jwtToken.Split('.');
            string   encodedTokenBody = tokenParts[1];

            string    decodedTokenBody = Base64UrlEncoder.Decode(encodedTokenBody);
            TokenBody jwtTokenBody     = JsonSerializer.Deserialize <TokenBody>(decodedTokenBody);

            bool isExpired = DateTime.UtcNow > jwtTokenBody.ExpirationDateTime;

            return(isExpired);
        }
Example #3
0
        public IActionResult CheckToken([FromBody] TokenBody body)
        {
            var searchedUser = (from u in _context.Users
                                where u.token == body.token
                                select u).FirstOrDefault <User>();

            if (searchedUser == null)
            {
                var res = new { foundToken = false };
                return(Ok(res));
            }
            else
            {
                var res = new { foundToken = true };
                return(Ok(res));
            }
        }
Example #4
0
        /// <summary>
        /// Create a new token.
        /// </summary>
        /// <param name="tokenBody">Create a new access token.</param>
        /// <returns>Token</returns>
        public Token PostToken(TokenBody tokenBody)
        {
            // verify the required parameter 'tokenBody' is set
            if (tokenBody == null)
            {
                throw new ApiException(400, "Missing required parameter 'tokenBody' when calling PostToken");
            }


            var path = "/tokens";

            path = path.Replace("{format}", "json");

            var    queryParams  = new Dictionary <String, String>();
            var    headerParams = new Dictionary <String, String>();
            var    formParams   = new Dictionary <String, String>();
            var    fileParams   = new Dictionary <String, FileParameter>();
            String postBody     = null;

            postBody = ApiClient.Serialize(tokenBody);                                     // http body (model) parameter

            // authentication setting, if any
            String[] authSettings = new String[] { "Token" };

            // make the HTTP request
            IRestResponse response = (IRestResponse)ApiClient.CallApi(path, Method.POST, queryParams, postBody, headerParams, formParams, fileParams, authSettings);

            if (((int)response.StatusCode) >= 400)
            {
                throw new ApiException((int)response.StatusCode, "Error calling PostToken: " + response.Content, response.Content);
            }
            else if (((int)response.StatusCode) == 0)
            {
                throw new ApiException((int)response.StatusCode, "Error calling PostToken: " + response.ErrorMessage, response.ErrorMessage);
            }

            return((Token)ApiClient.Deserialize(response.Content, typeof(Token), response.Headers));
        }
Example #5
0
 public override Int32 GetHashCode()
 {
     return(TokenBody.GetHashCode());
 }