keycloak-aplcache

Merge pull request #1051 from mposolda/master Fix Kerberos

3/16/2015 2:10:50 PM

Details

diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-federated-identity.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-federated-identity.html
index 70a2691..dd23d7d 100644
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-federated-identity.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-federated-identity.html
@@ -17,7 +17,7 @@
         <table class="table table-striped table-bordered">
             <thead>
             <tr>
-                <th>Identity Provider Name</th>
+                <th>Identity Provider Alias</th>
                 <th>Username</th>
             </tr>
             </thead>
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/UsersResource.java b/services/src/main/java/org/keycloak/services/resources/admin/UsersResource.java
index 5732688..6b694a7 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/UsersResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/UsersResource.java
@@ -267,9 +267,6 @@ public class UsersResource {
             for (IdentityProviderModel identityProviderModel : realm.getIdentityProviders()) {
                 if (identityProviderModel.getId().equals(identity.getIdentityProvider())) {
                     FederatedIdentityRepresentation rep = ModelToRepresentation.toRepresentation(identity);
-
-                    rep.setIdentityProvider(identityProviderModel.getName());
-
                     result.add(rep);
                 }
             }
diff --git a/testsuite/integration/src/main/java/org/keycloak/testutils/ldap/EmbeddedServersFactory.java b/testsuite/integration/src/main/java/org/keycloak/testutils/ldap/EmbeddedServersFactory.java
index cd05b3e..3cfb36c 100644
--- a/testsuite/integration/src/main/java/org/keycloak/testutils/ldap/EmbeddedServersFactory.java
+++ b/testsuite/integration/src/main/java/org/keycloak/testutils/ldap/EmbeddedServersFactory.java
@@ -74,18 +74,6 @@ public class EmbeddedServersFactory {
         if (kdcEncryptionTypes == null || kdcEncryptionTypes.isEmpty()) {
             kdcEncryptionTypes = DEFAULT_KDC_ENCRYPTION_TYPES;
         }
-
-        if (ldapSaslPrincipal == null || ldapSaslPrincipal.isEmpty()) {
-            try {
-                // Same algorithm like sun.security.krb5.PrincipalName constructor
-                GSSName gssName = GSSManager.getInstance().createName("ldap@localhost", GSSName.NT_HOSTBASED_SERVICE);
-                GSSNameImpl gssName1 = (GSSNameImpl) gssName;
-                Krb5NameElement krb5NameElement = (Krb5NameElement) gssName1.getElement(KerberosSerializationUtils.KRB5_OID);
-                this.ldapSaslPrincipal = krb5NameElement.getKrb5PrincipalName().toString();
-            } catch (GSSException uhe) {
-                throw new RuntimeException(uhe);
-            }
-        }
     }
 
 
@@ -107,6 +95,19 @@ public class EmbeddedServersFactory {
             ldifFile = DEFAULT_KERBEROS_LDIF_FILE;
         }
 
+        // Init ldap sasl principal just when creating kerberos server
+        if (ldapSaslPrincipal == null || ldapSaslPrincipal.isEmpty()) {
+            try {
+                // Same algorithm like sun.security.krb5.PrincipalName constructor
+                GSSName gssName = GSSManager.getInstance().createName("ldap@" + bindHost, GSSName.NT_HOSTBASED_SERVICE);
+                GSSNameImpl gssName1 = (GSSNameImpl) gssName;
+                Krb5NameElement krb5NameElement = (Krb5NameElement) gssName1.getElement(KerberosSerializationUtils.KRB5_OID);
+                this.ldapSaslPrincipal = krb5NameElement.getKrb5PrincipalName().toString();
+            } catch (GSSException uhe) {
+                throw new RuntimeException(uhe);
+            }
+        }
+
         return new KerberosEmbeddedServer(baseDN, bindHost, bindPort, ldifFile, ldapSaslPrincipal, kerberosRealm, kdcPort, kdcEncryptionTypes);
     }
 }
diff --git a/testsuite/integration/src/main/java/org/keycloak/testutils/ldap/LDAPEmbeddedServer.java b/testsuite/integration/src/main/java/org/keycloak/testutils/ldap/LDAPEmbeddedServer.java
index e6e7be1..ce7b56b 100644
--- a/testsuite/integration/src/main/java/org/keycloak/testutils/ldap/LDAPEmbeddedServer.java
+++ b/testsuite/integration/src/main/java/org/keycloak/testutils/ldap/LDAPEmbeddedServer.java
@@ -143,7 +143,9 @@ public class LDAPEmbeddedServer {
     private void importLdif() throws Exception {
         Map<String, String> map = new HashMap<String, String>();
         map.put("hostname", this.bindHost);
-        map.put("ldapSaslPrincipal", this.ldapSaslPrincipal);
+        if (this.ldapSaslPrincipal != null) {
+            map.put("ldapSaslPrincipal", this.ldapSaslPrincipal);
+        }
 
         // For now, assume that LDIF file is on classpath
         InputStream is = getClass().getClassLoader().getResourceAsStream(ldifFile);
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/admin/UserTest.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/admin/UserTest.java
index d2c76dd..976223c 100755
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/admin/UserTest.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/admin/UserTest.java
@@ -1,9 +1,12 @@
 package org.keycloak.testsuite.admin;
 
+import org.junit.Assert;
 import org.junit.Ignore;
 import org.junit.Test;
+import org.keycloak.admin.client.resource.IdentityProviderResource;
 import org.keycloak.admin.client.resource.UserResource;
 import org.keycloak.representations.idm.FederatedIdentityRepresentation;
+import org.keycloak.representations.idm.IdentityProviderRepresentation;
 import org.keycloak.representations.idm.UserRepresentation;
 
 import javax.ws.rs.ClientErrorException;
@@ -187,44 +190,53 @@ public class UserTest extends AbstractClientTest {
     }
 
     @Test
-    public void addFederatedIdentity() {
-        createUser();
+    public void getFederatedIdentities() {
+        // Add sample identity provider
+        addSampleIdentityProvider();
 
+        // Add sample user
+        createUser();
         UserResource user = realm.users().get("user1");
+        assertEquals(0, user.getFederatedIdentity().size());
 
+        // Add social link to the user
         FederatedIdentityRepresentation link = new FederatedIdentityRepresentation();
         link.setUserId("social-user-id");
         link.setUserName("social-username");
-
         Response response = user.addFederatedIdentity("social-provider-id", link);
         assertEquals(204, response.getStatus());
-    }
-
-    @Test
-    @Ignore("Refactor based on KEYCLOAK-883")
-    public void getFederatedIdentities() {
-        addFederatedIdentity();
-
-        UserResource user = realm.users().get("user1");
-        assertEquals(1, user.getFederatedIdentity().size());
 
-        FederatedIdentityRepresentation link = user.getFederatedIdentity().get(0);
+        // Verify social link is here
+        user = realm.users().get("user1");
+        List<FederatedIdentityRepresentation> federatedIdentities = user.getFederatedIdentity();
+        assertEquals(1, federatedIdentities.size());
+        link = federatedIdentities.get(0);
         assertEquals("social-provider-id", link.getIdentityProvider());
         assertEquals("social-user-id", link.getUserId());
         assertEquals("social-username", link.getUserName());
-    }
 
-    @Test
-    @Ignore("Refactor based on KEYCLOAK-883")
-    public void removeFederatedIdentity() {
-        addFederatedIdentity();
+        // Remove social link now
+        user.removeFederatedIdentity("social-provider-id");
+        assertEquals(0, user.getFederatedIdentity().size());
 
-        UserResource user = realm.users().get("user1");
-        assertEquals(1, user.getFederatedIdentity().size());
+        removeSampleIdentityProvider();
+    }
 
-        user.removeFederatedIdentity("social-provider-id");
+    private void addSampleIdentityProvider() {
+        List<IdentityProviderRepresentation> providers = realm.identityProviders().findAll();
+        Assert.assertEquals(0, providers.size());
 
-        assertEquals(0, user.getFederatedIdentity().size());
+        IdentityProviderRepresentation rep = new IdentityProviderRepresentation();
+        rep.setId("social-provider-id");
+        rep.setName("social-provider-name");
+        rep.setProviderId("social-provider-type");
+        realm.identityProviders().create(rep);
+    }
+
+    private void removeSampleIdentityProvider() {
+        IdentityProviderResource resource = realm.identityProviders().get("social-provider-id");
+        Assert.assertNotNull(resource);
+        resource.remove();
     }
 
     @Test