Package com.linkedin.venice.listener
Class ServerAclHandler
- java.lang.Object
-
- io.netty.channel.ChannelHandlerAdapter
-
- io.netty.channel.ChannelInboundHandlerAdapter
-
- io.netty.channel.SimpleChannelInboundHandler<io.netty.handler.codec.http.HttpRequest>
-
- com.linkedin.venice.listener.ServerAclHandler
-
- All Implemented Interfaces:
io.grpc.ServerInterceptor
,io.netty.channel.ChannelHandler
,io.netty.channel.ChannelInboundHandler
@Sharable public class ServerAclHandler extends io.netty.channel.SimpleChannelInboundHandler<io.netty.handler.codec.http.HttpRequest> implements io.grpc.ServerInterceptor
Together withServerStoreAclHandler
, Server will allow two kinds of access pattern: 1. Access from Router, and Router request will be validated inServerAclHandler
, andServerStoreAclHandler
will be a quick pass-through. 2. Access from Client directly, andServerAclHandler
will deny the request, andServerStoreAclHandler
will validate the request in store-level, which is exactly same as the access control behavior in Router. If both of them fail, the request will be rejected.
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
SERVER_ACL_APPROVED
static io.netty.util.AttributeKey<java.lang.Boolean>
SERVER_ACL_APPROVED_ATTRIBUTE_KEY
-
Constructor Summary
Constructors Constructor Description ServerAclHandler(StaticAccessController accessController)
ServerAclHandler(StaticAccessController accessController, boolean failOnAccessRejection)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
channelRead0(io.netty.channel.ChannelHandlerContext ctx, io.netty.handler.codec.http.HttpRequest req)
Verify if client has permission to access one particular resource.<ReqT,RespT>
io.grpc.ServerCall.Listener<ReqT>interceptCall(io.grpc.ServerCall<ReqT,RespT> call, io.grpc.Metadata headers, io.grpc.ServerCallHandler<ReqT,RespT> next)
-
Methods inherited from class io.netty.channel.SimpleChannelInboundHandler
acceptInboundMessage, channelRead
-
Methods inherited from class io.netty.channel.ChannelInboundHandlerAdapter
channelActive, channelInactive, channelReadComplete, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaught, userEventTriggered
-
Methods inherited from class io.netty.channel.ChannelHandlerAdapter
ensureNotSharable, handlerAdded, handlerRemoved, isSharable
-
-
-
-
Field Detail
-
SERVER_ACL_APPROVED
public static final java.lang.String SERVER_ACL_APPROVED
- See Also:
- Constant Field Values
-
SERVER_ACL_APPROVED_ATTRIBUTE_KEY
public static final io.netty.util.AttributeKey<java.lang.Boolean> SERVER_ACL_APPROVED_ATTRIBUTE_KEY
-
-
Constructor Detail
-
ServerAclHandler
public ServerAclHandler(StaticAccessController accessController)
-
ServerAclHandler
public ServerAclHandler(StaticAccessController accessController, boolean failOnAccessRejection)
-
-
Method Detail
-
channelRead0
public void channelRead0(io.netty.channel.ChannelHandlerContext ctx, io.netty.handler.codec.http.HttpRequest req) throws javax.net.ssl.SSLPeerUnverifiedException
Verify if client has permission to access one particular resource.- Specified by:
channelRead0
in classio.netty.channel.SimpleChannelInboundHandler<io.netty.handler.codec.http.HttpRequest>
- Parameters:
ctx
-req
-- Throws:
javax.net.ssl.SSLPeerUnverifiedException
-
interceptCall
public <ReqT,RespT> io.grpc.ServerCall.Listener<ReqT> interceptCall(io.grpc.ServerCall<ReqT,RespT> call, io.grpc.Metadata headers, io.grpc.ServerCallHandler<ReqT,RespT> next)
- Specified by:
interceptCall
in interfaceio.grpc.ServerInterceptor
-
-