<PackageReference Include="Relativity.Server.Import.SDK" Version="2.9.2" />

JwtTokenHelper

public static class JwtTokenHelper
It encodes Relativity JWT token.
using Newtonsoft.Json.Linq; using System; using System.Linq; using System.Text; namespace Relativity.DataExchange.Helpers { public static class JwtTokenHelper { private const int PayloadIndex = 1; private const string UserIdKey = "rel_uai"; private const string InstanceIdKey = "rel_ins"; public static bool TryParse(string token, out JwtAuthToken jwtAuthToken) { jwtAuthToken = null; if (!TryDecodePayloadPartFromBase64(token, out string payloadDecoded)) return false; JObject jObject; try { jObject = JObject.Parse(payloadDecoded); } catch (Exception) { return false; } JToken jToken = jObject.SelectToken("rel_uai"); if (jToken == null) return false; JToken jToken2 = jObject.SelectToken("rel_ins"); if (jToken2 == null) return false; string relativityInstanceId = jToken2.Value<string>(); string relativityUserId = jToken.Value<string>(); jwtAuthToken = new JwtAuthToken(relativityInstanceId, relativityUserId); return true; } private static bool TryDecodePayloadPartFromBase64(string token, out string payloadDecoded) { payloadDecoded = null; if (token.IsNullOrEmpty()) return false; string[] array = token.Split(new char[1] { '.' }); if (!array.Any() || array.Length != 3) return false; return TryDecode(token.Split(new char[1] { '.' })[1], out payloadDecoded); } private static bool TryDecode(string encoded, out string decoded) { decoded = null; string text = encoded.Replace('-', '+').Replace('_', '/'); int num = Encoding.ASCII.GetBytes(text).Length * 3 % 4; if (num != 0) text = text.PadRight(text.Length + num, '='); try { decoded = Encoding.ASCII.GetString(Convert.FromBase64String(text)); } catch (Exception) { return false; } return true; } } }