Search in sources :

Example 1 with HttpCaller

use of sun.security.jgss.HttpCaller in project jdk8u_jdk by JetBrains.

the class NegotiatorImpl method init.

/**
     * Initialize the object, which includes:<ul>
     * <li>Find out what GSS mechanism to use from the system property
     * <code>http.negotiate.mechanism.oid</code>, defaults SPNEGO
     * <li>Creating the GSSName for the target host, "HTTP/"+hostname
     * <li>Creating GSSContext
     * <li>A first call to initSecContext</ul>
     */
private void init(HttpCallerInfo hci) throws GSSException {
    final Oid oid;
    if (hci.scheme.equalsIgnoreCase("Kerberos")) {
        // we can only use Kerberos mech when the scheme is kerberos
        oid = GSSUtil.GSS_KRB5_MECH_OID;
    } else {
        String pref = java.security.AccessController.doPrivileged(new java.security.PrivilegedAction<String>() {

            public String run() {
                return System.getProperty("http.auth.preference", "spnego");
            }
        });
        if (pref.equalsIgnoreCase("kerberos")) {
            oid = GSSUtil.GSS_KRB5_MECH_OID;
        } else {
            // currently there is no 3rd mech we can use
            oid = GSSUtil.GSS_SPNEGO_MECH_OID;
        }
    }
    GSSManagerImpl manager = new GSSManagerImpl(new HttpCaller(hci));
    // RFC 4559 4.1 uses uppercase service name "HTTP".
    // RFC 4120 6.2.1 demands the host be lowercase
    String peerName = "HTTP@" + hci.host.toLowerCase();
    GSSName serverName = manager.createName(peerName, GSSName.NT_HOSTBASED_SERVICE);
    context = manager.createContext(serverName, oid, null, GSSContext.DEFAULT_LIFETIME);
    // Always respect delegation policy in HTTP/SPNEGO.
    if (context instanceof ExtendedGSSContext) {
        ((ExtendedGSSContext) context).requestDelegPolicy(true);
    }
    oneToken = context.initSecContext(new byte[0], 0, 0);
}
Also used : GSSName(org.ietf.jgss.GSSName) ExtendedGSSContext(com.sun.security.jgss.ExtendedGSSContext) GSSManagerImpl(sun.security.jgss.GSSManagerImpl) HttpCaller(sun.security.jgss.HttpCaller) Oid(org.ietf.jgss.Oid)

Aggregations

ExtendedGSSContext (com.sun.security.jgss.ExtendedGSSContext)1 GSSName (org.ietf.jgss.GSSName)1 Oid (org.ietf.jgss.Oid)1 GSSManagerImpl (sun.security.jgss.GSSManagerImpl)1 HttpCaller (sun.security.jgss.HttpCaller)1