【发布时间】:2022-01-10 00:06:03
【问题描述】:
想知道是否有办法访问底层 net.Conn 以使用 SO_PEERCRED 检索用户凭据并在服务器处理请求之前对其进行验证。
来自https://blog.jbowen.dev/2019/09/using-so_peercred-in-go/,需要net.UnixConn 来返回用于验证的unix.Ucred。因此,如果服务器请求处理程序可以通过某种方式访问 net.Conn,这应该很容易
我查看了一个 UnaryServerInterceptor,但 UnaryServerInterceptor 中提供的任何内容似乎都没有包含 net.Conn
func interceptor(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) {
log.Printf("Intercepted: %+v %+v", info.Server, req) // anything here?
return handler(ctx, req)
}
【问题讨论】: