1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
|
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns="http://maven.apache.org/XDOC/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
<properties>
<title>Projektdokumentation</title>
<author>Yves Fischer</author>
<date>24.02.2011</date>
</properties>
<body>
<section name="Einleitung">
<p>Die Nutzung von elektronischen Kalendern zur Planung und
Verwaltung
spielt eine
enorme Rolle für viele Privatleute und in
vielen Unternehmen.</p>
<p>Firmeninterne und -übergreifende Geschäfte nutzen die vielen
Möglichkeiten
von Kalender (Groupware) Applikationen. Mithilfe des
iCalendar
Standards
existiert ein interoperabler Standard zum
Austausch von
Kalenderinformationen.</p>
<p>Die neue Campus-Software ,,Dualis'' der Dualen Hochschule
Baden-Württemberg
stellt den Studenten einen elektronischen
Vorlesungsplan zur Verfügung.
Eine
Schnittstelle zur Anbindung an
gängige Kalenderlösungen wird jedoch nicht
bereitgestellt.</p>
<p>Das Ziel dieses Projektes ist es, einen Adapter bereitzustellen,
mithilfe
dessen der ,,Stundenplan'' aus dem ,,Dualis'' System der
Dualen Hochschule
Baden-Württemberg in eine iCalendar-kompatible
Anwendung importiert
werden kann.</p>
<subsection name="Dualis">
<p>
Dualis ist das interne Verwaltungssystem der DHBW. Es basiert auf
der Software
,,CampusNet'' der Firma Datenlotsen Informationssysteme
GmbH, Hamburg.Unter dem Namen ,,BAsys Neu'' wurde Dualis als
Ablösung des alten
,,BAsys''-Verwaltungssystem entwickelt. Die
Endung ,,-is'' steht
für
Informationssystem (
<a
href="http://www.dhbw-stuttgart.de/themen/aktuelles/meldung/2008/11/basys-wird-dualis.html">Pressemeldung</a>
).
</p>
<p>Studierende können über den Dualis Web-Client ihre Noten, eine
Leistungsübersicht über das gesamte Studium und ihren aktuellen
Stundenplan einsehen.</p>
</subsection>
<subsection name="Das iCalendar Format">
<p>iCalendar ist ein Internet Standard (RFC 5545) um
Kalenderinformationen
auszutauschen. Dazu gibt es verschiedene
Klassen wie Event, To-Do oder
Free/Busy-Information.
Im Rahmen dieses
Projekts werden nur Events
genutzt.</p>
<p>
iCalendar Daten besitzen den MIME Content-Type
<tt>{text/calender</tt>
. Die
Daten
sind in einem einfachen, ASCII
Key-Value Format aufgebaut.
</p>
<p>Grundsätzlich bestehen iCalendar Daten aus folgendem Block</p>
<source><![CDATA[
BEGIN:VCALENDAR
PRODID:-//xyz Corp//NONSGML PDA Calendar
Version 1.0//EN
VERSION:2.0
....
Event, To-Do, Journal,
Free/Busy, Time
Zone, Alarm Component
...
END:VCALENDAR
]]></source>
<p>Eine Event-Component ist wie folgt aufgebaut, wobei noch weitere
optionale Felder möglich sind:</p>
<source><![CDATA[
BEGIN:VEVENT
DTSTAMP:19960704T120000Z
UID:uid1@example.com
ORGANIZER:mailto:jsmith@example.com
DTSTART:19960918T143000Z
DTEND:19960920T220000Z
STATUS:CONFIRMED
CATEGORIES:CONFERENCE
SUMMARY:Networld+Interop Conference
DESCRIPTION:Networld+Interop
Conference
and Exhibit\nAtlanta World Congress Center\n
Atlanta\,
Georgia
END:VEVENT
]]></source>
<p>Wie zu sehen ist bestehen besondere Vorgaben für Zeit- und
Textformatierung.</p>
<p>
Zeiten können in der UTC-Zone im Format
<tt>YYYYMMDDTHHmmssZ</tt>
dargestellt
werden.
<tt>T</tt>
ist ein
Trenner zwischen Datum und
Zeit,
<tt>Z</tt>
zeigt an,
dass es sich um
einen UTC-Timestamp
handelt (RFC5545 Sec.
3.3.5).
</p>
<p>Text wird
grundsätzlich als ASCII-Test dargestellt. Es bestehen
jedoch
Fluchtzeichen für nicht-ASCII Zeichen und Satz- und
Kontrollzeichen ()RFC5545 Sec. 3.3.11).</p>
</subsection>
</section>
<section name="Umsetzung">
<p>Dem Anschein nach ist der Dualis Web-Client mithilfe der Software
Oracle
Application Express (APEX) entwickelt.
Das erzeugte Markup ist
schlecht maschienenverarbeitbar, vermutlich weil
es
auf die Anzeige
gegenüber einem menschlichen Benutzer ausgerichtet ist.</p>
<p>Eine Web-API von Dualis gibt anscheinend nicht.
Demzufolge müssen
die Webseiten relativ umständlich analysiert
werden, um an die
benötigten Informationen zu gelangen. Diesen Vorgang
nennt man
Web-Scraping (engl. ,,kratzen'').</p>
<p>Dadurch wird die Schnittstelle anfälliger für kleinere Änderungen
an dem Dualis Web-Client. Schon das Ändern der Beschriftung eines
bestimmten Links kann die Funktion beeinträchtigen.</p>
<p>Für einen zuverlässigen Betrieb ist es daher unbedingt nötig, dass
von Seiten des Dualis System eine stabile Schnittstelle mit einem
zum Informationsaustausch geeigneten Format (zum Beispiel eine
XML-Schnitstelle) angeboten wird. Oder einfach direkt iCalendar
Format.</p>
<subsection name="Web Scraping">
<p>Zum ,,kratzen'' der Informationen aus dem HTML-Dickicht der
Dualis Website wird die Java-Bibliothek htmlunit Verwendet. Deren
eigentlicher Zweck ist das automatisierte Headless Testen von
Websites. Dazu ist sie in der Lage einen Web-Browser inklusive
JavaScript und CSS weitgehend zu emulieren.</p>
<p>Dies sind optimale Ausgangsbedingungen um eine schwer zugängliche
Seite wie Dualis einfach auszuwerten.</p>
<p>Ein vereinfachtes Code-Beispiel verdeutlicht die
Arbeit mit
htmlunit:</p>
<source><![CDATA[
WebClient webClient = new WebClient();
loginPage = webClient.getPage(DUALIS_URL);
loginForm = loginPage.getFormByName("cn_loginForm");
usernameField = loginForm.getInputByName("usrname");
usernameField.type(username);
passwordField = loginForm.getInputByName("pass");
passwordField.type(password);
submitButton = loginForm.getInputByValue("Anmelden");
page = submitButton.click();
HtmlAnchor anchorByText = page.getAnchorByText("Stundenplan");
page = anchorByText.click();
]]></source>
</subsection>
<subsection name="iCalendar Datenschnittstelle">
<p>Die gängige Methode zum Austausch von iCalendar Daten sind
entweder
lokale Files
oder der entfernte Zugriff über HTTP.</p>
<p>Mit diesem Projekt wird der Zugriff über HTTP ermöglicht. Dabei
entfällt
zusätzlich der Bedarf eine Benutzerkonfiguration zu
pflegen, da der Benutzer über HTTP Basic
Authentication (nach RFC
1945 Sec. 11.1) vom Client
abgefragt wird.</p>
<p>Hierzu wurde ein Java-Servlet erstellt welches die
Authentifizerung und
Steuerung der Dualis Abfrage übernimmt.</p>
<p>
Bei der
Ansteurerung der Schnittstelle über einfache HTTP-Software
ist zu beachten, dass das
<tt>@</tt>
im benutzername mit
<tt>%40</tt>
zu escapen ist.
</p>
</subsection>
<subsection name="Web Datenschnittstelle">
<p>
Zusätzlich zur ICS-Schnittstelle existiert eine Schnittstelle für
den Webbrowser. Sie ist mit dem Framework
vaadin (
<a href="http://vaadin.com">vaadin.com</a>
)
umgesetzt und bietet die
Funktionalität den Login durch eine
Anmeldung zu testen
sowie den
,,Stundenplan'' in einer Tabelle zu
Betrachten.
</p>
</subsection>
<subsection name="Sicherheit des Benutzers">
<p>Wie alle Systeme die Authentifizierungs und Benutzerdaten
verarbeiten ist dieses
hinsichtlich der Vertrauenswürdigkeit zu
untersuchen.</p>
<p>Hinsichtlich der Authentifizierungsinformationen die der
Benutzer
DHBW Calendar
übergibt sind mehrere Angriffspunkte
auszumachen.</p>
<table>
<tr>
<th>Problempunkt</th>
<th>Analyse</th>
</tr>
<tr>
<td>Auf dem PC des Benutzers</td>
<td>Für die Sicherheit
auf seinem
Zugriffsgerät ist jeder
Benutzer
selbst
verantwortlich.</td>
</tr>
<tr>
<td>Die Netzwerkverbindung zum DHBW Calendar</td>
<td>Die
Netzwerkverbindung zum
DHBW Calender
sollte entweder als
direkte
Lokale Kommunikation ablaufen
(der
DHBW Calender arbeitet
lokal) oder
eine sichere Verbindung (HTTPS)
verwenden.</td>
</tr>
<tr>
<td>Die Verarbeitung im DHBW Calendar</td>
<td>Die
Verarbeitung
im DHBW Calender speichert
die verarbeiteten
Daten
vorübergehend im
Arbeitsspeicher des
darunterliegenden System.
</td>
</tr>
<tr>
<td>Die Netzwerkverbindung zu Dualis</td>
<td>ist verschlüsselt (HTTPS)
%%TODO
check was bei
unügliten cets
passiert</td>
</tr>
<tr>
<td>Die Verarbeitung in Dualis</td>
<td> Über die
Verarbeitung
innerhalb von Dualis
existieren
keine
Informationen.</td>
</tr>
<tr>
<td>ggf. weitere Verbindungen von Dualis (AD o.ä.)</td>
<td>Über
mögliche Kommunikationen
von Dualis mit Drittsystem
bestehen
keine
Informationen.</td>
</tr>
</table>
<p>Durch die quelloffenheit
des
DHBW Calendar ist die
Verarbeitung der
Daten
transparent. Daher
entstehen dem Anwender durch
die Verwendung
des
DHBW Calender
keine
weiteren Sicherheitsrisiken.</p>
</subsection>
</section>
<section name="Fazit">
<p>
Die Entwicklung des DHBW Calendar ermöglicht den Studenten in
bezug auf
die
Organisierung ihres Studentalltags eine neue Dimension
von Integration und
Komfort.</p>
<p>
Die Unzulänglichkeit des ,,Dualis'' Backend wurde durch die
Verwendung einer High-Level Schnittstelle begegnet. Anstatt
regulärer
Ausdrücke (
<a href="http://dhbwconnector.sourceforge.net/">DHBW Connector</a>
)
werden die Eingabeelemente angesprochen
welche der Benutzer auch
sehen würde.
</p>
<p>
Die Veröffentlichung als Open-Source Projekt unter
<a href="license.html">AGPL</a>
stellt das Vertrauen der Studenten sowohl in Hinsicht auf ihre
eigene Sicherheit, als auch der Zuverlässigkeit hinsichtlich
möglicherweise zukünftig nötiger Anspassungen sicher.
</p>
</section>
</body>
</document>
|