[20107] in Kerberos_V5_Development

home help back first fref pref prev next nref lref last post

Re: Alternative proxy-creds API for constrained-delegation

daemon@ATHENA.MIT.EDU (Nico Williams)
Wed Jun 3 00:53:13 2020

Date: Tue, 2 Jun 2020 23:52:52 -0500
From: Nico Williams <nico@cryptonector.com>
To: Isaac Boukris <iboukris@gmail.com>
Message-ID: <20200603045250.GW7856@localhost>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <MDAEMON-F202006022331.AA3127399md5001000000125@sequoia-grove.ad.secure-endpoints.com>
Cc: Simo Sorce <simo@redhat.com>, "krbdev@mit.edu Dev List" <krbdev@mit.edu>,
        heimdal-discuss@heimdal.software
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: krbdev-bounces@mit.edu

On Tue, Jun 02, 2020 at 10:30:47PM -0500, Nico Williams wrote:
> On Wed, Jun 03, 2020 at 01:29:23AM +0200, Isaac Boukris wrote:
> > On Wed, Jun 3, 2020 at 12:05 AM Nico Williams <nico@cryptonector.com> wrote:
> > > On Tue, Jun 02, 2020 at 08:35:14PM +0200, Isaac Boukris wrote:
> > > > I'd still love to see an application signal for the service ticket
> > > > using a cred option or name attribute, more likely to help in samba.
> > >
> > > What exactly would the option specify?  I'm certain we can fit it in one
> > > of three different ways though.
> > 
> > It could specify the delegation-policy for this creds/context for
> > example, or we can make the ticket always available via
> > name-attributes like Simo suggested, but that would be somewhat
> > unrelated work.
> 
> So you're saying you want to be able to say "only accept traditional
> delegated credentials, don't do S4U2Proxy" and also be able to say
> "either is fine"?  And configuration is not enough?  Anyways, my
> preference for that is to use gss_acquire_cred_from().

I'll take that back!  The right interface for this is
gss_store_cred_into() or gss_store_cred_into2().

Here's the idea:

 - you always get a deleg_cred_handle if one was delegated or S4U2Proxy
   is available,

 - you tell gss_store_cred_into() about what you're willing to store and
   with what options,

 - if you say "only real creds" then gss_store_cred_into() will not
   store S4U2Proxy creds.

In Heimdal's master branch we have all of these gss_store_cred_into()
options, all specified as string key/value pairs:

 - appname = <appname>

   This is for appdefaults.

 - unique_ccache_type = <TYPE>

   If you want a krb5_cc_new_unique() cache of some type, this is how
   you get it.  (To find the ccache's name though, you need
   gss_store_cred_into2().)

 - ccache = <TYPE>:<residual>

   You can use %{token}s in the <residual>.

 - username : <username>

   This is for determining if the cred to store is "the best" for the
   <username> (i.e., of the form <username>@<user_realm>).

We could easily add one with the same semantics as the krb5.conf option
you proposed for RBCD.  And if the app doesn't set that, the <appname>
can be used to find an appdefault for it.

This is nice because it allows gss_accept_sec_context() to work with the
default credential, GSS_C_NO_CREDENTIAL.

Nico
-- 
_______________________________________________
krbdev mailing list             krbdev@mit.edu
https://mailman.mit.edu/mailman/listinfo/krbdev

home help back first fref pref prev next nref lref last post