<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<!--
Copyright 2001-2006 Sun Microsystems, Inc.  All Rights Reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.

This code is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2 only, as
published by the Free Software Foundation.  Sun designates this
particular file as subject to the "Classpath" exception as provided
by Sun in the LICENSE file that accompanied this code.

This code is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
version 2 for more details (a copy is included in the LICENSE file that
accompanied this code).

You should have received a copy of the GNU General Public License version
2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.

Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
CA 95054 USA or visit www.sun.com if you need additional information or
have any questions.
-->

</head>
<body bgcolor="white">

    This package contains utility classes related to the Kerberos network
    authentication protocol. They do not provide much Kerberos support
    themselves.<p>

    The Kerberos network authentication protocol is defined in 
    <a href=http://www.ietf.org/rfc/rfc4120.txt>RFC 4120</a>. The Java
    platform contains support for the client side of Kerberos via the 
    {@link org.ietf.jgss} package. There might also be 
    a login module that implements
    {@link javax.security.auth.spi.LoginModule LoginModule} to authenticate 
    Kerberos principals.<p>

    You can provide the name of your default realm and Key Distribution
    Center (KDC) host for that realm using the system properties
    java.security.krb5.realm and java.security.krb5.kdc. Alternatively, you 
    can provide an MIT style configuration file called krb5.conf in
    &lt;java-home&gt;/lib/security. If you place this file elsewhere, you can
    indicate that location via the system property java.security.krb5.conf.<p>
<!--
<h2>Package Specification</h2>

##### FILL IN ANY SPECS NEEDED BY JAVA COMPATIBILITY KIT #####
<ul>
  <li><a href="">##### REFER TO ANY FRAMEMAKER SPECIFICATION HERE #####</a>
</ul>

<h2>Related Documentation</h2>

For overviews, tutorials, examples, guides, and tool documentation, please see:
<ul>
  <li><a href="">##### REFER TO NON-SPEC DOCUMENTATION HERE #####</a>
</ul>

-->

@since JDK1.4
</body>
</html>
