annotate src/de/mpiwg/itgroup/annotationManager/restlet/RestServer.java @ 13:9393c9c9b916

saves annotations now!
author casties
date Wed, 21 Mar 2012 15:23:57 +0100
parents e9fd2e1e0979
children 6c7c4140630d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
dwinter
parents:
diff changeset
1 package de.mpiwg.itgroup.annotationManager.restlet;
dwinter
parents:
diff changeset
2
9
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
3 import java.io.File;
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
4 import java.io.FileInputStream;
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
5 import java.io.FileNotFoundException;
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
6 import java.io.IOException;
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
7 import java.io.InputStream;
0
dwinter
parents:
diff changeset
8 import java.net.URI;
dwinter
parents:
diff changeset
9 import java.net.URISyntaxException;
dwinter
parents:
diff changeset
10 import java.util.Hashtable;
9
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
11 import java.util.Properties;
0
dwinter
parents:
diff changeset
12
dwinter
parents:
diff changeset
13 import javax.naming.NamingEnumeration;
dwinter
parents:
diff changeset
14 import javax.naming.NamingException;
dwinter
parents:
diff changeset
15 import javax.naming.directory.Attribute;
dwinter
parents:
diff changeset
16 import javax.naming.directory.DirContext;
dwinter
parents:
diff changeset
17 import javax.naming.directory.InitialDirContext;
dwinter
parents:
diff changeset
18 import javax.naming.directory.SearchControls;
dwinter
parents:
diff changeset
19 import javax.naming.directory.SearchResult;
dwinter
parents:
diff changeset
20 import javax.security.auth.Subject;
dwinter
parents:
diff changeset
21 import javax.security.auth.login.Configuration;
dwinter
parents:
diff changeset
22 import javax.security.auth.login.LoginContext;
dwinter
parents:
diff changeset
23 import javax.security.auth.login.LoginException;
9
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
24 import javax.servlet.ServletContext;
0
dwinter
parents:
diff changeset
25
dwinter
parents:
diff changeset
26 import org.apache.log4j.BasicConfigurator;
dwinter
parents:
diff changeset
27 import org.apache.log4j.Level;
dwinter
parents:
diff changeset
28 import org.apache.log4j.Logger;
dwinter
parents:
diff changeset
29 import org.restlet.Application;
dwinter
parents:
diff changeset
30 import org.restlet.Context;
dwinter
parents:
diff changeset
31 import org.restlet.Request;
dwinter
parents:
diff changeset
32 import org.restlet.Response;
dwinter
parents:
diff changeset
33 import org.restlet.Restlet;
dwinter
parents:
diff changeset
34 import org.restlet.data.ChallengeScheme;
dwinter
parents:
diff changeset
35 import org.restlet.data.ClientInfo;
dwinter
parents:
diff changeset
36 import org.restlet.ext.jaas.JaasVerifier;
dwinter
parents:
diff changeset
37 import org.restlet.routing.Router;
dwinter
parents:
diff changeset
38 import org.restlet.security.ChallengeAuthenticator;
dwinter
parents:
diff changeset
39 import org.restlet.security.User;
dwinter
parents:
diff changeset
40
dwinter
parents:
diff changeset
41 import com.sun.security.auth.login.ConfigFile;
dwinter
parents:
diff changeset
42
dwinter
parents:
diff changeset
43 public class RestServer extends Application {
dwinter
parents:
diff changeset
44
9
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
45 private ChallengeAuthenticator authenticator;
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
46
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
47 /**
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
48 * Properties holding consumer keys and secrets
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
49 */
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
50 private Properties consumerKeys;
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
51 public final String CONSUMER_KEYS_PATH = "WEB-INF/consumerkeys.property";
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
52
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
53 /**
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
54 * constructor
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
55 *
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
56 * @param parentContext
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
57 */
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
58 public RestServer(Context parentContext) {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
59 super(parentContext);
0
dwinter
parents:
diff changeset
60
9
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
61 Logger rl = Logger.getRootLogger();
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
62 BasicConfigurator.configure();
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
63 rl.setLevel(Level.DEBUG);
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
64 // read consumerKeys from webapp
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
65 consumerKeys = new Properties();
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
66 ServletContext sc = (ServletContext) getContext().getServerDispatcher()
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
67 .getContext().getAttributes()
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
68 .get("org.restlet.ext.servlet.ServletContext");
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
69 if (sc != null) {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
70 InputStream ps = sc.getResourceAsStream(CONSUMER_KEYS_PATH);
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
71 if (ps == null) {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
72 // try as file
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
73 File pf = new File(sc.getRealPath(CONSUMER_KEYS_PATH));
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
74 if (pf != null) {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
75 rl.debug("trying file for consumer keys: "+pf);
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
76 try {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
77 ps = new FileInputStream(pf);
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
78 } catch (FileNotFoundException e) {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
79 // TODO Auto-generated catch block
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
80 e.printStackTrace();
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
81 }
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
82 }
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
83 }
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
84 if (ps != null) {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
85 rl.debug("loading consumer keys from "+CONSUMER_KEYS_PATH);
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
86 try {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
87 consumerKeys.load(ps);
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
88 } catch (IOException e) {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
89 // TODO Auto-generated catch block
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
90 e.printStackTrace();
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
91 }
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
92 rl.debug("consumer keys: "+consumerKeys);
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
93 } else {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
94 rl.error("Unable to get resource "+CONSUMER_KEYS_PATH);
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
95 }
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
96 } else {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
97 rl.error("Unable to get ServletContext!");
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
98 }
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
99
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
100 }
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
101
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
102 /**
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
103 * returns consumer secret for consumer key.
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
104 * returns null if consumer key doesn't exist.
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
105 * @param consumerKey
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
106 * @return
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
107 */
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
108 public String getConsumerSecret(String consumerKey) {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
109 return consumerKeys.getProperty(consumerKey);
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
110 }
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
111
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
112 /**
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
113 * Erzeuge einen Authenticator
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
114 *
0
dwinter
parents:
diff changeset
115 * @return
dwinter
parents:
diff changeset
116 */
dwinter
parents:
diff changeset
117 private ChallengeAuthenticator createAuthenticator() {
dwinter
parents:
diff changeset
118 Context context = getContext();
dwinter
parents:
diff changeset
119 boolean optional = true;
dwinter
parents:
diff changeset
120 ChallengeScheme challengeScheme = ChallengeScheme.HTTP_BASIC;
dwinter
parents:
diff changeset
121 String realm = "Annotation Service";
dwinter
parents:
diff changeset
122
9
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
123 JaasVerifier verifier = new JaasVerifier(
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
124 "BasicJaasAuthenticationApplication");
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
125 // JaasVerifier verifier = new JaasVerifier("DummyAuthentication");
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
126
0
dwinter
parents:
diff changeset
127 Configuration jaasConfig;
dwinter
parents:
diff changeset
128 jaasConfig = createConfiguration();
9
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
129
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
130 verifier.setConfiguration(jaasConfig);
0
dwinter
parents:
diff changeset
131 verifier.setUserPrincipalClassName("com.sun.security.auth.UserPrincipal");
9
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
132
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
133 ChallengeAuthenticator auth = new ChallengeAuthenticator(context,
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
134 optional, challengeScheme, realm, verifier) {
0
dwinter
parents:
diff changeset
135 @Override
dwinter
parents:
diff changeset
136 protected boolean authenticate(Request request, Response response) {
dwinter
parents:
diff changeset
137 if (request.getChallengeResponse() == null) {
dwinter
parents:
diff changeset
138 return false;
dwinter
parents:
diff changeset
139 } else {
dwinter
parents:
diff changeset
140 return super.authenticate(request, response);
dwinter
parents:
diff changeset
141 }
dwinter
parents:
diff changeset
142 }
dwinter
parents:
diff changeset
143 };
dwinter
parents:
diff changeset
144
dwinter
parents:
diff changeset
145 return auth;
dwinter
parents:
diff changeset
146 }
dwinter
parents:
diff changeset
147
9
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
148 /**
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
149 * Konfiguration fuer den Authentificator in Jaas. Pfad zum
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
150 * JAAS-Konfigurationsfile liegt im Context-Parameter
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
151 * "de.mpiwg.itgroup.annotationManager.jaas.configFilePath".
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
152 *
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
153 * @return
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
154 */
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
155 protected Configuration createConfiguration() {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
156 Configuration jaasConfig;
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
157 URI confUri;
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
158
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
159 Context context = getContext();
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
160 String configFilePath = context.getParameters().getFirstValue(
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
161 "de.mpiwg.itgroup.annotationManager.jaas.configFilePath");
0
dwinter
parents:
diff changeset
162
9
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
163 try {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
164 confUri = new URI(configFilePath);
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
165 } catch (URISyntaxException e) {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
166 e.printStackTrace();
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
167 confUri = null;
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
168 }
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
169
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
170 jaasConfig = new ConfigFile(confUri);
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
171 return jaasConfig;
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
172 }
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
173
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
174 /*
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
175 * (non-Javadoc)
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
176 *
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
177 * @see org.restlet.Application#createInboundRoot()
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
178 */
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
179 public synchronized Restlet createInboundRoot() {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
180 this.authenticator = createAuthenticator();
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
181
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
182 // String target = "{rh}/{rf}/XX";
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
183 // Redirector redirector = new
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
184 // Redirector(getContext().createChildContext(), target,
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
185 // Redirector.MODE_CLIENT_SEE_OTHER);
0
dwinter
parents:
diff changeset
186
9
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
187 Router router = new Router(getContext());
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
188
13
9393c9c9b916 saves annotations now!
casties
parents: 9
diff changeset
189 router.attach("/annotator/annotations", AnnotatorAnnotations.class);
9393c9c9b916 saves annotations now!
casties
parents: 9
diff changeset
190 router.attach("/annotator/search", AnnotatorSearch.class); // annotator api askes
9
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
191 // for different uris
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
192 // for search and
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
193 // adding
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
194 // router.attach("/search",SearchAnnotations.class); // annotator api
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
195 // askes for different uris for search and adding
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
196 router.attach("/dummy", Dummy.class);
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
197
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
198 // router.attach("",redirector);
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
199 router.attach("/annotator", ExtendedAnnotationInput.class);
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
200 router.attach("/", AnnotatorInfo.class);
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
201 authenticator.setNext(router);
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
202 return authenticator;
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
203 }
0
dwinter
parents:
diff changeset
204
9
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
205 /**
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
206 * Authentifiziere den Benutzer aus dem Request (BasicAuthenfication)
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
207 *
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
208 * @param request
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
209 * @param response
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
210 * @return
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
211 */
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
212 public boolean authenticate(Request request, Response response) {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
213 if (!request.getClientInfo().isAuthenticated()) {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
214 authenticator.challenge(response, false);
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
215 return false;
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
216 }
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
217
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
218 if (request.getClientInfo().getUser() == null) // FIXME sometimes ist
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
219 // authenticated true,
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
220 // but no user
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
221 {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
222 authenticator.challenge(response, false);
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
223 return false;
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
224 }
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
225 return true;
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
226 }
0
dwinter
parents:
diff changeset
227
9
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
228 /**
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
229 * Authentifiziere den Benutzer
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
230 *
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
231 * @param username
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
232 * @param password
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
233 * @param request
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
234 * @return
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
235 */
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
236 public boolean authenticate(String username, String password,
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
237 Request request) {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
238 LoginContext lc;
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
239
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
240 try {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
241 Configuration conf = createConfiguration();
0
dwinter
parents:
diff changeset
242
9
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
243 lc = new LoginContext("BasicJaasAuthenticationApplication", null,
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
244 new MyCallBackHandler(username, password), conf);
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
245 // lc = new LoginContext("DummyAuthentication", null, new
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
246 // MyCallBackHandler(username,password),conf);
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
247 lc.login();
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
248 } catch (LoginException e) {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
249 // TODO Auto-generated catch block
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
250 e.printStackTrace();
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
251 return false;
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
252 }
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
253
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
254 Subject subject = lc.getSubject();
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
255 ClientInfo clientInfo = new ClientInfo();
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
256 User user = new User(username);
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
257 clientInfo.setAuthenticated(true);
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
258 clientInfo.setUser(user);
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
259
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
260 request.setClientInfo(clientInfo);
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
261 return true;
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
262 }
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
263
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
264 /**
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
265 * Hole den vollen Benutzernamen aus dem LDAP
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
266 *
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
267 * @param creator
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
268 * @return
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
269 */
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
270 public String getUserNameFromLdap(String creator) {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
271 String retString = creator; // falls nichts gefunden wird einfach den
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
272 // creator zurueckgeben
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
273 Hashtable<String, String> env = new Hashtable<String, String>();
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
274 String sp = "com.sun.jndi.ldap.LdapCtxFactory";
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
275 env.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, sp);
0
dwinter
parents:
diff changeset
276
9
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
277 String ldapUrl = "ldap://ldapreplik.mpiwg-berlin.mpg.de/dc=mpiwg-berlin,dc=mpg,dc=de";// TODO
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
278 // should
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
279 // go
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
280 // into
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
281 // config
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
282 // file
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
283 env.put(javax.naming.Context.PROVIDER_URL, ldapUrl);
0
dwinter
parents:
diff changeset
284
9
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
285 DirContext dctx;
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
286 try {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
287 dctx = new InitialDirContext(env);
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
288 } catch (NamingException e1) {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
289 // TODO Auto-generated catch block
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
290 e1.printStackTrace();
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
291 return retString;
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
292 }
0
dwinter
parents:
diff changeset
293
9
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
294 String base = "ou=People";
0
dwinter
parents:
diff changeset
295
9
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
296 SearchControls sc = new SearchControls();
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
297 String[] attributeFilter = { "cn", "mail" };
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
298 sc.setReturningAttributes(attributeFilter);
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
299 sc.setSearchScope(SearchControls.SUBTREE_SCOPE);
0
dwinter
parents:
diff changeset
300
9
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
301 String filter = "(uid=" + creator + ")";
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
302
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
303 try {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
304 NamingEnumeration<SearchResult> results = dctx.search(base, filter,
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
305 sc);
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
306 while (results.hasMore()) {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
307 SearchResult sr = (SearchResult) results.next();
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
308 javax.naming.directory.Attributes attrs = sr.getAttributes();
0
dwinter
parents:
diff changeset
309
9
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
310 Attribute attr = attrs.get("cn");
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
311 retString = (String) attr.get();
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
312 }
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
313 } catch (NamingException e) {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
314 // TODO Auto-generated catch block
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
315 e.printStackTrace();
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
316 }
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
317
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
318 try {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
319 dctx.close();
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
320 } catch (NamingException e) {
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
321 // TODO Auto-generated catch block
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
322 e.printStackTrace();
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
323 }
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
324 return retString;
e9fd2e1e0979 consumer key and secret store (property file).
casties
parents: 8
diff changeset
325 }
0
dwinter
parents:
diff changeset
326
dwinter
parents:
diff changeset
327 }