@Override public Subject subject() { return loginContext.getSubject(); }
@Override public AppConfigurationEntry[] getAppConfigurationEntry(String name) { return new AppConfigurationEntry[] { new AppConfigurationEntry( KERBEROS_LOGIN_MODULE, AppConfigurationEntry.LoginModuleControlFlag.REQUIRED, options)}; } };
@Override public void afterResponse( HandshakeResponse hr ) { try { if ( loginContext != null ) { loginContext.logout(); } } catch ( LoginException e ) { e.printStackTrace(); //work is done just ignore } }
private synchronized LoginContext login(final String loginContextName) throws LoginException { if (loginContextName == null) { throw new LoginException("loginContext name (JAAS file section header) was null. " + "Please check your java.security.login.auth.config (=" + System.getProperty("java.security.login.auth.config") + ") and your " + ZooKeeperSaslClient.LOGIN_CONTEXT_NAME_KEY + "(=" + System.getProperty(ZooKeeperSaslClient.LOGIN_CONTEXT_NAME_KEY, "Client") + ")"); } LoginContext loginContext = new LoginContext(loginContextName, callbackHandler); loginContext.login(); LOG.info("successfully logged in."); return loginContext; }
@Override public LoginContext login() throws LoginException { loginContext = new LoginContext(contextName, null, loginCallbackHandler, configuration); loginContext.login(); log.info("Successfully logged in."); return loginContext; }
@Override public void login() throws LoginException { /* * Here is where we get the functionality of a mock while simultaneously * performing the creation of an expiring credential */ mockLoginContext.login(); testExpiringCredentialRefreshingLogin.createNewExpiringCredential(); }
public LoginContext createLoginContext(ExpiringCredentialRefreshingLogin expiringCredentialRefreshingLogin) throws LoginException { return new LoginContext(expiringCredentialRefreshingLogin.contextName(), expiringCredentialRefreshingLogin.subject(), expiringCredentialRefreshingLogin.callbackHandler(), expiringCredentialRefreshingLogin.configuration()); }
@Override public synchronized LoginContext login() throws LoginException { if (expiringCredentialRefreshingLogin != null) return expiringCredentialRefreshingLogin.login(); throw new LoginException("Login was not configured properly"); } }
@Override public void destroy() { keytab = null; serverSubject = null; for (LoginContext loginContext : loginContexts) { try { loginContext.logout(); } catch (LoginException ex) { log.warn(ex, ex.getMessage()); } } loginContexts.clear(); }
@Override public void logout() throws LoginException { /* * Here is where we get the functionality of a mock while simultaneously * performing the removal of an expiring credential */ mockLoginContext.logout(); testExpiringCredentialRefreshingLogin.clearExpiringCredential(); }
/** {@inheritDoc} */ @Override public void stop(StopContext context) { // Trigger a reload of configuration if anything else uses it. synchronized(Configuration.class) { Configuration.setConfiguration(null); } }
@Override public void configure(Map<String, ?> configs, String contextName, Configuration configuration, AuthenticateCallbackHandler callbackHandler) { assertEquals(1, configuration.getAppConfigurationEntry(contextName).length); this.contextName = contextName; this.configuration = configuration; }
private void checkEntry(AppConfigurationEntry entry, String loginModule, LoginModuleControlFlag controlFlag, Map<String, ?> options) { assertEquals(loginModule, entry.getLoginModuleName()); assertEquals(controlFlag, entry.getControlFlag()); assertEquals(options, entry.getOptions()); }
private String controlFlag(LoginModuleControlFlag loginModuleControlFlag) { // LoginModuleControlFlag.toString() has format "LoginModuleControlFlag: flag" String[] tokens = loginModuleControlFlag.toString().split(" "); return tokens[tokens.length - 1]; }
private static SessionFactory sessionFactory; private static ServiceRegistry serviceRegistry; public static SessionFactory createSessionFactory() { Configuration configuration = new Configuration(); configuration.configure(); ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings( configuration.getProperties()). buildServiceRegistry(); sessionFactory = configuration.buildSessionFactory(serviceRegistry); return sessionFactory; }
@Override public Subject getSubject() { // here we just need the functionality of a mock return mockLoginContext.getSubject(); } }
@Override public AppConfigurationEntry[] getAppConfigurationEntry(String name) { return new AppConfigurationEntry[] { new AppConfigurationEntry("com.sun.security.auth.module.Krb5LoginModule", AppConfigurationEntry.LoginModuleControlFlag.REQUIRED, customLoginConfig)}; } };
public static TestJaasConfig createConfiguration(String clientMechanism, List<String> serverMechanisms) { TestJaasConfig config = new TestJaasConfig(); config.createOrUpdateEntry(LOGIN_CONTEXT_CLIENT, loginModule(clientMechanism), defaultClientOptions(clientMechanism)); for (String mechanism : serverMechanisms) { config.addEntry(LOGIN_CONTEXT_SERVER, loginModule(mechanism), defaultServerOptions(mechanism)); } Configuration.setConfiguration(config); return config; }
public void createOrUpdateEntry(String name, String loginModule, Map<String, Object> options) { AppConfigurationEntry entry = new AppConfigurationEntry(loginModule, LoginModuleControlFlag.REQUIRED, options); entryMap.put(name, new AppConfigurationEntry[] {entry}); }
/** * Add a section to the jaas.conf * @param name Section name * @param loginModuleName Login module name * @param conf login key/value args */ public void addSection(String name, String loginModuleName, final Map<String,String> conf) { AppConfigurationEntry[] entries = new AppConfigurationEntry[1]; entries[0] = new AppConfigurationEntry(loginModuleName, LoginModuleControlFlag.REQUIRED, conf); this.sections.put(name, entries); }