Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 同一端口上的不同身份验证机制(grpc的TLS和REST的授权)_Go_Ssl_Grpc - Fatal编程技术网

Go 同一端口上的不同身份验证机制(grpc的TLS和REST的授权)

Go 同一端口上的不同身份验证机制(grpc的TLS和REST的授权),go,ssl,grpc,Go,Ssl,Grpc,我正在尝试运行一个服务器,该服务器可以接受具有相互TLS身份验证(TLS.RequireAndVerifyClientCert)的grpc请求,以及一个标准HTTP Web服务器,该服务器基于授权头对请求进行身份验证 我觉得最好将TLS验证留给标准库,因此我更愿意为grpc强制执行TLS.requirendverifyclientcert。但是,对于Web应用程序,浏览器不会转发客户端证书 我一直在尝试使用类似于with-handler的东西来根据请求提供不同的服务。不幸的是,对等证书没有转发给

我正在尝试运行一个服务器,该服务器可以接受具有相互TLS身份验证(
TLS.RequireAndVerifyClientCert
)的grpc请求,以及一个标准HTTP Web服务器,该服务器基于
授权
头对请求进行身份验证

我觉得最好将TLS验证留给标准库,因此我更愿意为grpc强制执行
TLS.requirendverifyclientcert
。但是,对于Web应用程序,浏览器不会转发客户端证书

我一直在尝试使用类似于with-handler的东西来根据请求提供不同的服务。不幸的是,对等证书没有转发给grpc处理程序,只考虑来自Web应用程序的tls配置(不能两者都做)

理想情况下,我还希望将所有内容保存在1个二进制文件中(无反向代理)


您是否看到了解决方案,或者您是否会妥协并手动验证身份验证?

如果不总是需要证书,显然您不能使用RequiredVerifyClientCert。但是,客户端证书应该在中可用(特别是
Peer.AuthInfo.(credentials.TLSInfo).State.VerifiedChains
)。我想我会使用
tls.VerifyClientCertIfGiven
,如果我进入一个带有
len(TLSInfo.State.VerifiedChains)==0的grpc处理程序,就拒绝连接,你觉得怎么样?看起来应该行得通,是的。