Added GitHub provider. Simplified FaceBook provider
This commit is contained in:
1 parent
2ad873a87f
commit
8b5fbe92d6
14 files changed
+290
-249
No files matched your search
Executable
+23
@@ -0,0 +1,23 @@
|
||||
<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/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>keycloak-social-parent</artifactId>
|
||||
<groupId>org.keycloak</groupId>
|
||||
<version>1.0-alpha-2-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<artifactId>keycloak-social-github</artifactId>
|
||||
<name>Keycloak Social GitHub</name>
|
||||
<description/>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.keycloak</groupId>
|
||||
<artifactId>keycloak-social-core</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
@@ -0,0 +1,67 @@
|
||||
package org.keycloak.social.github;
|
||||
|
||||
import org.json.JSONObject;
|
||||
import org.keycloak.social.AbstractOAuth2Provider;
|
||||
import org.keycloak.social.AuthRequest;
|
||||
import org.keycloak.social.SocialProviderConfig;
|
||||
import org.keycloak.social.SocialProviderException;
|
||||
import org.keycloak.social.SocialUser;
|
||||
import org.keycloak.social.utils.SimpleHttp;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
|
||||
*/
|
||||
public class GitHubProvider extends AbstractOAuth2Provider {
|
||||
|
||||
private static final String ID = "github";
|
||||
private static final String NAME = "GitHub";
|
||||
|
||||
private static final String AUTH_URL = "https://github.com/login/oauth/authorize";
|
||||
private static final String TOKEN_URL = "https://github.com/login/oauth/access_token";
|
||||
private static final String PROFILE_URL = "https://api.github.com/user";
|
||||
|
||||
private static final String DEFAULT_SCOPE = "user:email";
|
||||
|
||||
@Override
|
||||
public String getId() {
|
||||
return ID;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return NAME;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getScope() {
|
||||
return DEFAULT_SCOPE;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getAuthUrl() {
|
||||
return AUTH_URL;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getTokenUrl() {
|
||||
return TOKEN_URL;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SocialUser getProfile(String accessToken) throws SocialProviderException {
|
||||
try {
|
||||
JSONObject profile = SimpleHttp.doGet(PROFILE_URL).header("Authorization", "Bearer " + accessToken).asJson();
|
||||
|
||||
SocialUser user = new SocialUser(profile.get("id").toString());
|
||||
|
||||
user.setUsername(profile.getString("login"));
|
||||
user.setFirstName(profile.optString("name"));
|
||||
user.setEmail(profile.optString("email"));
|
||||
|
||||
return user;
|
||||
} catch (Exception e) {
|
||||
throw new SocialProviderException(e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
org.keycloak.social.github.GitHubProvider
|
||||
Reference in new issue
Block a user