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);
            }
        }