annotate src/de/mpiwg/itgroup/metaDataManagerRestlet/RestServer.java @ 6:dbfd0df15a1d default tip

config file changed
author dwinter
date Mon, 17 Sep 2012 16:56:36 +0200
parents a59be29f06c8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
1 package de.mpiwg.itgroup.metaDataManagerRestlet;
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
2
4
aae47a713589 editing
dwinter
parents: 3
diff changeset
3 import java.net.URI;
aae47a713589 editing
dwinter
parents: 3
diff changeset
4 import java.net.URISyntaxException;
aae47a713589 editing
dwinter
parents: 3
diff changeset
5
aae47a713589 editing
dwinter
parents: 3
diff changeset
6 import javax.security.auth.callback.CallbackHandler;
aae47a713589 editing
dwinter
parents: 3
diff changeset
7 import javax.security.auth.login.Configuration;
aae47a713589 editing
dwinter
parents: 3
diff changeset
8
0
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
9 import org.apache.log4j.BasicConfigurator;
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
10 import org.apache.log4j.Level;
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
11 import org.apache.log4j.Logger;
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
12 import org.restlet.Application;
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
13 import org.restlet.Context;
4
aae47a713589 editing
dwinter
parents: 3
diff changeset
14 import org.restlet.Request;
aae47a713589 editing
dwinter
parents: 3
diff changeset
15 import org.restlet.Response;
0
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
16 import org.restlet.Restlet;
4
aae47a713589 editing
dwinter
parents: 3
diff changeset
17 import org.restlet.data.ChallengeScheme;
aae47a713589 editing
dwinter
parents: 3
diff changeset
18 import org.restlet.ext.jaas.JaasVerifier;
0
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
19 import org.restlet.routing.Router;
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
20 import org.restlet.routing.Template;
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
21 import org.restlet.routing.TemplateRoute;
4
aae47a713589 editing
dwinter
parents: 3
diff changeset
22 import org.restlet.security.ChallengeAuthenticator;
aae47a713589 editing
dwinter
parents: 3
diff changeset
23
aae47a713589 editing
dwinter
parents: 3
diff changeset
24 import com.sun.security.auth.login.ConfigFile;
0
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
25
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
26 import de.mpiwg.itgroup.metaDataManagerRestlet.pid.PIDcreator;
3
dfd72ea936ff search by ids nd names of persons
dwinter
parents: 1
diff changeset
27 import de.mpiwg.itgroup.metaDataManagerRestlet.ui.GeneralInfo;
dfd72ea936ff search by ids nd names of persons
dwinter
parents: 1
diff changeset
28 import de.mpiwg.itgroup.metaDataManagerRestlet.ui.SearchPersons;
1
ede4c4ead6f5 properties fuer die name server in web.xml eingebaut,
dwinter
parents: 0
diff changeset
29 import de.mpiwg.itgroup.metadataManager.indexMeta.server.IndexMetaProvider;
5
dwinter
parents: 4
diff changeset
30 import de.mpiwg.itgroup.nimanager.cone.Mail2ConeService;
4
aae47a713589 editing
dwinter
parents: 3
diff changeset
31 import de.mpiwg.itgroup.nimanager.edit.Editor;
1
ede4c4ead6f5 properties fuer die name server in web.xml eingebaut,
dwinter
parents: 0
diff changeset
32 import de.mpiwg.itgroup.nimanager.persons.PersonByNameService;
3
dfd72ea936ff search by ids nd names of persons
dwinter
parents: 1
diff changeset
33 import de.mpiwg.itgroup.nimanager.persons.PersonByIDService;
1
ede4c4ead6f5 properties fuer die name server in web.xml eingebaut,
dwinter
parents: 0
diff changeset
34 import de.mpiwg.itgroup.nimanager.persons.PersonListService;
ede4c4ead6f5 properties fuer die name server in web.xml eingebaut,
dwinter
parents: 0
diff changeset
35 //import de.mpiwg.itgroup.nimanager.persons.PersonService;
ede4c4ead6f5 properties fuer die name server in web.xml eingebaut,
dwinter
parents: 0
diff changeset
36 import de.mpiwg.itgroup.nimanager.persons.PersonService;
0
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
37
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
38
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
39
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
40 public class RestServer extends Application {
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
41
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
42 public RestServer(Context parentContext){
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
43 super(parentContext);
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
44
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
45 Logger rl = Logger.getRootLogger();
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
46 BasicConfigurator.configure();
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
47 rl.setLevel(Level.DEBUG);
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
48
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
49
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
50 }
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
51
4
aae47a713589 editing
dwinter
parents: 3
diff changeset
52
aae47a713589 editing
dwinter
parents: 3
diff changeset
53 private ChallengeAuthenticator authenticator;
aae47a713589 editing
dwinter
parents: 3
diff changeset
54 private CallbackHandler callbackHandler;
aae47a713589 editing
dwinter
parents: 3
diff changeset
55
aae47a713589 editing
dwinter
parents: 3
diff changeset
56 /** Erzeuge einen Authenticator
aae47a713589 editing
dwinter
parents: 3
diff changeset
57 * @return
aae47a713589 editing
dwinter
parents: 3
diff changeset
58 */
aae47a713589 editing
dwinter
parents: 3
diff changeset
59 private ChallengeAuthenticator createAuthenticator() {
aae47a713589 editing
dwinter
parents: 3
diff changeset
60 Context context = getContext();
aae47a713589 editing
dwinter
parents: 3
diff changeset
61 boolean optional = true;
aae47a713589 editing
dwinter
parents: 3
diff changeset
62 ChallengeScheme challengeScheme = ChallengeScheme.HTTP_BASIC;
aae47a713589 editing
dwinter
parents: 3
diff changeset
63 String realm = "Annotation Service";
aae47a713589 editing
dwinter
parents: 3
diff changeset
64
aae47a713589 editing
dwinter
parents: 3
diff changeset
65 JaasVerifier verifier = new JaasVerifier("BasicJaasAuthenticationApplication");
aae47a713589 editing
dwinter
parents: 3
diff changeset
66 //JaasVerifier verifier = new JaasVerifier("DummyAuthentication");
aae47a713589 editing
dwinter
parents: 3
diff changeset
67
aae47a713589 editing
dwinter
parents: 3
diff changeset
68 Configuration jaasConfig;
aae47a713589 editing
dwinter
parents: 3
diff changeset
69 jaasConfig = createConfiguration();
aae47a713589 editing
dwinter
parents: 3
diff changeset
70
aae47a713589 editing
dwinter
parents: 3
diff changeset
71
aae47a713589 editing
dwinter
parents: 3
diff changeset
72 verifier.setConfiguration(jaasConfig);
aae47a713589 editing
dwinter
parents: 3
diff changeset
73 verifier.setUserPrincipalClassName("com.sun.security.auth.UserPrincipal");
aae47a713589 editing
dwinter
parents: 3
diff changeset
74
aae47a713589 editing
dwinter
parents: 3
diff changeset
75 ChallengeAuthenticator auth = new ChallengeAuthenticator(context, optional, challengeScheme, realm, verifier) {
aae47a713589 editing
dwinter
parents: 3
diff changeset
76 @Override
aae47a713589 editing
dwinter
parents: 3
diff changeset
77 protected boolean authenticate(Request request, Response response) {
aae47a713589 editing
dwinter
parents: 3
diff changeset
78 if (request.getChallengeResponse() == null) {
aae47a713589 editing
dwinter
parents: 3
diff changeset
79 return false;
aae47a713589 editing
dwinter
parents: 3
diff changeset
80 } else {
aae47a713589 editing
dwinter
parents: 3
diff changeset
81 return super.authenticate(request, response);
aae47a713589 editing
dwinter
parents: 3
diff changeset
82 }
aae47a713589 editing
dwinter
parents: 3
diff changeset
83 }
aae47a713589 editing
dwinter
parents: 3
diff changeset
84 };
aae47a713589 editing
dwinter
parents: 3
diff changeset
85
aae47a713589 editing
dwinter
parents: 3
diff changeset
86 return auth;
aae47a713589 editing
dwinter
parents: 3
diff changeset
87 }
aae47a713589 editing
dwinter
parents: 3
diff changeset
88
aae47a713589 editing
dwinter
parents: 3
diff changeset
89 /**
aae47a713589 editing
dwinter
parents: 3
diff changeset
90 * Konfiguration für den Authentificator in Jaas. Pfad zum JAAS-Konfigurationsfile liegt im Context-Parameter
aae47a713589 editing
dwinter
parents: 3
diff changeset
91 * "de.mpiwg.itgroup.annotationManager.jaas.configFilePath".
aae47a713589 editing
dwinter
parents: 3
diff changeset
92 * @return
aae47a713589 editing
dwinter
parents: 3
diff changeset
93 */
aae47a713589 editing
dwinter
parents: 3
diff changeset
94 protected Configuration createConfiguration() {
aae47a713589 editing
dwinter
parents: 3
diff changeset
95 Configuration jaasConfig;
aae47a713589 editing
dwinter
parents: 3
diff changeset
96 URI confUri;
aae47a713589 editing
dwinter
parents: 3
diff changeset
97
aae47a713589 editing
dwinter
parents: 3
diff changeset
98 Context context = getContext();
aae47a713589 editing
dwinter
parents: 3
diff changeset
99 String configFilePath = context.getParameters().getFirstValue("de.mpiwg.itgroup.jaas.configFilePath");
aae47a713589 editing
dwinter
parents: 3
diff changeset
100
aae47a713589 editing
dwinter
parents: 3
diff changeset
101
aae47a713589 editing
dwinter
parents: 3
diff changeset
102 try {
aae47a713589 editing
dwinter
parents: 3
diff changeset
103 confUri = new URI(configFilePath);
aae47a713589 editing
dwinter
parents: 3
diff changeset
104 } catch (URISyntaxException e) {
aae47a713589 editing
dwinter
parents: 3
diff changeset
105 e.printStackTrace();
aae47a713589 editing
dwinter
parents: 3
diff changeset
106 confUri = null;
aae47a713589 editing
dwinter
parents: 3
diff changeset
107 }
aae47a713589 editing
dwinter
parents: 3
diff changeset
108
aae47a713589 editing
dwinter
parents: 3
diff changeset
109 jaasConfig= new ConfigFile(confUri);
aae47a713589 editing
dwinter
parents: 3
diff changeset
110 return jaasConfig;
aae47a713589 editing
dwinter
parents: 3
diff changeset
111 }
aae47a713589 editing
dwinter
parents: 3
diff changeset
112
aae47a713589 editing
dwinter
parents: 3
diff changeset
113
aae47a713589 editing
dwinter
parents: 3
diff changeset
114
aae47a713589 editing
dwinter
parents: 3
diff changeset
115
aae47a713589 editing
dwinter
parents: 3
diff changeset
116
0
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
117 public synchronized Restlet createInboundRoot(){
4
aae47a713589 editing
dwinter
parents: 3
diff changeset
118 this.authenticator = createAuthenticator();
aae47a713589 editing
dwinter
parents: 3
diff changeset
119
0
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
120 Router router = new Router(getContext());
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
121
3
dfd72ea936ff search by ids nd names of persons
dwinter
parents: 1
diff changeset
122 router.attach("/",GeneralInfo.class);
0
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
123 router.attach("/PID",PIDcreator.class);
3
dfd72ea936ff search by ids nd names of persons
dwinter
parents: 1
diff changeset
124 router.attach("/searchPersons",SearchPersons.class);
1
ede4c4ead6f5 properties fuer die name server in web.xml eingebaut,
dwinter
parents: 0
diff changeset
125 router.attach("/person/name/{name}",PersonByNameService.class);
ede4c4ead6f5 properties fuer die name server in web.xml eingebaut,
dwinter
parents: 0
diff changeset
126 router.attach("/persons",PersonListService.class);
ede4c4ead6f5 properties fuer die name server in web.xml eingebaut,
dwinter
parents: 0
diff changeset
127 router.attach("/person/id/{personId}",PersonService.class);
ede4c4ead6f5 properties fuer die name server in web.xml eingebaut,
dwinter
parents: 0
diff changeset
128 router.attach("/person/id/{personId}/{graphId}",PersonService.class);
3
dfd72ea936ff search by ids nd names of persons
dwinter
parents: 1
diff changeset
129 router.attach("/ids",PersonByIDService.class);
4
aae47a713589 editing
dwinter
parents: 3
diff changeset
130 router.attach("/edit",Editor.class);
5
dwinter
parents: 4
diff changeset
131 router.attach("/cone/{personId}",Mail2ConeService.class);
1
ede4c4ead6f5 properties fuer die name server in web.xml eingebaut,
dwinter
parents: 0
diff changeset
132 TemplateRoute route = router.attach("/indexMeta", IndexMetaProvider.class);
ede4c4ead6f5 properties fuer die name server in web.xml eingebaut,
dwinter
parents: 0
diff changeset
133 route.setMatchingMode(Template.MODE_STARTS_WITH);
0
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
134
4
aae47a713589 editing
dwinter
parents: 3
diff changeset
135 authenticator.setNext(router);
aae47a713589 editing
dwinter
parents: 3
diff changeset
136 return authenticator;
aae47a713589 editing
dwinter
parents: 3
diff changeset
137
aae47a713589 editing
dwinter
parents: 3
diff changeset
138
0
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
139
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
140 }
4
aae47a713589 editing
dwinter
parents: 3
diff changeset
141
aae47a713589 editing
dwinter
parents: 3
diff changeset
142 /**
aae47a713589 editing
dwinter
parents: 3
diff changeset
143 * Authentifiziere den Benutzer aus dem Request (BasicAuthenfication)
aae47a713589 editing
dwinter
parents: 3
diff changeset
144 * @param request
aae47a713589 editing
dwinter
parents: 3
diff changeset
145 * @param response
aae47a713589 editing
dwinter
parents: 3
diff changeset
146 * @return
aae47a713589 editing
dwinter
parents: 3
diff changeset
147 */
aae47a713589 editing
dwinter
parents: 3
diff changeset
148 public boolean authenticate(Request request, Response response) {
aae47a713589 editing
dwinter
parents: 3
diff changeset
149 if (!request.getClientInfo().isAuthenticated()) {
aae47a713589 editing
dwinter
parents: 3
diff changeset
150 authenticator.challenge(response, false);
aae47a713589 editing
dwinter
parents: 3
diff changeset
151 return false;
aae47a713589 editing
dwinter
parents: 3
diff changeset
152 }
aae47a713589 editing
dwinter
parents: 3
diff changeset
153
aae47a713589 editing
dwinter
parents: 3
diff changeset
154 if(request.getClientInfo().getUser()==null) //FIXME sometimes ist authenticated true, but no user
aae47a713589 editing
dwinter
parents: 3
diff changeset
155 {
aae47a713589 editing
dwinter
parents: 3
diff changeset
156 authenticator.challenge(response, false);
aae47a713589 editing
dwinter
parents: 3
diff changeset
157 return false;
aae47a713589 editing
dwinter
parents: 3
diff changeset
158 }
aae47a713589 editing
dwinter
parents: 3
diff changeset
159
aae47a713589 editing
dwinter
parents: 3
diff changeset
160
aae47a713589 editing
dwinter
parents: 3
diff changeset
161 return true;
aae47a713589 editing
dwinter
parents: 3
diff changeset
162 }
aae47a713589 editing
dwinter
parents: 3
diff changeset
163
0
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
164 }
813aa2c5bc4b first ingest
dwinter
parents:
diff changeset
165