Search in sources :

Example 36 with IdentityProviderResource

use of org.keycloak.admin.client.resource.IdentityProviderResource in project keycloak by keycloak.

the class AbstractFirstBrokerLoginTest method testHardcodedUserSessionNoteIsSetAfterFirstBrokerLogin.

/**
 * Refers to in old test suite: org.keycloak.testsuite.broker.AbstractFirstBrokerLoginTest#testHardcodedUserSessionNoteIsSetAfterFristBrokerLogin()
 */
@Test
public void testHardcodedUserSessionNoteIsSetAfterFirstBrokerLogin() {
    updateExecutions(AbstractBrokerTest::enableUpdateProfileOnFirstLogin);
    RealmResource realm = adminClient.realm(bc.consumerRealmName());
    IdentityProviderResource idpResource = realm.identityProviders().get(bc.getIDPAlias());
    IdentityProviderMapperRepresentation hardCodedSessionNoteMapper = new IdentityProviderMapperRepresentation();
    hardCodedSessionNoteMapper.setName("static-session-note");
    hardCodedSessionNoteMapper.setIdentityProviderAlias(bc.getIDPAlias());
    hardCodedSessionNoteMapper.setIdentityProviderMapper(HardcodedUserSessionAttributeMapper.PROVIDER_ID);
    hardCodedSessionNoteMapper.setConfig(ImmutableMap.<String, String>builder().put(IdentityProviderMapperModel.SYNC_MODE, IdentityProviderSyncMode.IMPORT.toString()).put(HardcodedUserSessionAttributeMapper.ATTRIBUTE_VALUE, "sessionvalue").put(HardcodedUserSessionAttributeMapper.ATTRIBUTE, "user-session-attr").build());
    Response response = idpResource.addMapper(hardCodedSessionNoteMapper);
    response.close();
    driver.navigate().to(getAccountUrl(getConsumerRoot(), bc.consumerRealmName()));
    logInWithBroker(bc);
    waitForPage(driver, "update account information", false);
    updateAccountInformationPage.assertCurrent();
    updateAccountInformationPage.updateAccountInformation("FirstName", "LastName");
    waitForAccountManagementTitle();
    accountUpdateProfilePage.assertCurrent();
    testingClient.server().run(assertHardCodedSessionNote());
}
Also used : Response(javax.ws.rs.core.Response) IdentityProviderMapperRepresentation(org.keycloak.representations.idm.IdentityProviderMapperRepresentation) IdentityProviderResource(org.keycloak.admin.client.resource.IdentityProviderResource) RealmResource(org.keycloak.admin.client.resource.RealmResource) Test(org.junit.Test) VerifyProfileTest(org.keycloak.testsuite.forms.VerifyProfileTest)

Example 37 with IdentityProviderResource

use of org.keycloak.admin.client.resource.IdentityProviderResource in project keycloak by keycloak.

the class IdentityProviderTest method testUpdate.

@Test
public void testUpdate() {
    IdentityProviderRepresentation newIdentityProvider = createRep("update-identity-provider", "oidc");
    newIdentityProvider.getConfig().put(IdentityProviderModel.SYNC_MODE, "IMPORT");
    newIdentityProvider.getConfig().put("clientId", "clientId");
    newIdentityProvider.getConfig().put("clientSecret", "some secret value");
    create(newIdentityProvider);
    IdentityProviderResource identityProviderResource = realm.identityProviders().get("update-identity-provider");
    assertNotNull(identityProviderResource);
    IdentityProviderRepresentation representation = identityProviderResource.toRepresentation();
    assertNotNull(representation);
    assertEquals("update-identity-provider", representation.getAlias());
    representation.setAlias("changed-alias");
    representation.setEnabled(false);
    representation.setStoreToken(true);
    representation.getConfig().put("clientId", "changedClientId");
    identityProviderResource.update(representation);
    AdminEventRepresentation event = assertAdminEvents.assertEvent(realmId, OperationType.UPDATE, AdminEventPaths.identityProviderPath("update-identity-provider"), representation, ResourceType.IDENTITY_PROVIDER);
    assertFalse(event.getRepresentation().contains("some secret value"));
    assertTrue(event.getRepresentation().contains(ComponentRepresentation.SECRET_VALUE));
    identityProviderResource = realm.identityProviders().get(representation.getInternalId());
    assertNotNull(identityProviderResource);
    representation = identityProviderResource.toRepresentation();
    assertFalse(representation.isEnabled());
    assertTrue(representation.isStoreToken());
    assertEquals("changedClientId", representation.getConfig().get("clientId"));
    assertEquals("some secret value", testingClient.testing("admin-client-test").getIdentityProviderConfig("changed-alias").get("clientSecret"));
    representation.getConfig().put("clientSecret", "${vault.key}");
    identityProviderResource.update(representation);
    event = assertAdminEvents.assertEvent(realmId, OperationType.UPDATE, AdminEventPaths.identityProviderPath(representation.getInternalId()), representation, ResourceType.IDENTITY_PROVIDER);
    assertThat(event.getRepresentation(), containsString("${vault.key}"));
    assertThat(event.getRepresentation(), not(containsString(ComponentRepresentation.SECRET_VALUE)));
    assertThat(identityProviderResource.toRepresentation().getConfig(), hasEntry("clientSecret", "${vault.key}"));
    assertEquals("${vault.key}", testingClient.testing("admin-client-test").getIdentityProviderConfig("changed-alias").get("clientSecret"));
}
Also used : IdentityProviderResource(org.keycloak.admin.client.resource.IdentityProviderResource) AdminEventRepresentation(org.keycloak.representations.idm.AdminEventRepresentation) IdentityProviderRepresentation(org.keycloak.representations.idm.IdentityProviderRepresentation) Test(org.junit.Test)

Example 38 with IdentityProviderResource

use of org.keycloak.admin.client.resource.IdentityProviderResource in project keycloak by keycloak.

the class IdentityProviderTest method testSamlImportAndExportDisabled.

@Test
public void testSamlImportAndExportDisabled() throws URISyntaxException, IOException, ParsingException {
    // Use import-config to convert IDPSSODescriptor file into key value pairs
    // to use when creating a SAML Identity Provider
    MultipartFormDataOutput form = new MultipartFormDataOutput();
    form.addFormData("providerId", "saml", MediaType.TEXT_PLAIN_TYPE);
    URL idpMeta = getClass().getClassLoader().getResource("admin-test/saml-idp-metadata-disabled.xml");
    byte[] content = Files.readAllBytes(Paths.get(idpMeta.toURI()));
    String body = new String(content, Charset.forName("utf-8"));
    form.addFormData("file", body, MediaType.APPLICATION_XML_TYPE, "saml-idp-metadata-disabled.xml");
    Map<String, String> result = realm.identityProviders().importFrom(form);
    assertSamlImport(result, SIGNING_CERT_1, false);
    // Create new SAML identity provider using configuration retrieved from import-config
    create(createRep("saml", "saml", false, result));
    IdentityProviderResource provider = realm.identityProviders().get("saml");
    IdentityProviderRepresentation rep = provider.toRepresentation();
    assertCreatedSamlIdp(rep, false);
}
Also used : IdentityProviderResource(org.keycloak.admin.client.resource.IdentityProviderResource) IdentityProviderRepresentation(org.keycloak.representations.idm.IdentityProviderRepresentation) Matchers.containsString(org.hamcrest.Matchers.containsString) URL(java.net.URL) MultipartFormDataOutput(org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataOutput) Test(org.junit.Test)

Example 39 with IdentityProviderResource

use of org.keycloak.admin.client.resource.IdentityProviderResource in project keycloak by keycloak.

the class IdentityProviderTest method testMapperTypes.

@Test
public void testMapperTypes() {
    IdentityProviderResource provider;
    Map<String, IdentityProviderMapperTypeRepresentation> mapperTypes;
    create(createRep("google", "google"));
    provider = realm.identityProviders().get("google");
    mapperTypes = provider.getMapperTypes();
    assertMapperTypes(mapperTypes, "google-user-attribute-mapper", "oidc-username-idp-mapper");
    create(createRep("facebook", "facebook"));
    provider = realm.identityProviders().get("facebook");
    mapperTypes = provider.getMapperTypes();
    assertMapperTypes(mapperTypes, "facebook-user-attribute-mapper", "oidc-username-idp-mapper");
    create(createRep("github", "github"));
    provider = realm.identityProviders().get("github");
    mapperTypes = provider.getMapperTypes();
    assertMapperTypes(mapperTypes, "github-user-attribute-mapper", "oidc-username-idp-mapper");
    create(createRep("twitter", "twitter"));
    provider = realm.identityProviders().get("twitter");
    mapperTypes = provider.getMapperTypes();
    assertMapperTypes(mapperTypes, "oidc-username-idp-mapper");
    create(createRep("linkedin", "linkedin"));
    provider = realm.identityProviders().get("linkedin");
    mapperTypes = provider.getMapperTypes();
    assertMapperTypes(mapperTypes, "linkedin-user-attribute-mapper", "oidc-username-idp-mapper");
    create(createRep("microsoft", "microsoft"));
    provider = realm.identityProviders().get("microsoft");
    mapperTypes = provider.getMapperTypes();
    assertMapperTypes(mapperTypes, "microsoft-user-attribute-mapper", "oidc-username-idp-mapper");
    create(createRep("stackoverflow", "stackoverflow"));
    provider = realm.identityProviders().get("stackoverflow");
    mapperTypes = provider.getMapperTypes();
    assertMapperTypes(mapperTypes, "stackoverflow-user-attribute-mapper", "oidc-username-idp-mapper");
    create(createRep("keycloak-oidc", "keycloak-oidc"));
    provider = realm.identityProviders().get("keycloak-oidc");
    mapperTypes = provider.getMapperTypes();
    assertMapperTypes(mapperTypes, "keycloak-oidc-role-to-role-idp-mapper", "oidc-user-attribute-idp-mapper", "oidc-role-idp-mapper", "oidc-username-idp-mapper", "oidc-advanced-group-idp-mapper", "oidc-advanced-role-idp-mapper");
    create(createRep("oidc", "oidc"));
    provider = realm.identityProviders().get("oidc");
    mapperTypes = provider.getMapperTypes();
    assertMapperTypes(mapperTypes, "oidc-user-attribute-idp-mapper", "oidc-role-idp-mapper", "oidc-username-idp-mapper", "oidc-advanced-group-idp-mapper", "oidc-advanced-role-idp-mapper");
    create(createRep("saml", "saml"));
    provider = realm.identityProviders().get("saml");
    mapperTypes = provider.getMapperTypes();
    assertMapperTypes(mapperTypes, "saml-user-attribute-idp-mapper", "saml-role-idp-mapper", "saml-username-idp-mapper", "saml-advanced-role-idp-mapper");
}
Also used : IdentityProviderMapperTypeRepresentation(org.keycloak.representations.idm.IdentityProviderMapperTypeRepresentation) IdentityProviderResource(org.keycloak.admin.client.resource.IdentityProviderResource) Matchers.containsString(org.hamcrest.Matchers.containsString) Test(org.junit.Test)

Example 40 with IdentityProviderResource

use of org.keycloak.admin.client.resource.IdentityProviderResource in project keycloak by keycloak.

the class IdentityProviderTest method testSamlImportAndExport.

@Test
public void testSamlImportAndExport() throws URISyntaxException, IOException, ParsingException {
    // Use import-config to convert IDPSSODescriptor file into key value pairs
    // to use when creating a SAML Identity Provider
    MultipartFormDataOutput form = new MultipartFormDataOutput();
    form.addFormData("providerId", "saml", MediaType.TEXT_PLAIN_TYPE);
    URL idpMeta = getClass().getClassLoader().getResource("admin-test/saml-idp-metadata.xml");
    byte[] content = Files.readAllBytes(Paths.get(idpMeta.toURI()));
    String body = new String(content, Charset.forName("utf-8"));
    form.addFormData("file", body, MediaType.APPLICATION_XML_TYPE, "saml-idp-metadata.xml");
    Map<String, String> result = realm.identityProviders().importFrom(form);
    assertSamlImport(result, SIGNING_CERT_1, true);
    // Create new SAML identity provider using configuration retrieved from import-config
    create(createRep("saml", "saml", true, result));
    IdentityProviderResource provider = realm.identityProviders().get("saml");
    IdentityProviderRepresentation rep = provider.toRepresentation();
    assertCreatedSamlIdp(rep, true);
    // Now list the providers - we should see the one just created
    List<IdentityProviderRepresentation> providers = realm.identityProviders().findAll();
    Assert.assertNotNull("identityProviders not null", providers);
    Assert.assertEquals("identityProviders instance count", 1, providers.size());
    assertEqual(rep, providers.get(0));
    // Perform export, and make sure some of the values are like they're supposed to be
    Response response = realm.identityProviders().get("saml").export("xml");
    Assert.assertEquals(200, response.getStatus());
    body = response.readEntity(String.class);
    response.close();
    assertSamlExport(body);
}
Also used : Response(javax.ws.rs.core.Response) IdentityProviderResource(org.keycloak.admin.client.resource.IdentityProviderResource) IdentityProviderRepresentation(org.keycloak.representations.idm.IdentityProviderRepresentation) Matchers.containsString(org.hamcrest.Matchers.containsString) URL(java.net.URL) MultipartFormDataOutput(org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataOutput) Test(org.junit.Test)

Aggregations

IdentityProviderResource (org.keycloak.admin.client.resource.IdentityProviderResource)47 IdentityProviderMapperRepresentation (org.keycloak.representations.idm.IdentityProviderMapperRepresentation)26 IdentityProviderRepresentation (org.keycloak.representations.idm.IdentityProviderRepresentation)22 Test (org.junit.Test)20 Response (javax.ws.rs.core.Response)11 Matchers.containsString (org.hamcrest.Matchers.containsString)10 RealmResource (org.keycloak.admin.client.resource.RealmResource)9 Before (org.junit.Before)6 URL (java.net.URL)4 HashMap (java.util.HashMap)4 MultipartFormDataOutput (org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataOutput)4 ClientsResource (org.keycloak.admin.client.resource.ClientsResource)4 UsersResource (org.keycloak.admin.client.resource.UsersResource)4 ByteArrayInputStream (java.io.ByteArrayInputStream)3 IOException (java.io.IOException)3 URI (java.net.URI)3 List (java.util.List)3 Map (java.util.Map)3 Set (java.util.Set)3 NotFoundException (javax.ws.rs.NotFoundException)3