Open MengJiapeng opened 2 years ago
没太理解,在什么场景下,这个头部是啥?。。
使用MOSN作为集群网关的场景下,在网关侧做TLS终止,但是后端服务又依赖客户端提供的证书做认证。
Envoy对应的功能实现:https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers#x-forwarded-client-cert
一个简单的做法,修改mosn代码把tls.ConnectionState保存到变量variable中,然后写一个filter模块获取ConnectionState,想塞什么值就塞什么到header。
https://github.com/mosn/mosn/blob/d5bfc7c73c5911468dfdadfecd8d8a57de4e525d/pkg/proxy/proxy.go#L160
https://github.com/mosn/mosn/blob/d5bfc7c73c5911468dfdadfecd8d8a57de4e525d/pkg/filter/stream/ipaccess/stream_filter.go#L49 这样也可以获取conn,然后filter做判断是否tls,然后塞header
好的,谢谢
如果要做filter 模块,可以直接获取connection 判断是否是tls connection 就可以了 。
conn := f.handler.Connection().RawConn();
if tlsConn, ok := conn.(*mtls.TLSConn); ok {
}
@MengJiapeng 感觉可以做一个通用的filter模块,push给MOSN社区 😄
当前是否支持将客户端证书通过头部的方式透传给后端?