summaryrefslogtreecommitdiff
path: root/dokumentation.html
blob: b88a3ea5711c0c2043e7a2f76f6b0f7f2585d115 (plain)
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
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Generated by Apache Maven Doxia at Feb 24, 2011 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>DHBW Calendar - 
		Projektdokumentation</title>
    <style type="text/css" media="all">
      @import url("./css/maven-base.css");
      @import url("./css/maven-theme.css");
      @import url("./css/site.css");
    </style>
    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
      <meta name="author" content="Yves Fischer" />
    <meta name="Date-Revision-yyyymmdd" content="20110224" />
    <meta http-equiv="Content-Language" content="en" />
        
  </head>
  <body class="composite">
    <div id="banner">
                    <div id="bannerLeft">
                DHBW Calendar
                </div>
                    <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
            
        
                <div class="xleft">
        <span id="publishDate">Last Published: 2011-02-24</span>
                  &nbsp;| <span id="projectVersion">Version: 1.0-SNAPSHOT</span>
                      </div>
            <div class="xright">        
        
      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
             
        
                                <h5>Allgemein</h5>
                  <ul>
                  <li class="none">
                          <a href="index.html" title="Start">Start</a>
            </li>
                  <li class="none">
            <strong>Dokumentation</strong>
          </li>
                  <li class="none">
                          <a href="license.html" title="Lizenzierung">Lizenzierung</a>
            </li>
          </ul>
                       <h5>User Guide</h5>
                  <ul>
                  <li class="none">
                          <a href="user-allgemein.html" title="Allgemein">Allgemein</a>
            </li>
                  <li class="none">
                          <a href="user-google.html" title="Google Kalender">Google Kalender</a>
            </li>
                  <li class="none">
                          <a href="user-lightning.html" title="Mozilla Lightning">Mozilla Lightning</a>
            </li>
                  <li class="none">
                          <a href="user-outlook.html" title="Outlook">Outlook</a>
            </li>
          </ul>
                       <h5>Entwickler</h5>
                  <ul>
                  <li class="none">
                          <a href="devel-install.html" title="Install">Install</a>
            </li>
                  <li class="none">
                          <a href="project-reports.html" title="Reports/API">Reports/API</a>
            </li>
                  <li class="none">
                          <a href="devel-hacking.html" title="Hacking">Hacking</a>
            </li>
                  <li class="none">
                          <a href="dependencies.html" title="Dependencies">Dependencies</a>
            </li>
                  <li class="none">
                          <a href="source-repository.html" title="Source Repository">Source Repository</a>
            </li>
          </ul>
                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="poweredBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
      </a>
                   
        
            </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        
	
		<div class="section"><h2>Einleitung<a name="Einleitung"></a></h2>
			<p>Die Nutzung von elektronischen Kalendern zur Planung und
				Verwaltung
				spielt eine
				enorme Rolle f&#xfc;r viele Privatleute und in
				vielen Unternehmen.</p>
			<p>Firmeninterne und -&#xfc;bergreifende Gesch&#xe4;fte nutzen die vielen
				M&#xf6;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&#xfc;rttemberg
				stellt den Studenten einen elektronischen
				Vorlesungsplan zur Verf&#xfc;gung.
				Eine
				Schnittstelle zur Anbindung an
				g&#xe4;ngige Kalenderl&#xf6;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&#xfc;rttemberg in eine iCalendar-kompatible
				Anwendung importiert
				werden kann.</p>
			<div class="section"><h3>Dualis<a name="Dualis"></a></h3>
				<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&#xf6;sung des alten
					,,BAsys''-Verwaltungssystem entwickelt. Die
					Endung ,,-is'' steht
					f&#xfc;r
					Informationssystem (
					<a class="externalLink" href="http://www.dhbw-stuttgart.de/themen/aktuelles/meldung/2008/11/basys-wird-dualis.html">Pressemeldung</a>
					).
				</p>
				<p>Studierende k&#xf6;nnen &#xfc;ber den Dualis Web-Client ihre Noten, eine
					Leistungs&#xfc;bersicht &#xfc;ber das gesamte Studium und ihren aktuellen
					Stundenplan einsehen.</p>
			</div>
			<div class="section"><h3>Das iCalendar Format<a name="Das_iCalendar_Format"></a></h3>
				<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&#xe4;tzlich bestehen iCalendar Daten aus folgendem Block</p>
				<div class="source"><pre>
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
				</pre></div>
				<p>Eine Event-Component ist wie folgt aufgebaut, wobei noch weitere
					optionale Felder m&#xf6;glich sind:</p>
				<div class="source"><pre>
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
				</pre></div>
				<p>Wie zu sehen ist bestehen besondere Vorgaben f&#xfc;r Zeit- und
					Textformatierung.</p>
				<p>
					Zeiten k&#xf6;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&#xe4;tzlich als ASCII-Test dargestellt. Es bestehen
					jedoch
					Fluchtzeichen f&#xfc;r nicht-ASCII Zeichen und Satz- und
					Kontrollzeichen ()RFC5545 Sec. 3.3.11).</p>
			</div>
		</div>
		<div class="section"><h2>Umsetzung<a name="Umsetzung"></a></h2>
			<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&#xfc;ber einem menschlichen Benutzer ausgerichtet ist.</p>
			<p>Eine Web-API von Dualis gibt anscheinend nicht.
				Demzufolge m&#xfc;ssen
				die Webseiten relativ umst&#xe4;ndlich analysiert
				werden, um an die
				ben&#xf6;tigten Informationen zu gelangen. Diesen Vorgang
				nennt man
				Web-Scraping (engl. ,,kratzen'').</p>

			<p>Dadurch wird die Schnittstelle anf&#xe4;lliger f&#xfc;r kleinere &#xc4;nderungen
				an dem Dualis Web-Client. Schon das &#xc4;ndern der Beschriftung eines
				bestimmten Links kann die Funktion beeintr&#xe4;chtigen.</p>

			<p>F&#xfc;r einen zuverl&#xe4;ssigen Betrieb ist es daher unbedingt n&#xf6;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>
			<div class="section"><h3>Web Scraping<a name="Web_Scraping"></a></h3>
				<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&#xe4;ngliche
					Seite wie Dualis einfach auszuwerten.</p>

				<p>Ein vereinfachtes Code-Beispiel verdeutlicht die
					Arbeit mit
					htmlunit:</p>
				<div class="source"><pre>
WebClient webClient = new WebClient();

loginPage = webClient.getPage(DUALIS_URL);

loginForm = loginPage.getFormByName(&quot;cn_loginForm&quot;);
usernameField = loginForm.getInputByName(&quot;usrname&quot;);
usernameField.type(username);

passwordField = loginForm.getInputByName(&quot;pass&quot;);
passwordField.type(password);

submitButton = loginForm.getInputByValue(&quot;Anmelden&quot;);
page = submitButton.click();

HtmlAnchor anchorByText = page.getAnchorByText(&quot;Stundenplan&quot;);
page = anchorByText.click();
				</pre></div>
			</div>

			<div class="section"><h3>iCalendar Datenschnittstelle<a name="iCalendar_Datenschnittstelle"></a></h3>
				<p>Die g&#xe4;ngige Methode zum Austausch von iCalendar Daten sind
					entweder
					lokale Files
					oder der entfernte Zugriff &#xfc;ber HTTP.</p>

				<p>Mit diesem Projekt wird der Zugriff &#xfc;ber HTTP erm&#xf6;glicht. Dabei
					entf&#xe4;llt
					zus&#xe4;tzlich der Bedarf eine Benutzerkonfiguration zu
					pflegen, da der Benutzer &#xfc;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 &#xfc;bernimmt.</p>

				<p>
					Bei der
					Ansteurerung der Schnittstelle &#xfc;ber einfache HTTP-Software
					ist zu beachten, dass das
					<tt>@</tt>
					im benutzername mit
					<tt>%40</tt>
					zu escapen ist.
				</p>
			</div>
			<div class="section"><h3>Web Datenschnittstelle<a name="Web_Datenschnittstelle"></a></h3>
				<p>
					Zus&#xe4;tzlich zur ICS-Schnittstelle existiert eine Schnittstelle f&#xfc;r
					den Webbrowser. Sie ist mit dem Framework
					vaadin (
					<a class="externalLink" href="http://vaadin.com">vaadin.com</a>
					)
					umgesetzt und bietet die
					Funktionalit&#xe4;t den Login durch eine
					Anmeldung zu testen
					sowie den
					,,Stundenplan'' in einer Tabelle zu
					Betrachten.
				</p>
			</div>

			<div class="section"><h3>Sicherheit des Benutzers<a name="Sicherheit_des_Benutzers"></a></h3>
				<p>Wie alle Systeme die Authentifizierungs und Benutzerdaten
					verarbeiten ist dieses
					hinsichtlich der Vertrauensw&#xfc;rdigkeit zu
					untersuchen.</p>

				<p>Hinsichtlich der Authentifizierungsinformationen die der
					Benutzer
					DHBW Calendar
					&#xfc;bergibt sind mehrere Angriffspunkte
					auszumachen.</p>
				<table align="center" border="1" class="bodyTable">
					<tr class="a">
						<th align="left">Problempunkt</th>
						<th align="left">Analyse</th>
					</tr>
					<tr class="b">
						<td align="left">Auf dem PC des Benutzers</td>
						<td align="left">F&#xfc;r die Sicherheit
							auf seinem
							Zugriffsger&#xe4;t ist jeder
							Benutzer
							selbst
							verantwortlich.</td>
					</tr>
					<tr class="a">
						<td align="left">Die Netzwerkverbindung zum DHBW Calendar</td>
						<td align="left">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 class="b">
						<td align="left">Die Verarbeitung im DHBW Calendar</td>
						<td align="left">Die
							Verarbeitung
							im DHBW Calender speichert
							die verarbeiteten
							Daten
							vor&#xfc;bergehend im
							Arbeitsspeicher des
							darunterliegenden System.
						</td>
					</tr>
					<tr class="a">
						<td align="left">Die Netzwerkverbindung zu Dualis</td>
						<td align="left">ist verschl&#xfc;sselt (HTTPS)
							%%TODO
							check was bei
							un&#xfc;gliten cets
							passiert</td>
					</tr>
					<tr class="b">
						<td align="left">Die Verarbeitung in Dualis</td>
						<td align="left"> &#xdc;ber die
							Verarbeitung
							innerhalb von Dualis
							existieren
							keine
							Informationen.</td>
					</tr>
					<tr class="a">
						<td align="left">ggf. weitere Verbindungen von Dualis (AD o.&#xe4;.)</td>
						<td align="left">&#xdc;ber
							m&#xf6;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>
			</div>
		</div>
		<div class="section"><h2>Fazit<a name="Fazit"></a></h2>
			<p>
				Die Entwicklung des DHBW Calendar erm&#xf6;glicht den Studenten in
				bezug auf
				die
				Organisierung ihres Studentalltags eine neue Dimension
				von Integration und
				Komfort.</p>
			<p>
				Die Unzul&#xe4;nglichkeit des ,,Dualis'' Backend wurde durch die
				Verwendung einer High-Level Schnittstelle begegnet. Anstatt
				regul&#xe4;rer
				Ausdr&#xfc;cke (
				<a class="externalLink" href="http://dhbwconnector.sourceforge.net/">DHBW Connector</a>
				)
				werden die Eingabeelemente angesprochen
				welche der Benutzer auch
				sehen w&#xfc;rde.
			</p>
			<p>
				Die Ver&#xf6;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&#xe4;ssigkeit hinsichtlich
				m&#xf6;glicherweise zuk&#xfc;nftig n&#xf6;tiger Anspassungen.
			</p>
		</div>
	

      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">Copyright &#169;                   2011.
          All Rights Reserved.      
        
      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>