1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
   2 <html>
   3 <head>
   4 <!--
   5 Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
   6 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   7 
   8 This code is free software; you can redistribute it and/or modify it
   9 under the terms of the GNU General Public License version 2 only, as
  10 published by the Free Software Foundation.  Oracle designates this
  11 particular file as subject to the "Classpath" exception as provided
  12 by Oracle in the LICENSE file that accompanied this code.
  13 
  14 This code is distributed in the hope that it will be useful, but WITHOUT
  15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  16 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  17 version 2 for more details (a copy is included in the LICENSE file that
  18 accompanied this code).
  19 
  20 You should have received a copy of the GNU General Public License version
  21 2 along with this work; if not, write to the Free Software Foundation,
  22 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  23 
  24 Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  25 or visit www.oracle.com if you need additional information or have any
  26 questions.
  27 -->
  28 
  29 </head>
  30 <body bgcolor="white">
  31 
  32     This package presents a framework that allows application developers to
  33     make use of security services like authentication, data integrity and
  34     data confidentiality from a variety of underlying security mechanisms
  35     like Kerberos, using a unified API. The security mechanisms that an
  36     application can
  37     chose to use are identified with unique object identifiers. One example 
  38     of such a mechanism is the Kerberos v5 GSS-API mechanism (object
  39     identifier 1.2.840.113554.1.2.2). This mechanism is available through
  40     the default instance of the GSSManager class.<p>
  41 
  42     The GSS-API is defined in a language independent way in 
  43     <a href=http://www.ietf.org/rfc/rfc2743.txt>RFC 2743</a>. The Java
  44     language bindings are defined in 
  45     <a href=http://www.ietf.org/rfc/rfc2853.txt>RFC 2853</a><p>
  46 
  47     An application starts out by instantiating a <code>GSSManager</code>
  48     which then serves as a factory for a security context. An application
  49     can use specific principal names and credentials that are also created
  50     using the GSSManager; or it can instantiate a
  51     context with system defaults. It then goes through a context
  52     establishment loop. Once a context is established with the
  53     peer, authentication is complete. Data protection such as integrity
  54     and confidentiality can then be obtained from this context.<p>
  55 
  56     The GSS-API does not perform any communication with the peer. It merely 
  57     produces tokens that the application must somehow transport to the
  58     other end.<p>
  59 
  60 <h3>Credential Acquisition</h3>
  61 <a name=useSubjectCredsOnly>
  62     The GSS-API itself does not dictate how an underlying mechanism
  63     obtains the credentials that are needed for authentication. It is
  64     assumed that prior to calling the GSS-API, these credentials are
  65     obtained and stored in a location that the mechanism provider is
  66     aware of. However, the default model in the Java platform will be
  67     that mechanism providers must obtain credentials only from the private
  68     or public credential sets associated with the
  69     {@link javax.security.auth.Subject Subject} in the
  70     current access control context.  The Kerberos v5  
  71     mechanism will search for the required INITIATE and ACCEPT credentials 
  72     ({@link javax.security.auth.kerberos.KerberosTicket KerberosTicket} and
  73      {@link javax.security.auth.kerberos.KerberosKey KerberosKey}) in
  74     the private credential set where as some other mechanism might look
  75     in the public set or in both.  If the desired credential is not
  76     present in the appropriate sets of the current Subject, the GSS-API
  77     call must fail.<p>
  78 
  79     This model has the advantage that credential management
  80     is simple and predictable from the applications point of view.  An
  81     application, given the right permissions, can purge the credentials in
  82     the Subject or renew them using standard Java API's.  If it purged
  83     the credentials, it would be sure that the JGSS mechanism would fail,
  84     or if it renewed a time based credential it would be sure that a JGSS
  85     mechanism would succeed.<p>
  86 
  87     This model does require that a {@link
  88     javax.security.auth.login JAAS login} be performed in order to
  89     authenticate and populate a Subject that the JGSS mechanism can later 
  90     utilize. However, applications have the ability to relax this
  91     restriction by means of a system property:
  92     <code>javax.security.auth.useSubjectCredsOnly</code>. By default
  93     this system property will be assumed to be <code>true</code> (even when
  94     it is unset) indicating that providers must only use the credentials
  95     that are present in the current Subject. However, if this property is
  96     explicitly set to false by the application, then it indicates that
  97     the provider is free to use any credentials cache of its choice. Such
  98     a credential cache might be a disk cache, an in-memory cache, or even
  99     just the current Subject itself.
 100 </a>
 101 
 102 <h2>Related Documentation</h2>
 103 <p>
 104 For an online tutorial on using Java GSS-API, please see
 105 <a href="../../../../technotes/guides/security/jgss/tutorials/index.html">Introduction to JAAS and Java GSS-API</a>.
 106 </p>
 107 
 108 <!--
 109 <h2>Package Specification</h2>
 110 
 111 ##### FILL IN ANY SPECS NEEDED BY JAVA COMPATIBILITY KIT #####
 112 <ul>
 113   <li><a href="">##### REFER TO ANY FRAMEMAKER SPECIFICATION HERE #####</a>
 114 </ul>
 115 
 116 <h2>Related Documentation</h2>
 117 
 118 For overviews, tutorials, examples, guides, and tool documentation, please see:
 119 <ul>
 120   <li><a href="">##### REFER TO NON-SPEC DOCUMENTATION HERE #####</a>
 121 </ul>
 122 
 123 -->
 124 
 125 @since 1.4
 126 </body>
 127 </html>