[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Was a smartcard used to get the ticket?
Phil Fisher wrote:
> Is it possible to find out if a smartcard was used to get a ticket?
>
I too am interested in this issue, and this was brought up on the ietf krb-wg
mailing list, and a discussion on "levels of assurance" was held after the
working group meeting a few weeks ago in Chicago.
There is a hw-authent bit in the TicketFlags, the the KDC should set if a hardware
device was used to authenticate. But for some this is not enought information.
Some people where interested in adding SAML assertions to the auth-data.
Others where interested in extending the PKINIT (RFC 4556) auth-data to also
include either the cert actually used or at least an ExternalPrincipalIdentifier
of the user certificate.
> A ticket is obtained with kinit. This may be with or without the -C
> PKCS11:... option to use a smartcard.
>
> My application then uses gss_init_sec_context() with GSS_C_NO_CREDENTIAL
> to get the default. It would be useful to know if a smartcard was used
> so that:
> 1) an administrator can insist on smartcards being used.
> 2) the application can adjust its response to a smartcard being removed.
Are you assuming the application is being run on the same machine? But
it is the KDC that needs to make the call.
The only way a KDC can know if a smart card was actually being use is by
trusting the CA that issued the certificate, that the private key associated
with the certificate is on a smartcard, and can not be read off the card.
(Other wise the user could have copied the cert and key and used software.)
>
> I've not found anything relevant in the documentation or with Google.
>
> nm on libgssapi.so shows gsskrb5_extract_authz_data_from_sec_context()
> which looks promising, but I'm not sure what it gives or how to use it.
> I assume that it returns an AuthorizationData structure, but I'm not
> clear if this contains the information I need or what value the ad_type
> parameter should have.
>
> Is what I want possible? Is
> gsskrb5_extract_authz_data_from_sec_context() the right way to get the
> information? Is its use documented somewhere?
I know Windows AD will set the hw-authent bit, if you use a smart card,
but not sure if Heimdal KDC will set it, or if the Heimdal klist will show it.
(The hw-authent could also imply an OTP or other hardware device, and not
a smartcard.)
But is is also not clear if the KDC will only set the hw-authent bit if
if the KDC has the requires-hw-auth set on the user entry. (I don't have
a heimdal KDC.)
So today your best bet is to look at the TicketFlags. It looks like the Heimdal
gsskrb5_inquire_sec_context_by_oid with the OID of GSS_KRB5_GET_TKT_FLAGS_X
will return them.
If so, and your KDC's only hardware devices are smart cards from CAs using
only smartcard card, then this could be your bit.
> I'm using Heimdal 1.0.
>
> Many thanks,
>
> Phil
>
> _________________________________________________________________
> Get Pimped! FREE emoticon packs from Windows Live -
> http://www.pimpmylive.co.uk
>
>
--
Douglas E. Engert <DEEngert@anl.gov>
Argonne National Laboratory
9700 South Cass Avenue
Argonne, Illinois 60439
(630) 252-5444