[AFS3-std] Re: PTS authentication name mapping draft, second call for review

Simon Wilkinson simon@sxw.org.uk
Mon, 4 Jan 2010 21:10:15 +0000


On 4 Jan 2010, at 15:25, Derrick Brashear wrote:

> Third call for review; I'm gonna ask for a last call later in the
> month as so far all review comment has been incorporated, unless
> something comes up.

Firstly, apologies for not finding the time to review this before now.  
I'm primarily going through this with my rxgk hat on...

I think generally the document is fine. I have one major issue, and  
some minor niggles:

The major issue is with section 11.4, Authentication Name Type  
rewriting. I really don't like the idea of requiring clients to  
rewrite particular GSSAPI names before making calls. I think there are  
a number of issues with this design
   *) It builds in specific Kerberos 5 knowledge to generic GSSAPI  
clients. It is my hope that rxgk clients will be able to be completely  
generic, so their mechanism support can be changed by altering the  
GSSAPI libraries at link time. I would really rather not embed any  
mechanism specific knowledge into these clients
   *) It isn't particularly extensible, because we have no change  
control over GSSAPI. What happens if (unlikely) a Kerberos 4 GSSAPI  
mechanism is standardised? What happens if we add an explicit X509  
mechanism? Before you know it there's a huge tangled web of mappings  
that every client has to be aware of
   *) Client based knowledge is hugely difficult to upgrade. If this  
mapping must be performed, then doing it on the servers hugely  
simplifies the task of maintaining it.
   *) It adds specific mappings to a very rare situation. The  
likelihood of sites running both Kerberos v5 and GSSAPI authentication  
mechanisms concurrently is very small. It would seem far better, in  
the long term, to simply require those sites to add both rxk5 and rxgk  
names to their pts database, than force every available client to have  
hardcoded mapping rules.

The minor niggles are:

 > 8.1. New Data Types
 > #define AUTHDATAMAX 1024

Are we happy that all raw authentication names will be less than 1k in  
length?
 > If a display portion is not provided, the data portion MUST NOT be  
used for user display purposes.
It would seem acceptable for a GSSAPI caller, with knowledge of the  
GSSAPI mechanism, to import the name contained in data, and generate  
its own display name from this. I think the language here disallows  
that though, so it should perhaps be modified.
 > 8.3. GetCapabilities RPC
 > It is proposed that the first 32 bits be allocated to capabilities  
flags, while the remainder be reserved for future standardisation.
I'm a little nervous about what happens to the remaining 195 bytes  
here - in particular if they end up being used for adhoc marshalled  
structures. But I guess that's a point that can be argued during  
"future standardisation"
 > 8.4. Authentication name mapping RPCs
 > In addition to the general-purpose RPC needed to represent this  
extended functionality, a complying server will include RPCs to  
represent the mapping of extended names to AFS IDs.
It's not clear to me what you mean by this paragraph. Is the "general- 
purpose RPC" the GetCapabilities one?
 > 8.4.1. AuthNameToID
The "fallback" parameter to this RPC seems rather inelegant. Can you  
clarify on what the use cases for this are? I wonder if it might be  
cleaner to have different RPCs for the different modes?
Cheers,
Simon.