Skip to content

Commit

Permalink
Kerberos refactored to be federation provider. Support for Kerberos a…
Browse files Browse the repository at this point in the history
…nd LDAP. Username/password authentication support with kerberos credentials.

First step - KerberosFederationProvider

Finished KerberosFederationProvider. Added support for username/password authentication with kerberos credentials

Added Kerberos UI to LDAPFederationProvider

Fixes
  • Loading branch information
mposolda committed Feb 18, 2015
1 parent 7e4aa09 commit d8024b0
Show file tree
Hide file tree
Showing 51 changed files with 1,394 additions and 427 deletions.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

1 change: 0 additions & 1 deletion broker/pom.xml
Expand Up @@ -18,7 +18,6 @@
<module>core</module> <module>core</module>
<module>oidc</module> <module>oidc</module>
<module>saml</module> <module>saml</module>
<module>kerberos</module>
</modules> </modules>


</project> </project>
Expand Up @@ -10,6 +10,7 @@ public class CredentialRepresentation {
public static final String PASSWORD_TOKEN = "password-token"; public static final String PASSWORD_TOKEN = "password-token";
public static final String TOTP = "totp"; public static final String TOTP = "totp";
public static final String CLIENT_CERT = "cert"; public static final String CLIENT_CERT = "cert";
public static final String KERBEROS = "kerberos";


protected String type; protected String type;
protected String device; protected String device;
Expand Down
2 changes: 1 addition & 1 deletion dependencies/server-all/pom.xml
Expand Up @@ -95,7 +95,7 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.keycloak</groupId> <groupId>org.keycloak</groupId>
<artifactId>keycloak-broker-kerberos</artifactId> <artifactId>keycloak-kerberos-federation</artifactId>
<version>${project.version}</version> <version>${project.version}</version>
</dependency> </dependency>
<dependency> <dependency>
Expand Down
@@ -1,5 +1,6 @@
package org.keycloak.examples.federation.properties; package org.keycloak.examples.federation.properties;


import org.keycloak.models.CredentialValidationOutput;
import org.keycloak.models.KeycloakSession; import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel; import org.keycloak.models.RealmModel;
import org.keycloak.models.RoleModel; import org.keycloak.models.RoleModel;
Expand Down Expand Up @@ -127,6 +128,11 @@ public Set<String> getSupportedCredentialTypes(UserModel user) {
return supportedCredentialTypes; return supportedCredentialTypes;
} }


@Override
public Set<String> getSupportedCredentialTypes() {
return supportedCredentialTypes;
}

@Override @Override
public boolean validCredentials(RealmModel realm, UserModel user, List<UserCredentialModel> input) { public boolean validCredentials(RealmModel realm, UserModel user, List<UserCredentialModel> input) {
for (UserCredentialModel cred : input) { for (UserCredentialModel cred : input) {
Expand Down Expand Up @@ -155,6 +161,11 @@ public boolean validCredentials(RealmModel realm, UserModel user, UserCredential
return true; return true;
} }


@Override
public CredentialValidationOutput validCredentials(RealmModel realm, UserCredentialModel credential) {
return CredentialValidationOutput.failed();
}

@Override @Override
public void close() { public void close() {


Expand Down
29 changes: 21 additions & 8 deletions broker/kerberos/pom.xml → federation/kerberos/pom.xml
@@ -1,6 +1,5 @@
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent> <parent>
<artifactId>keycloak-parent</artifactId> <artifactId>keycloak-parent</artifactId>
<groupId>org.keycloak</groupId> <groupId>org.keycloak</groupId>
Expand All @@ -9,21 +8,22 @@
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>


<artifactId>keycloak-broker-kerberos</artifactId> <artifactId>keycloak-kerberos-federation</artifactId>
<name>Keycloak Broker Kerberos</name> <name>Keycloak Kerberos Federation</name>
<description/> <description />
<packaging>jar</packaging>


<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.keycloak</groupId> <groupId>org.keycloak</groupId>
<artifactId>keycloak-broker-core</artifactId> <artifactId>keycloak-core</artifactId>
<version>${project.version}</version> <version>${project.version}</version>
<scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.keycloak</groupId> <groupId>org.keycloak</groupId>
<artifactId>keycloak-login-api</artifactId> <artifactId>keycloak-model-api</artifactId>
<version>${project.version}</version> <version>${project.version}</version>
<scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.jboss.logging</groupId> <groupId>org.jboss.logging</groupId>
Expand All @@ -36,4 +36,17 @@
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
</dependencies> </dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
</configuration>
</plugin>
</plugins>
</build>
</project> </project>
@@ -0,0 +1,46 @@
package org.keycloak.federation.kerberos;

import java.util.Map;

import org.keycloak.models.UserFederationProviderModel;
import org.keycloak.models.utils.KerberosConstants;

/**
* Common configuration useful for all providers
*
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
*/
public abstract class CommonKerberosConfig {

private final UserFederationProviderModel providerModel;

public CommonKerberosConfig(UserFederationProviderModel userFederationProvider) {
this.providerModel = userFederationProvider;
}

// Should be always true for KerberosFederationProvider
public boolean isAllowKerberosAuthentication() {
return Boolean.valueOf(getConfig().get(KerberosConstants.ALLOW_KERBEROS_AUTHENTICATION));
}

public String getKerberosRealm() {
return getConfig().get("kerberosRealm");
}

public String getServerPrincipal() {
return getConfig().get("serverPrincipal");
}

public String getKeyTab() {
return getConfig().get("keyTab");
}

public boolean getDebug() {
return Boolean.valueOf(getConfig().get("debug"));
}

protected Map<String, String> getConfig() {
return providerModel.getConfig();
}

}

0 comments on commit d8024b0

Please sign in to comment.