Re: KITTEN: IETF 75 - 76

Martin Rex <Martin.Rex@sap.com> Thu, 20 August 2009 18:00 UTC

Return-Path: <Martin.Rex@sap.com>
X-Original-To: kitten@core3.amsl.com
Delivered-To: kitten@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id E95F43A6EDB for <kitten@core3.amsl.com>; Thu, 20 Aug 2009 11:00:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.848
X-Spam-Level:
X-Spam-Status: No, score=-5.848 tagged_above=-999 required=5 tests=[AWL=0.401, BAYES_00=-2.599, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id tkUfG4GHzdfb for <kitten@core3.amsl.com>; Thu, 20 Aug 2009 11:00:28 -0700 (PDT)
Received: from smtpde01.sap-ag.de (smtpde01.sap-ag.de [155.56.68.171]) by core3.amsl.com (Postfix) with ESMTP id 9DC553A6B87 for <kitten@ietf.org>; Thu, 20 Aug 2009 11:00:27 -0700 (PDT)
Received: from mail.sap.corp by smtpde01.sap-ag.de (26) with ESMTP id n7KI0VJO002183 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 20 Aug 2009 20:00:31 +0200 (MEST)
From: Martin Rex <Martin.Rex@sap.com>
Message-Id: <200908201800.n7KI0Uqp020684@fs4113.wdf.sap.corp>
Subject: Re: KITTEN: IETF 75 - 76
To: Nicolas.Williams@sun.com
Date: Thu, 20 Aug 2009 20:00:30 +0200
In-Reply-To: <20090820153638.GW1043@Sun.COM> from "Nicolas Williams" at Aug 20, 9 10:36:38 am
MIME-Version: 1.0
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit
X-Scanner: Virus Scanner virwal07
X-SAP: out
Cc: kitten@ietf.org, Shawn.Emery@sun.com, Martin.Rex@sap.com
X-BeenThere: kitten@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: martin.rex@sap.com
List-Id: Common Authentication Technologies - Next Generation <kitten.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/kitten>, <mailto:kitten-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/kitten>
List-Post: <mailto:kitten@ietf.org>
List-Help: <mailto:kitten-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/kitten>, <mailto:kitten-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 20 Aug 2009 18:00:29 -0000

Nicolas Williams wrote:
> 
> On Thu, Aug 20, 2009 at 05:09:19PM +0200, Martin Rex wrote:
> >
> > Thinking about it, I would actually want to add two more function
> > parameters:
> >        OM_uint32    * lifetime,
> >        gss_bufFer_t   descriptive_message,
> > 
> > to allow application writer to show additional information in
> > selection UIs that they show to users.  :)
> 
> What would descriptive_message have?  A description of the
> mechanism/mechanism family?

An implementation specific text provided to (human) end users
that will help them to recognize/distinguish the nature or purpose
of the particular credential.


> 
> What about lifetime?  Why is that necessary?

In order to distinguish valid from expired credentials right away.

The creation (or refresh) of credentials is still a local matter,
and the information that credentials are available in theory, but
unusable because they're expired is quite helpful.


>
> Sure, we could put all outputs of GSS_Inquire_cred*() here.

I see a difference here.  GSS_Inquire_cred() is about _real_ credential
handles.  The new API call is about _conceivable_ credentials which
the mechanism does not actually need to create.

If you look at the spec, gss_acquire_cred() and gss_inquire_cred()
can fail with GSS_S_CREDENTIALS_EXPIRED, and when they do, the
caller does not get any information about the credentials at all.

With the new API call, expired credentials still don't have to
be created -- the returned information is about "conceivable"
credentials only, not real ones.


>
> Heck, cred_usage seems a lot more useful that lifetime in this context.

Now that you mention it -- I would like a cred_usage INPUT parameter here!


> 
> > A Kerberos principal is going to be an MN for the rfc1964/rfc4121 mech OID,
> > for the pre-rfc1964 mechoid and for the IAKERB mechoid.
> > 
> > But I would NOT want to require the name to be an MN here!
> 
> How could it be anything but?  Oh sure, for a family of mechanisms the
> name could be one that's imported with GSS_Import_name() and a
> mech-specific name type OID, or GSS_C_NULL_OID, and not canonicalized.
> But such a name would likely not be useful for credential acquisition
> for other mechanisms outside that family.
> 
> > I do not want to require that the returned name is an MN (because this
> > would take away the possibility for the gssapi mechanism to
> > select/negotiate the best common mechanism and _require_ the user to
> > perform an a-priori conscious selection.

On a Windows platform, there might be a multi-mechanism offering
ntlm _and_ Kerberos 5.  In theory these use distinct namespaces,
in practice, a mapping is possible if they both refer to an
account in a W2K+ Active Directory.


Do we want an API call that can only enumerate credentials for
individual mechanisms, or more appropriately, an API call that can
enumerate aggregate credentials with names from distinct namespaces.

Possible namespaces for the above could be NameUserPrincipal,
NameSamCompatible, and even an enterprise name (which is, AFAIK
not an MN), without precluding an aggregate credential that
still allows negotiation of the actual mechanism to be used.


-Martin