public string Sign() { var w = new JsonWriter { PrettyPrint = false, IndentValue = 0 }; w.WriteObjectStart(); foreach (var s in claims.Values) { s.Serialize(w); } w.WriteObjectEnd(); var key = _config.Key; string headerSegment = GetHeaderSegment(key); var claimSegment = w.ToString().Base64UrlEncode(); var signer = _cryptoProvider.GetSigner(); var signature = signer.GetSignature(headerSegment + "." + claimSegment); return(headerSegment + "." + claimSegment + "." + signature.Base64UrlEncode()); }