internal BearerToken CreateAccessToken(ClaimsPrincipal claimsPrincipal, TimeSpan validTime) { byte[] encryptedToken; using (var stream = GlobalVars.RecyclableMemory.GetStream("claims-principal", 32)) { using (var bwriter = new BinaryWriter(stream, Encoding.UTF8, true)) { claimsPrincipal.WriteTo(bwriter); } byte[] serializedClaims = stream.ToArray(); DateTime validity = DateTime.Now + validTime; var serverBearer = new ServerAccessToken(serializedClaims, validity); using (var mem = GlobalVars.RecyclableMemory.GetStream()) { ProtoBuf.Serializer.Serialize(mem, serverBearer); byte[] serializedTmpBuf = mem.GetBuffer(); // Закриптовать. encryptedToken = Jwt.EncryptToBytes(serializedTmpBuf.AsSpan(0, (int)mem.Length)); } var token = new BearerToken(encryptedToken, validity); return(token); } }