Mercurial > hg > MetaDataManagerRestlet
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 |
rev | line source |
---|---|
0 | 1 package de.mpiwg.itgroup.metaDataManagerRestlet; |
2 | |
4 | 3 import java.net.URI; |
4 import java.net.URISyntaxException; | |
5 | |
6 import javax.security.auth.callback.CallbackHandler; | |
7 import javax.security.auth.login.Configuration; | |
8 | |
0 | 9 import org.apache.log4j.BasicConfigurator; |
10 import org.apache.log4j.Level; | |
11 import org.apache.log4j.Logger; | |
12 import org.restlet.Application; | |
13 import org.restlet.Context; | |
4 | 14 import org.restlet.Request; |
15 import org.restlet.Response; | |
0 | 16 import org.restlet.Restlet; |
4 | 17 import org.restlet.data.ChallengeScheme; |
18 import org.restlet.ext.jaas.JaasVerifier; | |
0 | 19 import org.restlet.routing.Router; |
20 import org.restlet.routing.Template; | |
21 import org.restlet.routing.TemplateRoute; | |
4 | 22 import org.restlet.security.ChallengeAuthenticator; |
23 | |
24 import com.sun.security.auth.login.ConfigFile; | |
0 | 25 |
26 import de.mpiwg.itgroup.metaDataManagerRestlet.pid.PIDcreator; | |
3 | 27 import de.mpiwg.itgroup.metaDataManagerRestlet.ui.GeneralInfo; |
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 | 30 import de.mpiwg.itgroup.nimanager.cone.Mail2ConeService; |
4 | 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 | 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 | 37 |
38 | |
39 | |
40 public class RestServer extends Application { | |
41 | |
42 public RestServer(Context parentContext){ | |
43 super(parentContext); | |
44 | |
45 Logger rl = Logger.getRootLogger(); | |
46 BasicConfigurator.configure(); | |
47 rl.setLevel(Level.DEBUG); | |
48 | |
49 | |
50 } | |
51 | |
4 | 52 |
53 private ChallengeAuthenticator authenticator; | |
54 private CallbackHandler callbackHandler; | |
55 | |
56 /** Erzeuge einen Authenticator | |
57 * @return | |
58 */ | |
59 private ChallengeAuthenticator createAuthenticator() { | |
60 Context context = getContext(); | |
61 boolean optional = true; | |
62 ChallengeScheme challengeScheme = ChallengeScheme.HTTP_BASIC; | |
63 String realm = "Annotation Service"; | |
64 | |
65 JaasVerifier verifier = new JaasVerifier("BasicJaasAuthenticationApplication"); | |
66 //JaasVerifier verifier = new JaasVerifier("DummyAuthentication"); | |
67 | |
68 Configuration jaasConfig; | |
69 jaasConfig = createConfiguration(); | |
70 | |
71 | |
72 verifier.setConfiguration(jaasConfig); | |
73 verifier.setUserPrincipalClassName("com.sun.security.auth.UserPrincipal"); | |
74 | |
75 ChallengeAuthenticator auth = new ChallengeAuthenticator(context, optional, challengeScheme, realm, verifier) { | |
76 @Override | |
77 protected boolean authenticate(Request request, Response response) { | |
78 if (request.getChallengeResponse() == null) { | |
79 return false; | |
80 } else { | |
81 return super.authenticate(request, response); | |
82 } | |
83 } | |
84 }; | |
85 | |
86 return auth; | |
87 } | |
88 | |
89 /** | |
90 * Konfiguration für den Authentificator in Jaas. Pfad zum JAAS-Konfigurationsfile liegt im Context-Parameter | |
91 * "de.mpiwg.itgroup.annotationManager.jaas.configFilePath". | |
92 * @return | |
93 */ | |
94 protected Configuration createConfiguration() { | |
95 Configuration jaasConfig; | |
96 URI confUri; | |
97 | |
98 Context context = getContext(); | |
99 String configFilePath = context.getParameters().getFirstValue("de.mpiwg.itgroup.jaas.configFilePath"); | |
100 | |
101 | |
102 try { | |
103 confUri = new URI(configFilePath); | |
104 } catch (URISyntaxException e) { | |
105 e.printStackTrace(); | |
106 confUri = null; | |
107 } | |
108 | |
109 jaasConfig= new ConfigFile(confUri); | |
110 return jaasConfig; | |
111 } | |
112 | |
113 | |
114 | |
115 | |
116 | |
0 | 117 public synchronized Restlet createInboundRoot(){ |
4 | 118 this.authenticator = createAuthenticator(); |
119 | |
0 | 120 Router router = new Router(getContext()); |
121 | |
3 | 122 router.attach("/",GeneralInfo.class); |
0 | 123 router.attach("/PID",PIDcreator.class); |
3 | 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 | 129 router.attach("/ids",PersonByIDService.class); |
4 | 130 router.attach("/edit",Editor.class); |
5 | 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 | 134 |
4 | 135 authenticator.setNext(router); |
136 return authenticator; | |
137 | |
138 | |
0 | 139 |
140 } | |
4 | 141 |
142 /** | |
143 * Authentifiziere den Benutzer aus dem Request (BasicAuthenfication) | |
144 * @param request | |
145 * @param response | |
146 * @return | |
147 */ | |
148 public boolean authenticate(Request request, Response response) { | |
149 if (!request.getClientInfo().isAuthenticated()) { | |
150 authenticator.challenge(response, false); | |
151 return false; | |
152 } | |
153 | |
154 if(request.getClientInfo().getUser()==null) //FIXME sometimes ist authenticated true, but no user | |
155 { | |
156 authenticator.challenge(response, false); | |
157 return false; | |
158 } | |
159 | |
160 | |
161 return true; | |
162 } | |
163 | |
0 | 164 } |
165 |