[AFS3-std] rxgk-afs: moving SetCallBackKey to a separate
document?
Benjamin Kaduk
kaduk@MIT.EDU
Sat, 2 Mar 2013 14:34:02 -0500 (EST)
On Sat, 2 Mar 2013, Simon Wilkinson wrote:
> On 2 Mar 2013, at 18:30, Benjamin Kaduk <kaduk@MIT.EDU> wrote:
>
>> I'm in a similar position as jhutz; I think I understand what the callback protection mechanism should look like, and it doesn't involve protocol level changes outside of SetCallBackKey.
>
> When a server receives a SetCallbackKey RPC, which set of callbacks does
> that RPC apply to?
The flip answer is of course "those from the same client" [over
connections using the indicated security index].
Actually specifying what that means does require some effort; the current
text in the rxgk-afs document is attempting to say that RPCs made over an
rxgk-authenticated connection, where one of the identities in the token
used to authenticate the connection matches the identity used to secure
the SetCallBackKey RPC, will use the key set by the SetCallBackKey RPC.
This is okay for keyed cache managers, where the intent is that a CM
identity will be unique per host, and the SetCallBackKey RPC is called
using a token with just one identity, the CM-specific identity. If that
CM identity is shared between multiple hosts or a single-user CM is using
the user's identity to register SetCallBackKey, this falls apart quickly.
But, we have other ways to identify clients. In particular, we have a
UUID for the cache manager, and this UUID is sent as the appdata field of
the rxgk authenticator. Given that we are indexing fileservers by UUID
for AFSCombineTokens purposes, it seems reasonable to index clients by
cache manager UUID for callback purposes. The (UUID,
SetCallBackKey-securing identity) pair seems like it should be enough to
uniquely identify a client for callback purposes, at least on quick
inspection.
-Ben