Example usage for org.apache.hadoop.minikdc MiniKdc createPrincipal

List of usage examples for org.apache.hadoop.minikdc MiniKdc createPrincipal

Introduction

In this page you can find the example usage for org.apache.hadoop.minikdc MiniKdc createPrincipal.

Prototype

public synchronized void createPrincipal(File keytabFile, String... principals) throws Exception 

Source Link

Document

Creates multiple principals in the KDC and adds them to a keytab file.

Usage

From source file:fr.infologic.vei.sso.TestMiniKdc.java

License:Apache License

@Test
public void testKerberosLogin() throws Exception {
    MiniKdc kdc = getKdc();
    File workDir = getWorkDir();//w w w . j  a v  a 2s  .  c  o  m
    LoginContext loginContext = null;
    try {
        String principal = "foo";
        File keytab = new File(workDir, "foo.keytab");
        kdc.createPrincipal(keytab, principal);

        Set<Principal> principals = new HashSet<Principal>();
        principals.add(new KerberosPrincipal(principal));

        //client login
        Subject subject = new Subject(false, principals, new HashSet<Object>(), new HashSet<Object>());
        loginContext = new LoginContext("", subject, null,
                KerberosConfiguration.createClientConfig(principal, keytab));
        loginContext.login();
        subject = loginContext.getSubject();
        Assert.assertEquals(1, subject.getPrincipals().size());
        Assert.assertEquals(KerberosPrincipal.class, subject.getPrincipals().iterator().next().getClass());
        Assert.assertEquals(principal + "@" + kdc.getRealm(),
                subject.getPrincipals().iterator().next().getName());
        loginContext.logout();

        //server login
        subject = new Subject(false, principals, new HashSet<Object>(), new HashSet<Object>());
        loginContext = new LoginContext("", subject, null,
                KerberosConfiguration.createServerConfig(principal, keytab));
        loginContext.login();
        subject = loginContext.getSubject();
        Assert.assertEquals(1, subject.getPrincipals().size());
        Assert.assertEquals(KerberosPrincipal.class, subject.getPrincipals().iterator().next().getClass());
        Assert.assertEquals(principal + "@" + kdc.getRealm(),
                subject.getPrincipals().iterator().next().getName());
        loginContext.logout();

    } finally {
        if (loginContext != null) {
            loginContext.logout();
        }
    }
}