Update 11/13/2007: What is proposed for 0.16.0 :
The client can set a user ticket (as defined in
HADOOP-1701) for each connection and that ticket is made available to RPC calls at the server. The client can replace the ticket at any time. The main advantage is that rest of the the client RPCs don't need to be aware of the user tickets.
What RPC would ideally support in future :
In the current version of RPC, there is no authentication or data protection. We propose to change the RPC framework, so that secure communication is possible.
The new RPC should:
- Compatible with current RPC
- Allow a pluggable security implementations (see
- Support both secure and non-secure modes.
Here is a rough idea:
- Store security information (e.g. username, keys) in a ticket
- Use the ticket to establish a RPC connection
- Create secure sockets by the (subclass of) SocketFactory corresponding to the selected security implementations
- Send the data and RPC parameters with the secure sockets
When authentication is supported, the RPC callee should also initialize caller information during RPC setup and execute the RPC on the caller's behalf.