use of org.pac4j.core.client.Clients in project pac4j by pac4j.
the class DefaultSecurityClientFinderTests method testNoClientOnRequest.
@Test
public void testNoClientOnRequest() {
final MockIndirectClient client1 = new MockIndirectClient(NAME, RedirectAction.redirect(LOGIN_URL), (Credentials) null, new CommonProfile());
final MockIndirectClient client2 = new MockIndirectClient(CLIENT_NAME, RedirectAction.redirect(LOGIN_URL), (Credentials) null, new CommonProfile());
final Clients clients = new Clients(client1, client2);
final WebContext context = MockWebContext.create();
final List<Client> currentClients = finder.find(clients, context, CLIENT_NAME);
assertEquals(1, currentClients.size());
assertEquals(client2, currentClients.get(0));
}
use of org.pac4j.core.client.Clients in project pac4j by pac4j.
the class DefaultSecurityClientFinderTests method testClientOnRequestNotAllowedList.
@Test
public void testClientOnRequestNotAllowedList() {
final MockIndirectClient client1 = new MockIndirectClient(NAME, RedirectAction.redirect(LOGIN_URL), (Credentials) null, new CommonProfile());
final MockIndirectClient client2 = new MockIndirectClient(CLIENT_NAME, RedirectAction.redirect(LOGIN_URL), (Credentials) null, new CommonProfile());
final Clients clients = new Clients(client1, client2);
final WebContext context = MockWebContext.create().addRequestParameter(Pac4jConstants.DEFAULT_CLIENT_NAME_PARAMETER, NAME);
TestsHelper.expectException(() -> finder.find(clients, context, CLIENT_NAME + "," + FAKE_VALUE), TechnicalException.class, "Client not allowed: " + NAME);
}
use of org.pac4j.core.client.Clients in project pac4j by pac4j.
the class DefaultCallbackLogicTests method testCallbackNoRenew.
@Test
public void testCallbackNoRenew() {
final String originalSessionId = request.getSession().getId();
request.setParameter(Pac4jConstants.DEFAULT_CLIENT_NAME_PARAMETER, NAME);
final CommonProfile profile = new CommonProfile();
final IndirectClient indirectClient = new MockIndirectClient(NAME, null, new MockCredentials(), profile);
config.setClients(new Clients(CALLBACK_URL, indirectClient));
renewSession = false;
config.getClients().init();
call();
final HttpSession session = request.getSession();
final String newSessionId = session.getId();
final LinkedHashMap<String, CommonProfile> profiles = (LinkedHashMap<String, CommonProfile>) session.getAttribute(Pac4jConstants.USER_PROFILES);
assertTrue(profiles.containsValue(profile));
assertEquals(1, profiles.size());
assertEquals(newSessionId, originalSessionId);
assertEquals(302, response.getStatus());
assertEquals(Pac4jConstants.DEFAULT_URL_VALUE, response.getRedirectedUrl());
}
use of org.pac4j.core.client.Clients in project pac4j by pac4j.
the class DefaultCallbackLogicTests method testDirectClient.
@Test
public void testDirectClient() {
request.addParameter(Pac4jConstants.DEFAULT_CLIENT_NAME_PARAMETER, NAME);
final MockDirectClient directClient = new MockDirectClient(NAME, new MockCredentials(), new CommonProfile());
config.setClients(new Clients(directClient));
TestsHelper.expectException(() -> call(), TechnicalException.class, "unable to find one indirect client for the callback: check the callback URL for a client name parameter or" + " suffix path or ensure that your configuration defaults to one indirect client");
}
use of org.pac4j.core.client.Clients in project pac4j by pac4j.
the class PropertiesConfigFactoryTests method test.
@Test
public void test() {
final Map<String, String> properties = new HashMap<>();
properties.put(FACEBOOK_ID, ID);
properties.put(FACEBOOK_SECRET, SECRET);
properties.put(TWITTER_ID, ID);
properties.put(TWITTER_SECRET, SECRET);
properties.put(CAS_LOGIN_URL, CALLBACK_URL);
properties.put(CAS_PROTOCOL, CasProtocol.CAS20.toString());
properties.put(SAML_KEYSTORE_PASSWORD, PASSWORD);
properties.put(SAML_PRIVATE_KEY_PASSWORD, PASSWORD);
properties.put(SAML_KEYSTORE_PATH, PATH);
properties.put(SAML_IDENTITY_PROVIDER_METADATA_PATH, PATH);
properties.put(SAML_DESTINATION_BINDING_TYPE, SAMLConstants.SAML2_REDIRECT_BINDING_URI);
properties.put(SAML_KEYSTORE_ALIAS, VALUE);
properties.put(OIDC_ID, ID);
properties.put(OIDC_SECRET, SECRET);
properties.put(OIDC_DISCOVERY_URI, CALLBACK_URL);
properties.put(OIDC_USE_NONCE, "true");
properties.put(OIDC_PREFERRED_JWS_ALGORITHM, "RS384");
properties.put(OIDC_MAX_CLOCK_SKEW, "60");
properties.put(OIDC_CLIENT_AUTHENTICATION_METHOD, "CLIENT_SECRET_POST");
properties.put(OIDC_CUSTOM_PARAM_KEY + "1", KEY);
properties.put(OIDC_CUSTOM_PARAM_VALUE + "1", VALUE);
properties.put(CAS_LOGIN_URL.concat(".1"), LOGIN_URL);
properties.put(CAS_PROTOCOL.concat(".1"), CasProtocol.CAS30.toString());
properties.put(OIDC_TYPE.concat(".1"), "google");
properties.put(OIDC_ID.concat(".1"), ID);
properties.put(OIDC_SECRET.concat(".1"), SECRET);
properties.put(ANONYMOUS, "whatever the value");
properties.put(FORMCLIENT_LOGIN_URL, LOGIN_URL);
properties.put(FORMCLIENT_AUTHENTICATOR, "testUsernamePassword");
properties.put(INDIRECTBASICAUTH_AUTHENTICATOR.concat(".2"), "testUsernamePassword");
properties.put(LDAP_TYPE, "direct");
properties.put(LDAP_URL, "ldap://localhost:" + PORT);
properties.put(LDAP_USE_SSL, "false");
properties.put(LDAP_USE_START_TLS, "false");
properties.put(LDAP_DN_FORMAT, CN + "=%s," + BASE_PEOPLE_DN);
properties.put(LDAP_USERS_DN, BASE_PEOPLE_DN);
properties.put(LDAP_PRINCIPAL_ATTRIBUTE_ID, CN);
properties.put(LDAP_ATTRIBUTES, SN + "," + ROLE);
properties.put(FORMCLIENT_LOGIN_URL.concat(".2"), PAC4J_BASE_URL);
properties.put(FORMCLIENT_AUTHENTICATOR.concat(".2"), "ldap");
properties.put(SPRING_ENCODER_TYPE.concat(".4"), "standard");
properties.put(SPRING_ENCODER_STANDARD_SECRET.concat(".4"), SALT);
properties.put(DB_JDBC_URL, "jdbc:h2:mem:test");
properties.put(DB_USERNAME, Pac4jConstants.USERNAME);
properties.put(DB_PASSWORD, Pac4jConstants.PASSWORD);
properties.put(DB_USERNAME_ATTRIBUTE, Pac4jConstants.USERNAME);
properties.put(DB_USER_PASSWORD_ATTRIBUTE, Pac4jConstants.PASSWORD);
properties.put(DB_ATTRIBUTES, FIRSTNAME);
properties.put(DB_PASSWORD_ENCODER, "encoder.spring.4");
properties.put(INDIRECTBASICAUTH_AUTHENTICATOR.concat(".5"), "db");
properties.put(REST_URL.concat(".3"), PAC4J_BASE_URL);
properties.put(DIRECTBASICAUTH_AUTHENTICATOR.concat(".7"), "rest.3");
LdapServer ldapServer = null;
try {
ldapServer = new LdapServer();
ldapServer.start();
new DbServer();
final PropertiesConfigFactory factory = new PropertiesConfigFactory(CALLBACK_URL, properties);
final Config config = factory.build();
final Clients clients = config.getClients();
assertEquals(13, clients.getClients().size());
final FacebookClient fbClient = (FacebookClient) clients.findClient("FacebookClient");
assertEquals(ID, fbClient.getKey());
assertEquals(SECRET, fbClient.getSecret());
assertNotNull(clients.findClient("AnonymousClient"));
final TwitterClient twClient = (TwitterClient) clients.findClient("TwitterClient");
assertEquals(ID, twClient.getKey());
assertEquals(SECRET, twClient.getSecret());
final CasClient casClient = (CasClient) clients.findClient("CasClient");
assertEquals(CALLBACK_URL, casClient.getConfiguration().getLoginUrl());
assertEquals(CasProtocol.CAS20, casClient.getConfiguration().getProtocol());
final SAML2Client saml2client = (SAML2Client) clients.findClient("SAML2Client");
assertNotNull(saml2client);
final SAML2ClientConfiguration saml2Config = saml2client.getConfiguration();
assertEquals(SAMLConstants.SAML2_REDIRECT_BINDING_URI, saml2Config.getDestinationBindingType());
assertEquals(VALUE, saml2Config.getKeyStoreAlias());
final OidcClient oidcClient = (OidcClient) clients.findClient("OidcClient");
assertNotNull(oidcClient);
assertEquals(ClientAuthenticationMethod.CLIENT_SECRET_POST.toString(), oidcClient.getConfiguration().getClientAuthenticationMethod().toString().toLowerCase());
final CasClient casClient1 = (CasClient) clients.findClient("CasClient.1");
assertEquals(CasProtocol.CAS30, casClient1.getConfiguration().getProtocol());
final GoogleOidcClient googleOidcClient = (GoogleOidcClient) clients.findClient("GoogleOidcClient.1");
googleOidcClient.init();
assertEquals(ID, googleOidcClient.getConfiguration().getClientId());
assertEquals(SECRET, googleOidcClient.getConfiguration().getSecret());
assertEquals("https://accounts.google.com/.well-known/openid-configuration", googleOidcClient.getConfiguration().getDiscoveryURI());
assertEquals(CALLBACK_URL + "?client_name=GoogleOidcClient.1", googleOidcClient.getCallbackUrlResolver().compute(googleOidcClient.getUrlResolver(), googleOidcClient.getCallbackUrl(), googleOidcClient.getName(), MockWebContext.create()));
final FormClient formClient = (FormClient) clients.findClient("FormClient");
assertEquals(LOGIN_URL, formClient.getLoginUrl());
assertTrue(formClient.getAuthenticator() instanceof SimpleTestUsernamePasswordAuthenticator);
final FormClient formClient2 = (FormClient) clients.findClient("FormClient.2");
assertEquals(PAC4J_BASE_URL, formClient2.getLoginUrl());
assertTrue(formClient2.getAuthenticator() instanceof LdapProfileService);
final LdapProfileService ldapAuthenticator = (LdapProfileService) formClient2.getAuthenticator();
final UsernamePasswordCredentials ldapCredentials = new UsernamePasswordCredentials(GOOD_USERNAME, PASSWORD);
ldapAuthenticator.validate(ldapCredentials, MockWebContext.create());
assertNotNull(ldapCredentials.getUserProfile());
final IndirectBasicAuthClient indirectBasicAuthClient = (IndirectBasicAuthClient) clients.findClient("IndirectBasicAuthClient.2");
assertEquals("authentication required", indirectBasicAuthClient.getRealmName());
assertTrue(indirectBasicAuthClient.getAuthenticator() instanceof SimpleTestUsernamePasswordAuthenticator);
final IndirectBasicAuthClient indirectBasicAuthClient2 = (IndirectBasicAuthClient) clients.findClient("IndirectBasicAuthClient.5");
assertTrue(indirectBasicAuthClient2.getAuthenticator() instanceof DbProfileService);
final DbProfileService dbAuthenticator = (DbProfileService) indirectBasicAuthClient2.getAuthenticator();
assertNotNull(dbAuthenticator);
final UsernamePasswordCredentials dbCredentials = new UsernamePasswordCredentials(GOOD_USERNAME, PASSWORD);
dbAuthenticator.validate(dbCredentials, MockWebContext.create());
assertNotNull(dbCredentials.getUserProfile());
final DirectBasicAuthClient directBasicAuthClient = (DirectBasicAuthClient) clients.findClient("DirectBasicAuthClient.7");
assertNotNull(directBasicAuthClient);
final RestAuthenticator restAuthenticator = (RestAuthenticator) directBasicAuthClient.getAuthenticator();
assertEquals(PAC4J_BASE_URL, restAuthenticator.getUrl());
} finally {
if (ldapServer != null) {
ldapServer.stop();
}
}
}
Aggregations