Thrift RPC 标头

Posted

技术标签:

【中文标题】Thrift RPC 标头【英文标题】:Thrift RPC headers 【发布时间】:2013-09-06 11:50:46 【问题描述】:

在进行远程调用时,Thrift 是否具有传递令牌(例如身份验证令牌字符串)的机制?我能看到的唯一选择是在方法签名中包含身份验证令牌字符串?

【问题讨论】:

【参考方案1】:

不,不像例如带有 SOAP 的 WS-Security,这被认为超出了 Thrift 的范围。这部分由应用程序的更高层或其他机制来实现,具体取决于您使用的传输方式。

【讨论】:

有一种方法可以在服务器端进行,例如使用 http 和 cookie。请参阅下面链接中的示例。关于客户端,我一无所知,因为节俭是发起呼叫的人 - 没有包装。 github.com/apache/thrift/tree/master/tutorial/js【参考方案2】:

可以通过 HTTP 执行此操作 - HTTP 服务器和客户端可以在 http(s) 标头中讨论用户 ID 和令牌。

在客户端,继承thrift http 客户端。向它注册键值对,以便在后续请求中提供。

在服务器端,编写一个过滤器,接收然后存储 http 请求头变量,然后将其传递给处理节俭代码。现在,如何处理服务器上的令牌是您的事。您可能 -- 允许/禁止基于令牌访问整个接口(对内部、开发人员服务有用),或者通过线程本地对象将用户标识令牌传递给服务对象(丑陋但可行)。

【讨论】:

您有一个示例来说明如何做到这一点吗?主要问题在客户端。在服务器端,您有一种将 http 正文传递给 thrift 处理器的机制。这如何在客户端完成? “子类化 thrift http 客户端”是什么意思? 看下面的例子:服务器端是完全可配置的,但是我看不到如何配置客户端:github.com/apache/thrift/tree/master/tutorial/js 请参阅:people.apache.org/~thejas/thrift-0.9/javadoc/org/apache/thrift/… ... 已设置自定义标头。我不确定这是否在常规 thrift 0.9 中,或者 THttpClient 是否为此目的被黑客入侵。但是,我相当确定应该可以使用生成的代码来序列化/反序列化 thrift 请求数据并添加您自己的 HTTP 传输层类型的东西(即寻找 THttpClient 的实现和你可以做任何事情)。如果此链接没有帮助,您可以尝试 thrift 用户组。

以上是关于Thrift RPC 标头的主要内容,如果未能解决你的问题,请参考以下文章

Thrift总结创建RPC服务

Thrift RPC实战 thrift序列化揭秘

Thrift RPC实战.初次体验Thrift

RPC框架之Thrift架构及源码解读

RPC框架之Thrift架构及源码解读

Thrift RPC 系列教程——Thrift语言