grpc-rust icon indicating copy to clipboard operation
grpc-rust copied to clipboard

Support for additional headers

Open softprops opened this issue 7 years ago • 2 comments

At the moment it looks like call_impl supports a fixed set of headers when starting a request. The wire format outlines a few others http://www.grpc.io/docs/guides/wire.html. in particular I'm wondering there is a way to start a request with the authorization header to authenticate requests? If not, would you be open to a pull request adding that support?

softprops avatar Dec 13 '16 12:12 softprops

Yes, pull request would be great. But before starting implementation, let's discuss, what API for specifying additional header should look like.

stepancheg avatar Dec 13 '16 22:12 stepancheg

Sry for the slow reply, I'm now swinging back in to see the state of things.

so looking that this example for instance you may want to provide an interface for user defined headers I was digging a while back and found this vec of the required ':'-prefixed headers. For the non :-prefixed headers, my first through would be to provide those as vec/hashset of httpbis::Headers.

I'm specifically interested in ( and blocked by ) send the authorization header. I took a look at go grpc's auth docs

After reading their strategy I changed my mind a bit. It's not really a thing I want to have to provide on each request but configuration I'd want to set once. I dug around a bit more and identified GrpcClientConf which may actually be a nicer candidate for users to configure things default headers like authorization and timeouts. If you capture and add the conf data to the GrpcClient instance, the call_impl could just append self.conf.headers to the list of headers it builds up for the request.

I like this best because the bootstrapping of the client tends to be where you want to configure authorization credentials and other details.

There's a separate question about structured Headers. I haven't looked into specific headers have defined value types. But I think it would be simplest to expose your httpbis::Header type as the interface for providing headers

softprops avatar Mar 02 '17 06:03 softprops