Template Version: @(#)sac_nextcase %I% %G% SMI
This information is Copyright 2009 Sun Microsystems
1. Introduction
    1.1. Project/Component Working Name:
         Kerberos CCAPI
    1.2. Name of Document Author/Supplier:
         Author:  Shawn Emery
    1.3  Date of This Document:
        15 January, 2009
4. Technical Description
Template Version: @(#)sac_nextcase 1.66 04/17/08 SMI
This information is Copyright 2009 Sun Microsystems
1. Introduction
    1.1. Project/Component Working Name:
        CCAPI
    1.2. Name of Document Author/Supplier:
        Author:  Shawn M. Emery
    1.3  Date of This Document:
        5 January, 2009
4. Technical Description

1.  Introduction

        Project will create a new credential cache type that will allow a per
        session Kerberos credential cache.  The CCAPI cache type will not be
        the default credential cache type for normal initial authentication,
        it will remain "FILE".

        Per session ccaches is highly desirable for a number of reasons, but
        for this particular project it is required that credentials used for
        long running proccesses not interfere/overwrite credentials that are
        created from normal operations such as initial authentication or
        delegation.

2.  Overview

        - introduce CCAPI to the krb5 mech library
                - support for per session ccache
                - daemon for ccache in memory accross processes
                - door fs for IPC between user processes and daemon
                        - get peer cred useful for authentication
        - gssd revamp
                - per user gssd
                - doors fs will be new form of messaging from kernel space
                        - get peer cred useful for authentication
                - use new CCAPI

3.  Daemon

        New per user daemon is proposed, ccd (credential cache daemon).  ccd(1M)
        contains various credential cache stores for the user.  Particular
        ccache stores in the daemon are referenced by the tuple
        (uid, session id).  The uid and session-id are ascii string characters.
        session id can be configurable through libraries and environment
        variable.

4.  krb5 mech

        The daemon is invoked through the mech_krb5 user library.  The idea
        is to minimally affect the invoking process when the first and only
        ccd process is instantiated for the user.

        The associated door file will remain open after the mech has returned.
        This will provide a way of determining prior startup of the ccd process.

5.  IPC

        Preferred form of IPC is doors, even though MIT implementation in
        Unix is domain sockets.  With doors we can perform credentialling with
        native functions, e.g. door_ucred(3C).

        An attempt will be made to make the IPC code as portable as possible.

6.  Interface table

        Release Binding                         micro/patch

        ccd                                     Consolidation private and
                                                created by this project.

        New krb5_envvar(5) ccache type          Unstable

        New krb5.conf(4) ccache type stanza     Evolving

7.  Related CR/PSARCs

6210470 No provision for delayed execution (cron/at) for services requiring 
Kerberos credentials
6618410 want pam module to authenticate by kerberos keytab

8.  Manual page differences

krb5envvar.5:
@@ -43,11 +43,11 @@
 
          Used by the mechanism to specify  the  location  of  the
          credential cache. The variable can be set to the follow-
          ing value:
 
-           [[<cc type>:]<file name>]
+           [[<cc type>:]<name>]
 
          where <cc type> can be FILE or MEMORY.  <file  name>  is
          the location of the principal's credential cache.
 
          If KRB5CCNAME is not defined, the default value is:
@@ -75,10 +75,16 @@
 
          The MEMORY credential cache type is used only in special
          cases,  such  as  when  making a temporary cache for the
          life of the invoking process.
 
+        The API credential cache type is a memory credential cache
+        store shared between a user's processes.  This cache is
+        helpful in storing per session credentials caches.  This
+        allows for the ability to have multiple default credentials
+        that are autonomous. 
+
      KRB5RCNAME
 
          Used by the mechanism to specify the type  and  location
          of the replay cache. The variable can be set to the fol-
          lowing value:

krb5.conf.4:
@@ -230,10 +230,16 @@
          vulnerable  to  DNS spoofing attacks. This parameter can
          be in the [realms] section to  set  it  on  a  per-realm
          basis, or it can be in the [libdefaults] section to make
          it a network-wide setting for all realms.
 
+     ccache_type
+
+         Contains the credential cache type used by the system.  Valid values
+         are "file" or "ccapi".  If unspecified then the default type is 
"file".
+         Refer to krb5envvar(5) under KRB5CCNAME for a description of each 
type.
+
   [appdefaults]
      This section contains subsections for Kerberos  V5  applica-
      tions,  where relation-subsection is the name of an applica-
      tion. Each subsection contains  relations  that  define  the
      default behaviors for that application.

9. JGSS

JGSS will continue to only support "FILE" credential cache types at this time.

10. Resources and Schedule
    10.4. Steering Committee requested information
        10.4.1. Consolidation C-team Name:
                ON
    10.5. ARC review type: FastTrack
    10.6. ARC Exposure: open

6. Resources and Schedule
    6.4. Steering Committee requested information
        6.4.1. Consolidation C-team Name:
                ON
    6.5. ARC review type: FastTrack
    6.6. ARC Exposure: open


Reply via email to