Obtaining service ticket with JAVA JAAS
Seema Malkani
Seema.Malkani at Sun.COM
Mon Aug 21 15:08:53 EDT 2006
The Kerberos service ticket is obtained internally, and stored in the
Subject's private credentials, after successful authentication.
At the client-end :
// Identify the name of the server.
GSSName serverName = manager.createName("nfs/foo.sun.com",
GSSName.NT_HOSTBASED_SERVICE);
// Instantiate and initialize a security context that will be
// established with the server
GSSContext context = manager.createContext(serverName,
krb5Mechanism,
null,
GSSContext.DEFAULT_LIFETIME);
At the server-end :
// Acquire credentials for the server
GSSCredential serverCreds = manager.createCredential(serverName,
GSSCredential.DEFAULT_LIFETIME,
krb5Mechanism,
GSSCredential.ACCEPT_ONLY);
// Instantiate and initialize a security context that will
// wait for an establishment request token from the client
GSSContext context = manager.createContext(serverCreds);
Please refer to Java GSS tutorials for details:
http://java.sun.com/j2se/1.5.0/docs/guide/security/jgss/tutorials/index.html
Seema
Olfmatic wrote On 08/21/06 10:00,:
>Hello,
>
>can anybody please send some lines of JAVA code in which a service ticket is acquired by the KDC? I tried it like this
>
> // Performing Kerberos login
> LoginContext tLoginContext = new LoginContext("JaasLogin");
> tLoginContext.login();
> final Subject tSubject = tLoginContext.getSubject();
>
> Subject.doAs(tSubject, new PrivilegedExceptionAction()
> {
> public Object run() throws Exception
> {
>
> Principal tPrincipal = (Principal)tSubject.getPrincipals().iterator().next();
> KerberosTicket tTicket = (KerberosTicket) tSubject.getPrivateCredentials(
> KerberosTicket.class).iterator().next();
>
> GSSManager tGSSManager = GSSManager.getInstance();
> Oid tKerberosOID = new Oid("1.2.840.113554.1.2.2");
> GSSName tGSSName = tGSSManager.createName("myservice/servicehost.myrealm.de at MYREALM.DE", GSSName.NT_USER_NAME, tKerberosOID);
> GSSCredential tServiceCredential = tGSSManager.createCredential(tGSSName, GSSCredential.INDEFINITE_LIFETIME, tKerberosOID, GSSCredential.INITIATE_AND_ACCEPT);
> }
> }
>
>
>but this doesn't work. For some reason, the principal's name in tGSSManager.createName() is still the one from my WIN2003-Login. I get a valid TGT from tLoginContext.login() but acquiring the service ticket fails. Is this the right approachment to this problem?
>
>This is my auth.conf:
>
>
>JaasLogin {
> //Kerberos single-sign-on login module
> com.sun.security.auth.module.Krb5LoginModule required debug=true useTicketCache=true ;
>};
>
>other {
> // jBoss LoginModule
> org.jboss.security.ClientLoginModule required;
> // Put your login modules that need jBoss here
>};
>
>
>Thanks for any help in advance.
>
>________________________________________________
>Kerberos mailing list Kerberos at mit.edu
>https://mailman.mit.edu/mailman/listinfo/kerberos
>
>
More information about the Kerberos
mailing list