gvsig-projects-pool / org.gvsig.online / trunk / org.gvsig.online / org.gvsig.online.swing / org.gvsig.online.swing.scribejava / src / main / java / org / gvsig / online / swing / scribejava / keycloak / callbacks / CallbackAuthorizationHandler.java @ 9514
History | View | Annotate | Download (3.15 KB)
1 |
/*
|
---|---|
2 |
* To change this license header, choose License Headers in Project Properties.
|
3 |
* To change this template file, choose Tools | Templates
|
4 |
* and open the template in the editor.
|
5 |
*/
|
6 |
package org.gvsig.online.swing.scribejava.keycloak.callbacks; |
7 |
|
8 |
import com.github.scribejava.core.model.OAuth2AccessToken; |
9 |
import com.github.scribejava.core.model.OAuth2Authorization; |
10 |
import com.github.scribejava.core.model.OAuthRequest; |
11 |
import com.github.scribejava.core.model.Response; |
12 |
import com.github.scribejava.core.model.Verb; |
13 |
import com.github.scribejava.core.oauth.OAuth20Service; |
14 |
import com.sun.net.httpserver.HttpExchange; |
15 |
import com.sun.net.httpserver.HttpHandler; |
16 |
import java.io.IOException; |
17 |
import javax.json.JsonObject; |
18 |
import org.gvsig.json.Json; |
19 |
import org.gvsig.online.swing.scribejava.keycloak.UserIdentificationKeycloak; |
20 |
import org.gvsig.online.swing.scribejava.keycloak.UserIdentificationKeycloakConfig; |
21 |
|
22 |
/**
|
23 |
*
|
24 |
* @author jjdelcerro
|
25 |
*/
|
26 |
@SuppressWarnings("UseSpecificCatch") |
27 |
public class CallbackAuthorizationHandler extends AbstractCallback implements HttpHandler { |
28 |
|
29 |
|
30 |
public CallbackAuthorizationHandler(UserIdentificationKeycloak identificationRequester, OAuth20Service service, String contextPath) { |
31 |
super(identificationRequester, service, contextPath);
|
32 |
} |
33 |
|
34 |
@Override
|
35 |
public void handle(HttpExchange t) throws IOException { |
36 |
String requestURL = "Unknown"; |
37 |
try {
|
38 |
requestURL = t.getRequestURI().toString(); |
39 |
this.identificationRequester.setAuthorization(null); |
40 |
this.identificationRequester.setUserId(null); |
41 |
OAuth2Authorization auth = service.extractAuthorization(t.getRequestURI().toString()); |
42 |
if (auth.getCode() == null) { |
43 |
response(t, 200, message("Can't autthenticate user\n")); |
44 |
return;
|
45 |
} |
46 |
final OAuth2AccessToken accessToken = service.getAccessToken(auth.getCode());
|
47 |
this.identificationRequester.setAuthorization(accessToken.getAccessToken());
|
48 |
|
49 |
String userId = null; |
50 |
JsonObject userinfo = this.identificationRequester.userInfo(service);
|
51 |
if (userinfo!=null) { |
52 |
userId = userinfo.getString("preferred_username", null); |
53 |
// System.out.println("userid: " + userId);
|
54 |
// System.out.println("name: " + userinfo.getString("name", null));
|
55 |
// System.out.println("email: " + userinfo.getString("email", null));
|
56 |
// System.out.println("roles: " + userinfo.get("gvsigol_roles").toString());
|
57 |
// System.out.println("grupos: " + userinfo.get("groups").toString());
|
58 |
this.identificationRequester.setUserId(userId);
|
59 |
} |
60 |
response(t, 200, message_and_close((userId == null)?"User autthenticate\n":"User " + userId + " authenticated\n")); |
61 |
} catch (Exception ex) { |
62 |
LOGGER.warn("Can't process callback authorization (contextPath '" + contextPath + "', request URL '" + requestURL + "')", ex); |
63 |
responseQuietly(t, 500, message("Can't authenticate user\n" + ex.getMessage())); |
64 |
} finally {
|
65 |
this.stopWaitingForResponse();
|
66 |
} |
67 |
} |
68 |
|
69 |
} |