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); }
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); }
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)); } }
/// <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)); }
public override Int32 GetHashCode() { return(TokenBody.GetHashCode()); }