annotate src/main/java/de/mpiwg/itgroup/annotationManager/restlet/RestServer.java @ 33:e5f5848892a2

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