Hi Nathaniel,
Thank you for your reply.
In our deployment we use GRPC only between components that are part of our network, which is secured at a lower layer of the stack. Our general approach is _not_ to require all of our applications to implement transport level security or encryption, as that service is supplied by the network level.
However, we would like to extend the GRPC communication to support user-based authentication / authorization which by definition is an application-specific construct.
Although I understand that it would be possible for a naive user to leak credentials if they used an insecure channel but used credentials on it, the current implementation stance of python GRPC prevents us from using authorization without an unnecessary (and undesired) level of transport encryption.
One proposal we considered to handle this would be to have a "null" channel credentials object -- i.e. make it an obvious decision by the application programmer to use call credentials _without_ channel security.
Specifically, the call site would be something like:
grpc.composite_channel_credentials(
grpc_insecure_channel_credentials(),
my_custom_call_credentials()
)