首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用gRPC进行基于自定义通道的身份验证

使用gRPC进行基于自定义通道的身份验证
EN

Stack Overflow用户
提问于 2018-06-07 00:22:03
回答 1查看 1.4K关注 0票数 3

如何在dotnet中使用gRPC进行简单的通道身份验证?

我希望在通道连接期间只传递客户端机器名称和客户端服务名称,然后能够在服务器中获得它们一次,以此作为识别请求来自何处的一种方式。

我不想在每次调用中都将它们作为元数据传递,我也不想为此实现一个额外的方法。我一直在看文档,并试图实现一些抽象类,如ServerCredentials,但我不知道如何实现,即使是由于一些内部类也是可能的。

当然,我不想为此使用SSL证书,也不想使用OAuth2。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-07 05:59:37

对元数据中的数据进行验证

在元数据中传递它们是一个很好的解决方案。看看hpack吧。你的头将被压缩,只需要几个字节。

您不能将身份验证数据绑定到通道,因为在HTTP/2中不能保证后续调用将使用相同的TCP通道。

也就是说,我仍然在等待GRPC java团队关于基于元数据的自定义身份验证的适当示例。

基于流的身份验证

如果您希望在同一API的后续调用之间保存身份验证数据,也可以选择基于流的身份验证。在我的解释中,这意味着您只需在流的开头传递身份验证数据。然后,您的StreamObserver可以保存身份验证数据,并在随后的onNext()调用中重用它。我使用这种方法,它真的很好用。

示例

代码语言:javascript
复制
service MyService {
  rpc myFunction(stream MyMessage) returns (stream MyResponse)
}
message MyMessage {
  string user = 1;
  string password = 2;

  int32 myMessageVariable = 3;
}

仅应在requestObserever上的第一次onNext(myMessage)调用中设置用户/密码。这也是非常有效的,因为在网络上,流是由StreamId表示的,它是一个字节(取决于您同时打开的流的数量)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50725167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档