@Test public void spacesInLoginConfigPathAreAccepted() throws Exception { File configFile; // Create temp directory with a space in the name File configDir = new File(System.getProperty("java.io.tmpdir") + File.separator + "jaas test"); configDir.deleteOnExit(); if (configDir.exists()) { configDir.delete(); } configDir.mkdir(); configFile = File.createTempFile("login", "conf", configDir); configFile.deleteOnExit(); FileOutputStream fos = new FileOutputStream(configFile); PrintWriter pw = new PrintWriter(fos); pw.append("JAASTestBlah {" + "org.springframework.security.authentication.jaas.TestLoginModule required;" + "};"); pw.flush(); pw.close(); JaasAuthenticationProvider myJaasProvider = new JaasAuthenticationProvider(); myJaasProvider.setApplicationEventPublisher(context); myJaasProvider.setLoginConfig(new FileSystemResource(configFile)); myJaasProvider.setAuthorityGranters(jaasProvider.getAuthorityGranters()); myJaasProvider.setCallbackHandlers(jaasProvider.getCallbackHandlers()); myJaasProvider.setLoginContextName(jaasProvider.getLoginContextName()); myJaasProvider.afterPropertiesSet(); }
@Test public void detectsMissingLoginContextName() throws Exception { JaasAuthenticationProvider myJaasProvider = new JaasAuthenticationProvider(); myJaasProvider.setApplicationEventPublisher(context); myJaasProvider.setAuthorityGranters(jaasProvider.getAuthorityGranters()); myJaasProvider.setCallbackHandlers(jaasProvider.getCallbackHandlers()); myJaasProvider.setLoginConfig(jaasProvider.getLoginConfig()); myJaasProvider.setLoginContextName(null); try { myJaasProvider.afterPropertiesSet(); fail("Should have thrown IllegalArgumentException"); } catch (IllegalArgumentException expected) { assertThat(expected.getMessage()).startsWith("loginContextName must be set on"); } myJaasProvider.setLoginContextName(""); try { myJaasProvider.afterPropertiesSet(); fail("Should have thrown IllegalArgumentException"); } catch (IllegalArgumentException expected) { assertThat(expected.getMessage().startsWith("loginContextName must be set on")); } }
private void testConfigureJaasCase(JaasAuthenticationProvider p1, JaasAuthenticationProvider p2) throws Exception { p1.setLoginConfig(new ClassPathResource(resolveConfigFile("/test1.conf"))); p1.setLoginContextName("test1"); p1.setCallbackHandlers(new JaasAuthenticationCallbackHandler[] { new TestCallbackHandler(), new JaasNameCallbackHandler(), new JaasPasswordCallbackHandler() }); p1.setAuthorityGranters(new AuthorityGranter[] { new TestAuthorityGranter() }); p1.afterPropertiesSet(); testAuthenticate(p1); p2.setLoginConfig(new ClassPathResource(resolveConfigFile("/test2.conf"))); p2.setLoginContextName("test2"); p2.setCallbackHandlers(new JaasAuthenticationCallbackHandler[] { new TestCallbackHandler(), new JaasNameCallbackHandler(), new JaasPasswordCallbackHandler() }); p2.setAuthorityGranters(new AuthorityGranter[] { new TestAuthorityGranter() }); p2.afterPropertiesSet(); testAuthenticate(p2); }
/** * Configure jaas authentication provider. * * @param auth the auth * @param jaas the jaas * @throws Exception the exception */ protected void configureJaasAuthenticationProvider(final AuthenticationManagerBuilder auth, final MonitorProperties.Endpoints.JaasSecurity jaas) throws Exception { val p = new JaasAuthenticationProvider(); p.setLoginConfig(jaas.getLoginConfig()); p.setLoginContextName(jaas.getLoginContextName()); p.setRefreshConfigurationOnStartup(jaas.isRefreshConfigurationOnStartup()); p.afterPropertiesSet(); auth.authenticationProvider(p); }