Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #913 from pedroigor/KEYCLOAK-883
[KEYCLOAK-883] - Initial changes.
- Loading branch information
Showing
182 changed files
with
4,504 additions
and
2,400 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
<?xml version="1.0"?> | ||
<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"> | ||
<parent> | ||
<artifactId>keycloak-broker-parent</artifactId> | ||
<groupId>org.keycloak</groupId> | ||
<version>1.2.0.Beta1-SNAPSHOT</version> | ||
<relativePath>../pom.xml</relativePath> | ||
</parent> | ||
<modelVersion>4.0.0</modelVersion> | ||
|
||
<artifactId>keycloak-broker-core</artifactId> | ||
<name>Keycloak Broker Core</name> | ||
<description/> | ||
<packaging>jar</packaging> | ||
|
||
<dependencies> | ||
<dependency> | ||
<groupId>org.keycloak</groupId> | ||
<artifactId>keycloak-core</artifactId> | ||
<version>${project.version}</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.keycloak</groupId> | ||
<artifactId>keycloak-model-api</artifactId> | ||
<version>${project.version}</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.jboss.resteasy</groupId> | ||
<artifactId>resteasy-jaxrs</artifactId> | ||
<exclusions> | ||
<exclusion> | ||
<groupId>log4j</groupId> | ||
<artifactId>log4j</artifactId> | ||
</exclusion> | ||
<exclusion> | ||
<groupId>org.slf4j</groupId> | ||
<artifactId>slf4j-api</artifactId> | ||
</exclusion> | ||
<exclusion> | ||
<groupId>org.slf4j</groupId> | ||
<artifactId>slf4j-simple</artifactId> | ||
</exclusion> | ||
</exclusions> | ||
</dependency> | ||
</dependencies> | ||
|
||
</project> |
42 changes: 42 additions & 0 deletions
42
broker/core/src/main/java/org/keycloak/broker/provider/AbstractIdentityProvider.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
/* | ||
* JBoss, Home of Professional Open Source | ||
* | ||
* Copyright 2013 Red Hat, Inc. and/or its affiliates. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
package org.keycloak.broker.provider; | ||
|
||
import org.keycloak.models.IdentityProviderModel; | ||
|
||
/** | ||
* @author Pedro Igor | ||
*/ | ||
public abstract class AbstractIdentityProvider<C extends IdentityProviderModel> implements IdentityProvider<C> { | ||
|
||
private final C config; | ||
|
||
public AbstractIdentityProvider(C config) { | ||
this.config = config; | ||
} | ||
|
||
public C getConfig() { | ||
return this.config; | ||
} | ||
|
||
@Override | ||
public void close() { | ||
// no-op | ||
} | ||
|
||
} |
51 changes: 51 additions & 0 deletions
51
broker/core/src/main/java/org/keycloak/broker/provider/AbstractIdentityProviderFactory.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
/* | ||
* JBoss, Home of Professional Open Source | ||
* | ||
* Copyright 2013 Red Hat, Inc. and/or its affiliates. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
package org.keycloak.broker.provider; | ||
|
||
import org.keycloak.Config; | ||
import org.keycloak.models.KeycloakSession; | ||
|
||
import java.io.InputStream; | ||
import java.util.HashMap; | ||
import java.util.Map; | ||
|
||
/** | ||
* @author Pedro Igor | ||
*/ | ||
public abstract class AbstractIdentityProviderFactory<T extends IdentityProvider> implements IdentityProviderFactory<T> { | ||
|
||
@Override | ||
public void close() { | ||
|
||
} | ||
|
||
@Override | ||
public void init(Config.Scope config) { | ||
|
||
} | ||
|
||
@Override | ||
public T create(KeycloakSession session) { | ||
return null; | ||
} | ||
|
||
@Override | ||
public Map<String, String> parseConfig(InputStream inputStream) { | ||
return new HashMap<String, String>(); | ||
} | ||
} |
76 changes: 76 additions & 0 deletions
76
broker/core/src/main/java/org/keycloak/broker/provider/AuthenticationRequest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
/* | ||
* JBoss, Home of Professional Open Source | ||
* | ||
* Copyright 2013 Red Hat, Inc. and/or its affiliates. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
package org.keycloak.broker.provider; | ||
|
||
import org.jboss.resteasy.spi.HttpRequest; | ||
import org.keycloak.models.ClientSessionModel; | ||
import org.keycloak.models.RealmModel; | ||
|
||
import javax.ws.rs.core.UriInfo; | ||
|
||
/** | ||
* @author Pedro Igor | ||
*/ | ||
public class AuthenticationRequest { | ||
|
||
private final UriInfo uriInfo; | ||
private final String state; | ||
private final HttpRequest httpRequest; | ||
private final RealmModel realm; | ||
private final String redirectUri; | ||
private final ClientSessionModel clientSession; | ||
|
||
public AuthenticationRequest(RealmModel realm, ClientSessionModel clientSession, HttpRequest httpRequest, UriInfo uriInfo, String state, String redirectUri) { | ||
this.realm = realm; | ||
this.httpRequest = httpRequest; | ||
this.uriInfo = uriInfo; | ||
this.state = state; | ||
this.redirectUri = redirectUri; | ||
this.clientSession = clientSession; | ||
} | ||
|
||
public UriInfo getUriInfo() { | ||
return this.uriInfo; | ||
} | ||
|
||
public String getState() { | ||
return this.state; | ||
} | ||
|
||
public HttpRequest getHttpRequest() { | ||
return this.httpRequest; | ||
} | ||
|
||
public RealmModel getRealm() { | ||
return this.realm; | ||
} | ||
|
||
/** | ||
* <p>Returns the redirect url that must be included in an authentication request in order to process responses from an | ||
* identity provider.</p> | ||
* | ||
* @return | ||
*/ | ||
public String getRedirectUri() { | ||
return this.redirectUri; | ||
} | ||
|
||
public ClientSessionModel getClientSession() { | ||
return this.clientSession; | ||
} | ||
} |
57 changes: 57 additions & 0 deletions
57
broker/core/src/main/java/org/keycloak/broker/provider/AuthenticationResponse.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
/* | ||
* JBoss, Home of Professional Open Source | ||
* | ||
* Copyright 2013 Red Hat, Inc. and/or its affiliates. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
package org.keycloak.broker.provider; | ||
|
||
import javax.ws.rs.core.Response; | ||
import java.net.URI; | ||
|
||
/** | ||
* @author Pedro Igor | ||
*/ | ||
public class AuthenticationResponse { | ||
|
||
private final Response response; | ||
private final FederatedIdentity user; | ||
|
||
private AuthenticationResponse(FederatedIdentity user) { | ||
this.user = user; | ||
this.response = null; | ||
} | ||
|
||
private AuthenticationResponse(Response response) { | ||
this.user = null; | ||
this.response = response; | ||
} | ||
|
||
public Response getResponse() { | ||
return this.response; | ||
} | ||
|
||
public FederatedIdentity getUser() { | ||
return this.user; | ||
} | ||
|
||
public static AuthenticationResponse end(FederatedIdentity identity) { | ||
return new AuthenticationResponse(identity); | ||
} | ||
|
||
public static AuthenticationResponse temporaryRedirect(URI url) { | ||
return new AuthenticationResponse(Response.temporaryRedirect(url).build()); | ||
} | ||
|
||
} |
87 changes: 87 additions & 0 deletions
87
broker/core/src/main/java/org/keycloak/broker/provider/FederatedIdentity.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
/* | ||
* JBoss, Home of Professional Open Source | ||
* | ||
* Copyright 2013 Red Hat, Inc. and/or its affiliates. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
package org.keycloak.broker.provider; | ||
|
||
/** | ||
* <p>Represents all identity information obtained from an {@link IdentityProvider} after a | ||
* successful authentication.</p> | ||
* | ||
* @author Pedro Igor | ||
*/ | ||
public class FederatedIdentity { | ||
|
||
private String id; | ||
private String username; | ||
private String firstName; | ||
private String lastName; | ||
private String email; | ||
|
||
public FederatedIdentity(String id) { | ||
if (id == null) { | ||
throw new RuntimeException("No identifier provider for identity."); | ||
} | ||
|
||
this.id = id; | ||
} | ||
|
||
public String getId() { | ||
return id; | ||
} | ||
|
||
public void setId(String id) { | ||
this.id = id; | ||
} | ||
|
||
public String getUsername() { | ||
return username; | ||
} | ||
|
||
public void setUsername(String username) { | ||
this.username = username; | ||
} | ||
|
||
public String getFirstName() { | ||
return firstName; | ||
} | ||
|
||
public void setName(String name) { | ||
if (name != null) { | ||
int i = name.lastIndexOf(' '); | ||
if (i != -1) { | ||
firstName = name.substring(0, i); | ||
lastName = name.substring(i + 1); | ||
} else { | ||
firstName = name; | ||
} | ||
} | ||
} | ||
|
||
public String getLastName() { | ||
return lastName; | ||
} | ||
|
||
public String getEmail() { | ||
return email; | ||
} | ||
|
||
public void setEmail(String email) { | ||
this.email = email; | ||
} | ||
|
||
|
||
} |
Oops, something went wrong.