用Go语言编写的grpc头部/cookie

7

我希望能够在服务器上部署一个应用程序,可以被Go APP和Java app调用。由于某些原因,需要进行cookie身份验证和oAuth机制,因此我想将一个Go应用程序设置为身份验证微服务,以用于身份验证目的。

由于GRPC是建立在HTTP2之上的,因此头文件和Cookie位于协议中。但是我没有找到如何在发生RPC时携带头文件和Cookie的方法,在GitHub上只找到了JAVA-Implementation的头文件实现:

https://github.com/grpc/grpc-java/tree/master/examples/src/main/java/io/grpc/examples/header

有人能指导我如何实现这个目的的Go语言实现吗?

不要介意我自己吹嘘一下:在 gRPC Java 中,我们实现了对 cookies 的支持,这是通过一个自定义的 ClientInterceptor 实现的。 我们通过检查从服务器响应中接收到的 set-cookie HTTP 标头来管理 cookies,并通过在请求中使用 cookie HTTP 标头转发 cookies 到服务器。https://github.com/shamsimam/grpc-java-cookies - shams
1个回答

25
gRPC中的头部被称为"元数据"。客户端只能发送"头部"。服务器可以发送"头部"和"尾部"。
您可以:
- 使用`google.golang.org/grpc/metadata`包和`metadata.NewOutgoingContext()`从客户端发送元数据。 - 使用`grpc.SendHeader()`和`grpc.SetTrailer()`从服务器端发送元数据。 - 使用`grpc.Header()`和`grpc.Trailer()`的`CallOptions`在客户端接收元数据。 - 使用`metadata.FromIncomingContext()`在服务器端接收元数据。

2
官方文档在 https://github.com/grpc/grpc-go/blob/master/Documentation/grpc-metadata.md 上真的做得非常好。 - Luke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接