net web services en security voor...

69
Faculteit Toegepaste Wetenschappen Vakgroep informatietechnologie Voorzitter: Prof. Dr. Ir. P. LAGASSE .NET Web Services en security voor E-procurement door Matthias DE RIDDER Promotoren: Prof. Dr. Ir. E. LAERMANS, Prof. Dr. Ir. F. GIELEN Scriptiebegeleiders: Ir. W. HAERICK, Ir. S. VAN HOECKE Scriptie ingediend tot het behalen van de academische graad van licentiaat in de informatica Academiejaar 2004 – 2005

Upload: others

Post on 21-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

Faculteit Toegepaste Wetenschappen

Vakgroep informatietechnologie

Voorzitter: Prof. Dr. Ir. P. LAGASSE

.NET Web Services en security voor

E-procurement

door

Matthias DE RIDDER

Promotoren: Prof. Dr. Ir. E. LAERMANS, Prof. Dr. Ir. F. GIELEN

Scriptiebegeleiders: Ir. W. HAERICK, Ir. S. VAN HOECKE

Scriptie ingediend tot het behalen van de academische graad van

licentiaat in de informatica

Academiejaar 2004 – 2005

Page 2: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier
Page 3: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

Faculteit Toegepaste Wetenschappen

Vakgroep informatietechnologie

Voorzitter: Prof. Dr. Ir. P. LAGASSE

.NET Web Services en security voor

E-procurement

door

Matthias DE RIDDER

Promotoren: Prof. Dr. Ir. E. LAERMANS, Prof. Dr. Ir. F. GIELEN

Scriptiebegeleiders: Ir. W. HAERICK, Ir. S. VAN HOECKE

Scriptie ingediend tot het behalen van de academische graad van

licentiaat in de informatica

Academiejaar 2004 – 2005

Page 4: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

Toelating tot bruikleen

“De auteur geeft de toelating deze scriptie voor consultatie beschikbaar te stellen en delen van

de scriptie te kopiëren voor persoonlijk gebruik.

Elk ander gebruik valt onder de beperkingen van het auteursrecht, in het bijzonder met

betrekking tot de verplichting de bron uitdrukkelijk te vermelden bij het aanhalen van

resultaten uit deze scriptie.”

Matthias De Ridder, mei 2005.

Page 5: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

Dankwoord

Eerst en vooral wil ik mijn ouders vanuit de grond van mijn hart bedanken voor de mogelijkheid die ze

mij geboden hebben om deze studies te volgen, en voor de constante steun en aanmoediging die ze mij

hebben gegeven. Zij – en ook mijn zus en broer – hebben ervoor gezorgd dat ik ondanks vele

moeilijke perioden steeds in mezelf bleef geloven, waardoor ik ook ben blijven doorzetten.

Mijn oprechte dank gaat ook uit naar Prof. Dr. Ir. Eric Laermans en Prof. Dr. Ir. Frank Gielen voor het

promoten van deze thesis en de geboden ondersteuning.

Ook mijn scriptiebegeleiders, Ir. Wouter Haerick en Ir. Sofie Van Hoecke, wil ik van harte bedanken.

Ondanks mijn niet aflatende stroom van vragen en e-mails, hebben zij mij steeds bijgestaan en verder

geholpen – waarschijnlijk zelfs tot vervelends toe. Dank u wel! Zonder jullie zou ik er zeker niet zijn

geraakt.

Verder wil ik ook mijn medestudenten bedanken, die ook steeds klaar stonden met hun mening en

suggesties. In het bijzonder wil ik de volgende personen bedanken: Wim, Xavier, Dieter DM., Dieter

F., Wala en Alexander. We hebben vaak ook samen gewerkt als projectpartners, waarvoor ook mijn

dank.

Ook mijn familie verdient een blijk van dank. Nonkel William, bedankt voor uw blijvende

belangstelling en aanmoediging. Oma, opa en bobonne, bedankt voor jullie steun en het geloof in mijn

kunnen. Ik zou hier nog vele namen kunnen opnoemen: nonkel Kamiel, tante Katrien, nonkel David,

tante Hilde, … Ik wil iedereen van harte bedanken.

Kristof wil ik bedanken voor het opofferen van zijn vrije tijd om mij door de wiskunde examens te

helpen, en Sarah voor de aanmoedigingen en de verzekering dat het me wel zou lukken.

Mijn dank gaat ook uit naar de vele vrienden die mij door dik en dun hebben gesteund, en mij steeds

hebben blijven aanmoedigen. In het bijzonder: Pedro, Jan, Paul, Lieveke, Kenneth, Evy, Eefje, Léon,

René, Sophie-Ann, Katy, André, Belinda, Marina, …

Er zijn nog vele anderen die ik zou moeten bedanken, maar dat zou een boek op zich vormen. Ook aan

hen: een welgemeend: ‘Dank u wel!’

In gedachte voor Parein.

Matthias De Ridder, mei 2005.

Page 6: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

.NET Web Services en security voor e-procurement

door

Matthias DE RIDDER

Academiejaar 2004 – 2005

Promotoren: Prof. Dr. Ir. E. LAERMANS, Prof. Dr. Ir. F. GIELEN

Scriptiebegeleiders: Ir. W. HAERICK, Ir. S. VAN HOECKE

Faculteit Toegepaste Wetenschappen

Universiteit Gent

Vakgroep Informatietechnologie

Voorzitter: Prof. Dr. Ir. P. LAGASSE

Samenvatting

Heden ten dage maken ziekenhuizen gebruik van manuele reverse auctioning om

aanbestedingen te plaatsen. Dit betekent dat meerdere verkopers of aanbieders trachten om

een klant of koper voor zich te winnen door deel te nemen aan een biedingproces.

Het nadeel van dit systeem is dat het zeer tijdsrovend is en gelimiteerd. Doordat alles

telefonisch of via briefwisseling gebeurt, gaat veel tijd verloren met het wachten op een

reactie. Bovendien is dit systeem niet winstgevend.

E-procurement zou een oplossing kunnen zijn. Hierbij wordt een Web Service framework

aangeboden die in Web Service interfaces voorzien die gebruik maken van een achterliggende

business logic en database acces om aanvragen te verwerken. Voor de gebruiker wordt een

thick client geïmplementeerd die hem of haar in staat stelt te interageren met het Web Service

framework.

De aandacht ligt vooral op het security aspect. De integriteit van berichten moet kunnen

gegarandeerd worden, enkel geautoriseerde en geauthenticeerde gebruikers mogen toegang

krijgen tot de diensten. Er wordt een grondig onderzoek gedaan naar de mogelijke security

threats en de technologieën die kunnen gebruikt worden om de threats te voorkomen.

Trefwoorden

Web Services, security, e-procurement, .NET, SSL, WSS, WSE, reverse auctioning.

Page 7: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

INHOUDSOPGAVE i

Inhoudsopgave

1 Inleiding 1

2 Web Services 4

2.1 Wat zijn Web Services? 4

2.2 Web Services en XML 6

3 Onderzoek en technologie 8

3.1 Security threats 8

3.2 SSL versus WSS 17

3.3 MySQL 19

4 Specificatie 20

4.1 Use cases 20

4.1.1 Gebruiker Use cases 20

4.1.2 Security Use case 24

4.2 Sequentiediagrammen 26

5 Architectuur 29

5.1 Algemeen ontwerp 29

5.2 UML diagrammen 31

5.3 Interfaces 34

5.4 Sequentiediagrammen 37

5.5 Toevoegen Digital Signatures 40

6 Implementatie 43

6.1 Client GUI’s 43

6.1.1 Hospital Client GUI 43

6.1.2 Supplier Client GUI 46

6.1.3 UserCreator 47

6.2 Web service framework 48

7 Besluit 51

7.1 Conclusie 51

7.2 Verdere ontwikkelingen 52

Appendices 55

Bibliografie 60

Page 8: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

INLEIDING 1

Hoofdstuk 1

Inleiding

Wanneer ziekenhuizen vandaag de dag een aanbesteding wensen te plaatsen om producten

aan te schaffen, maken ze gebruik van manuele reverse auctioning.

Reverse auctioning houdt in dat meerdere verkopers of aanbieders trachten een klant of koper

voor zich te winnen door deel te nemen aan een biedingproces. Zoals reeds vermeld, gebeurt

dit nu nog manueel.

In de situatie die hier behandeld wordt, is de klant of koper een ziekenhuis, en de verkoper of

aanbieder een leverancier. Wanneer een ziekenhuis een aanbesteding wenst te plaatsen, zal dit

meestal gebeuren door middel van een rondschrijven naar de leveranciers. Daarop moet het

ziekenhuis wachten totdat het een antwoord heeft ontvangen van de betrokken leveranciers.

Het ziekenhuis moet dan de verschillende prijzen van de geboden offertes met elkaar

vergelijken, en kan dan nog de leveranciers bijvoorbeeld telefonisch contacteren om eventueel

nog een betere prijs te verkrijgen.

Dit proces is zeer tijdrovend. Ten eerste moet het ziekenhuis wachten tot zij alle offertes heeft

ontvangen. Ten tweede moet het ziekenhuis dan nog de leveranciers opnieuw contacteren

willen ze een nog betere prijs verkrijgen. Dit systeem is dut niet winstgevend.

Het automatiseren van dit proces kan gebeuren door gebruik te maken van E-procurement.

Om de diensten aan te bieden die vereist zijn, zal een Web Service framework worden

aangeboden. Dit framework bestaat uit een aantal Web Service interfaces, die gebruik maken

van een achterliggende business logic om de aanvragen van gebruikers af te handelen. De

business logic maakt op zijn beurt gebruik van database access componenten om gegevens in

de databank op te slaan of op te halen.

Page 9: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

INLEIDING 2

Voor een gebruiker wordt er een thick client voorzien, waarmee hij of zij kan interageren met

de Web Service interfaces.

De nadruk van deze thesis ligt vooral bij het security aspect wanneer het E-procurement

framework wordt uitgewerkt. Het is namelijk van het grootste belang dat er aan de gebruiker

gegarandeerd kan worden dat de aanbesteding die hij of zij heeft geplaatst, niet door een

derde kan aangepast worden. Dit zou kunnen gebeuren indien een derde in staat zou zijn om

berichten die verstuurd worden tussen de thick client en de Web Service interfaces, te

onderscheppen. Een andere security threat zou kunnen zijn dat een onbevoegd persoon de

centrale databank infecteert met niet toegelaten SQL queries, om op die manier data te

verkrijgen of te verwijderen. Een ander belangrijk aspect is dat de bieders garanties moeten

hebben dat de ziekenhuizen de offertes die geplaatst worden, op een eerlijke manier

behandelen.

In het verdere verloop van dit boek zal er een studie gemaakt worden van de voornaamste

security threats, en besproken worden op welke manier die kunnen voorkomen worden. Het

uiteindelijke doel van de thesis is om tot een proof of concept applicatie te komen die voldoet

aan de belangrijkste security eisen.

Er zal ook aandacht besteed worden aan de verschillende beschikbare security technologieën

die gebruikt kunnen worden in de uiteindelijke applicatie. Het security concept van die

technologieën wordt bestudeerd, alsook de performantie.

Het afleveren van een component gebaseerde applicatie is een vereiste, zodat het eenvoudig is

om extra features toe te voegen of de applicatie in bestaande systemen te integreren.

Page 10: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

INLEIDING 3

De volgende punten zullen in dit boek worden behandeld:

Hoofdstuk 1 biedt een korte uiteenzetting van het onderwerp dat deze thesis behandeld

Hoofdstuk 2 tracht een bondig inzicht te verschaffen in wat Web Services inhouden.

Hoofdstuk 3 geeft een overzicht van de belangrijkste security threats en de gebruikte

technologieën.

Hoofdstuk 4 en 5 schetsen een beeld van de manier waarop de uiteindelijke applicatie zal

opgebouwd zijn, en zal het component gebaseerd ontwerp van de applicatie trachten

aan te tonen.

Hoofdstuk 6 bespreekt de implementatie van de applicatie.

Hoofdstuk 7 bevat de conclusie van deze thesis en belicht enkele mogelijke verdere

ontwikkelingen.

Page 11: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

WEB SERVICES 4

Hoofdstuk 2

Web Services

Dit hoofdstuk heeft tot doel een globaal inzicht te verschaffen in de structuur en de

specificaties van Web Services.

2.1 Wat zijn Web Services?

Voor veel applicaties bestaat de noodzaak om een gedistribueerd systeem aan te bieden

waarvan de onderdelen over het internet verspreid zijn, zoals databases, veiligheidsdiensten,

financiële componenten en nog meer. Web Services bieden deze mogelijkheid.

Een XML-webservice is een component die een faciliteit biedt aan clients of afnemers. Een

XML-webservice is niets anders dan een component met een wereldwijd bereik. Het is een

applicatie of een stuk uitvoerbare code die op een webserver wordt gehost, en wiens

methoden opgeroepen kunnen worden door middel van XML protocollen. Het voordeel van

Web Services is dat ze niet sterk gebonden zijn aan een specifieke technologie voor security,

management of transport, waardoor ze in praktisch elk development scenario gebruikt kunnen

worden.

In tegenstelling tot DCOM, RMI, IIOP of een van de andere veel gebruikte protocollen,

maakt een XML-webservice gebruik van een gestandaardiseerd, geaccepteerd en

goedbegrepen protocol, namelijk HTTP, en een evenzeer gestandaardiseerde

gegevensindeling, gebaseerd op XML.

Page 12: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

WAT ZIJN WEB SERVICES? 5

Het idee achter Web Services is dat een XML-webservice de basiselementen voor systemen

aanbiedt en het web als medium gebruikt wordt om er toegang tot te krijgen. XML-

webservices kunnen toepassingsspecifiek zijn, maar kunnen evengoed tot een algemeen nut

dienen.

Om een verzoek naar een XML-webservice te verzenden en een antwoord te ontvangen,

wordt er gebruik gemaakt van het Simple Object Access Protocol (SOAP).

SOAP is een lichtgewicht protocol dat op HTTP is gebouwd. Het is mogelijk SOAP-

berichten tussen verschillende protocollen uit te wisselen, maar op dit moment is SOAP alleen

voor HTTP gedefinieerd. SOAP definieert een XML-grammatica om de namen op te geven

van de methoden die een afnemer via een XML-webservice wil aanroepen, voor het

definiëren van de parameters en return-waarden en om de typen van de parameters en return-

waarden te beschrijven. Roept een client een XML-webservice aan, dan moeten de methode

en parameters opgeven worden die door deze XML-grammatica worden voorgeschreven.

SOAP is geaccepteerd als een industriestandaard. Het heeft als taak de samenwerking tussen

verschillende platformen te verbeteren. De kracht van SOAP is de eenvoud, naast het feit dat

SOAP gebaseerd is op andere industriestandaarden: HTTP en XML.

De SOAP specificatie definieert een aantal zaken. De belangrijkste zijn:

• de indeling van een SOAP-bericht;

• hoe gegevens gecodeerd moeten worden;

• hoe berichten moeten verzonden worden;

• hoe antwoorden ontvangen worden.

In Appendix C wordt er een SOAP bericht weergegeven. De body van een SOAP bericht staat

in XML. De webserver verwacht dat de client een aantal tags gebruikt om de parameters voor

een methode die hij of zij oproept, te coderen. Een XML-webservice zal een beschrijving van

zichzelf geven, zodat de client weet welk schema er gebruikt moet worden om de webserver

aan te spreken.

Het schema heet Web Services Description Language (WSDL). Deze omschrijving biedt voor

een client genoeg informatie om een SOAP-bericht in te dienen in een indeling die de

webserver kan begrijpen.

Page 13: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

WEB SERVICES EN XML 6

Een XML- webservice wordt van andere Web Services onderscheiden door een unieke

namespace te identificeren, zodat een client zich tot de juiste Web Service kan richten. Web

Services kunnen ook gebruik maken van een DISCO bestand, dat een lijst van Web Services

en hun respectievelijke links bevat, gespecificeerd in een speciaal XML formaat. Door van

DISCO gebruik te maken, kan een webserver automatisch doorzocht worden op Web Service

bestanden.

Tabel 2.1: Web Service terminologie

Technologie Omschrijving

WSDL Een op XML gebaseerd formaat dat een Web Service beschrijft, een

lijst bevat van de methoden, de data types van de parameters en

return waarden, alsook de ondersteunde communicatiemethoden.

HTTP Het communicatieprotocol dat gebruikt wordt om verzoeken en

antwoorden over het Internet naar de Web Service te verzenden.

SOAP Een op XML gebaseerd formaat dat gebruikt wordt om de informatie

in een Web Service verzoek of antwoord te coderen voordat het via

het Internet naar de Web Service wordt gestuurd.

DISCO Een optionele Microsoft specificatie dat clients in staat stelt om Web

Services te “ontdekken” (discover).

UDDI Een directory dat client in staat stelt om Web Services te vinden die

door een specifiek bedrijf werden ontwikkeld.

Om informatie met betrekking tot een Web Service vrij te geven, maakt men gebruik van

Universal Description, Discovery, and Integration (UDDI). Een UDDI register bevat

informatie over bedrijven, de services die zij verlenen, het type van elke service, en links naar

informatie en specificaties betreffende deze services. De interface van UDDI is zelf een Web

Service.

Tabel 2.1 bevat een korte omschrijving van de belangrijkste Web Service technologieën.

2.2 Web Services en XML

Wanneer er gebruik gemaakt wordt van Web Services, moet er rekening mee gehouden

worden dat Web Services niet alle types als parameters aanvaarden, of als return value terug

geven. Aangezien binnen onze applicatie klassen zullen moeten gedefinieerd worden die

Page 14: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

WEB SERVICES EN XML 7

aanbestedingen, offertes, orders enz. voorstellen, zal er voor een probleem ontstaan om die

gegevens te versturen tussen de thick clients en de Web Service Interfaces.

Xml kan gebruikt worden om dit probleem op te lossen. Er kan namelijk een XML schema

gedefinieerd worden, waarna de gegevens uit een aanbesteding en offertes kunnen geparsed

worden naar een XML bestand. Dit bestand kan dan als XmlNode naar de Web

Service of de thick client verstuurd worden. De gebruikte XML schema’s worden in Appendix

A weergegeven.

Page 15: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

ONDERZOEK EN TECHNOLOGIE 8

Hoofdstuk 3

Onderzoek en technologie

In dit hoofdstuk worden de belangrijkste security threats onderzocht waarmee het Web

Service framework mee geconfronteerd kan worden, en wordt er nagegaan op welke manier

ze kunnen voorkomen worden. Verder worden de technologieën besproken die in de

applicatie gebruikt worden, vermeld.

3.1 Security threats

Iedereen is het er mee eens dat een goede beveiliging van een applicatie absoluut

noodzakelijk is. Hoewel er nooit een volledig waterdichte beveiliging gegarandeerd kan

worden, is het toch noodzakelijk dat er aan het security aspect de nodige aandacht wordt

besteed.

Door de komst van het internet, zijn er heel wat security threats opgedoken, en wordt er veel

tijd en moeite gedaan om die threats tegen te gaan, al dan niet succesvol! Aanvallen kunnen

tegen verschillende componenten van de applicatie gericht zijn, zoals blijkt uit fig. 3.1. Zo

zou de aanval gericht kunnen zijn tegen het netwerk (fig. 3.1, punt 1).

Een netwerk structuur bestaat voornamelijk uit routers, firewalls en switches. Deze devices

zorgen voor de beveiliging van de servers en applicaties tegen aanvallen en infiltraties in het

systeem. Een aanvaller kan dan ook zwak geconfigureerde network devices misbruiken. De

meest kwetsbare factoren omvatten zwakke default installatie settings en componenten die

niet up-to-date zijn met de laatste security patches.

Page 16: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

SECURITY THREATS 9

Anderzijds kan een aanval ook tot doel hebben om de client (fig. 3.1, punt 3) te infiltreren.

Tot slot kan ook de applicatie (fig. 3.1, punt 2) zelf het mikpunt van een aanval zijn.

Figuur 3.1: Security threats zones

In wat volgt worden de meest voorkomende aanvallen onderzocht, vermeld op welk niveau ze

kunnen voorkomen, en ook worden de maatregelen besproken die er tegen kunnen genomen

worden.

Information Gathering:

Niveau: netwerk

Network devices kunnen op dezelfde manier ontdekt worden als andere types van systemen.

Een aanvaller start meestal met port scanning, of footprinting. Nadat een aanvaller de niet-

gebruikte poorten geïdentificeerd heeft, probeert hij of zij het type van de devices te

achterhalen, alsook het gebruikte operating system en de versies van de applicaties. Wanneer

een aanvaller over zulke informatie beschikt, kan hij of zij bekende zwakheden gebruiken om

een aanval uit te voeren.

1.

2.

3.

Page 17: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

SECURITY THREATS 10

Maatregelingen:

• Routers zo configureren dat ze footprinting verzoeken negeren.

• Het operating system zo configureren dat ze footprinting verhinderen door niet-

gebruikte protocollen en onnodige poorten uit te schakelen.

Eavesdropping

Niveau: netwerk

Eavesdropping houdt in dat men de data trafiek op het netwerk onderzoekt, met de bedoeling

om paswoorden of configuratie informatie te achterhalen. Met een simpele packet sniffer kan

de aanvaller op een gemakkelijke manier plaintext trafiek lezen. De aanvaller kan eveneens

pakketten die met een eenvoudige hashing algoritme gecodeerd zijn, kraken. Op die manier

komt hij of zij informatie te weten waarvan gedacht werd dat ze beveiligd was.

Maatregelingen:

• Hanteer een sterke beveiliging over je netwerk.

• Encrypteer de communicatie volledig. SSL kan hiervoor gebruikt worden.

Spoofing

Niveau: netwerk

Spoofing wordt gebruikt om de ware identiteit te verbergen over het netwerk. Om een

spoofed identiteit te verkrijgen, zal de aanvaller een vals bron adres gebruiken, die niet het

actuele adres van het packet bevat. Spoofing kan gebruikt worden om de bron van een aanval

te verbergen of om network access control lists (ACL’s) te omzeilen, die gebruikt worden om

client access te limiteren via source adres regels.

Deze aanval is moeilijk tegen te gaan. Wanneer de aanvaller zorgvuldig gebruik maakt van

spoofed packets, is de kans groot dan de oorspronkelijke zender nooit achterhaald kan

worden. Er kan wel gebruik gemaakt worden van filtering regels die spoofed pakketten

afkomstig zijn uit het eigen netwerk blokkeren.

Page 18: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

SECURITY THREATS 11

Maatregelingen:

• Ingaande pakketten filteren die afkomstig zijn van een intern IP adres binnen het

netwerk.

• Uitgaande pakketten filteren die afkomstig zijn van een ongeldig lokaal IP adres.

Man in the middle attack

Niveau: netwerk

Deze aanval tracht een server of een client te misleiden, zodat het een aanvaller als een

legitieme gebruiker beschouwt. De aanvaller kan dan het netwerk manipuleren.

Maatregelingen:

• Gebruik geëncrypteerde negotiation.

• Gebruik geëncrypteerde communicatie kanalen.

• Zorg voor recente security patches die TCP/IP gebreken oplossen, zoals voorspelbare

packet sequences.

Denial of Service

Niveau: netwerk, client

Deze aanval verhindert toegang tot de server of de services voor legitieme gebruikers. De

SYN flood aanval is een vaak voorkomend voorbeeld van een DoS aanval. Het is eenvoudig

om het te laten lanceren, maar moeilijk om het tegen te gaan. Het doel van de aanval is om

meer aanvragen naar de server te versturen dan het aankan. De aanval maakt misbruik van een

mogelijke zwakheid in de TCP/IP connectie en overspoelt de server met een te behandelen

connection queue.

Maatregelingen:

• Wees up-to-date met de laatste service packs.

• Beveilig de TCP/IP stack door het toevoegen van de noodzakelijke registry settings

die de grootte van de TCP connection queue vergroot, de connection establishment

Page 19: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

SECURITY THREATS 12

periode vermindert en maak gebruik van log mechanismen om te verzekeren dat de

connection queue niet wordt overbelast.

• Gebruik een network Intrusion Detection System (IDS), die automatisch SYN

aanvallen ontdekt en beantwoordt.

Virussen, Trojan Horses en Wormen

Niveau: client

Een virus is een programma dat ontwikkeld werd met de bedoeling om schade en storingen te

veroorzaken aan je operating system of je applicaties. Een Trojan horse kan ook als een virus

beschouwd worden, alleen wordt de schadelijke code verborgen in een data bestand of een

uitvoerbaar bestand die er onschadelijk uitziet. Een worm kan dan weer vergeleken worden

met een Trojan Horse, met dat verschil dat het zich zelf verspreidt van server naar server.

Deze aanvallen zijn wellicht de meest voorkomende. De reden hiervoor ligt bij zwakke

default configuraties, software bugs en zwakheden in Internet protocols.

Maatregelingen:

• Installeer steeds de laatste service packs en patches voor je operating system en je

applicaties.

• Zorg voor een firewall, die alle niet-gebruikte poorten blokkeert.

• Schakel niet-gebruikte protocollen en services uit.

• Verander de default configuraties, en maak ze moeilijker te omzeilen.

Footprinting

Niveau: client

Voorbeelden van footprinting zijn het scannen van poorten en pingen, waardoor aanvallers

belangrijke informatie over je systeem te weten kunnen komen om dan een grotere aanval te

plannen. Informatie die aanvallers op die manier kunnen verkrijgen kan gaan van account

informatie, het gebruikte operating system en software versies tot server namen en database

schema informatie.

Page 20: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

SECURITY THREATS 13

Maatregelingen:

• Schakel niet-gebruikte protocollen uit.

• Zorg voor een firewall, die alle niet-gebruikte poorten blokkeert.

• Gebruik TCP/IP en IPSec filters, om meer beveiliging te waarborgen.

• Gebruik een IDS die footprinting patronen kan opsporen en verdachte trafiek

blokkeren.

Paswoord Cracking

Niveau: client

Wanneer een aanvaller geen anonieme connectie met de server kan opzetten, zal hij of zij een

geldige connectie trachten op te zetten. Hiervoor moet de aanvaller een geldige login en

paswoord kennen. Daarom is de keuze van je account naam en je paswoord van groot belang.

Maatregelingen:

• Gebruik paswoorden die niet eenvoudig te achterhalen zijn.

• Zorg ervoor dat je slechts een beperkt aantal keer kan proberen een wachtwoord in te

geven.

• Gebruik geen default login en paswoord namen.

• Hou eventueel een log bij van falende login pogingen om een patroon te kunnen

herkennen.

Arbitrary Code Execution

Niveau: client

Wanneer een aanvaller er in slaagt om kwaadaardige code op een systeem uit te voeren, kan

de aanvaller de resources verder aanvallen of nieuwe aanvallen uitvoeren om het systeem nog

dieper te infiltreren.

Page 21: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

SECURITY THREATS 14

Maatregelingen:

• Wees up-to-date met patches en updates die mogelijke buffer overflows verhelpen.

Unauthorized Access

Niveau: client

Wanneer de connection instellingen slecht geconfigureerd zijn, kan een aanvaller gemakkelijk

toegang krijgen tot informatie of services die gelimiteerd zijn tot binnen het systeem gekende

gebruikers.

Maatregelingen:

• Configureer veilige Web permissies.

Input Validation

Niveau: applicatie

Input validatie wordt een security issue wanneer een aanvaller ontdekt dat binnen de

applicatie ongefundeerde veronderstellingen worden gemaakt over het type, de lengte, het

formaat of de omvang van de input data. Zorgvuldig gekozen input data kan er dan de

oorzaak van zijn dat je applicatie wordt misbruikt.

Buffer overflows kan hiervan een oorzaak zijn, en leidt vaak tot DoS aanvallen. Een aanvaller

zou een buffer overflow kunnen misbruiken om zijn code in de stack toe te voegen. Die code

zou dan de program stack kunnen overschrijven, en het return adres van een functie naar de

code van de aanvaller laten wijzen.

Uit dit voorbeeld blijkt al het belang van een krachtige input validatie.

SQL Injection is een volgende aanval die kan voorkomen wanneer er niet voldoende validatie

wordt aangeboden. Deze aanval tracht dynamisch gedeclareerde SQL statements te

misbruiken om toegang te verkrijgen tot de databank. De aanvaller is dan in staat om data te

bekijken, manipuleren of zelfs verwijderen.

Page 22: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

SECURITY THREATS 15

Authentication

Niveau: applicatie

Wanneer authenticatie vereist is voor een applicatie, wordt er best gebruik gemaakt van een

systeem die het onnodig maakt om paswoorden over het netwerk te versturen, zoals Kerberos,

of een systeem die de trafiek codeert, zoals SSL.

Wanneer hier geen aandacht aan wordt besteed, zou de aanvaller bijvoorbeeld via Network

Eavesdropping zeer gemakkelijk de trafiek kunnen afluisteren en op deze manier aan een

geldige login en paswoord geraken.

Wanneer de paswoorden niet goed gekozen worden, kan een aanvaller ook via Brute Force

Attacks trachten om het paswoord te kraken. Daarom is het gebruik van zogenaamde sterke

paswoorden van een groot belang.

Veel security implementaties slaan enkel de hashwaarden op van de gebruikte paswoorden.

Wanneer deze methode gebruikt wordt, wordt een applicatie kwetsbaar voor een Dictionary

Attack. Wanneer de aanvaller aan die hashwaardentabel kan geraken, kan hij de woorden uit

een woordenboek hashen, en die laten vergelijken met de waarden uit de hashtabel. Op die

manier kunnen zwakke paswoorden eenvoudig gekraakt worden. Bovendien kan dit offline

gebeuren. Een oplossing voor deze aanval bestaat erin om een sterk random waarde aan het

paswoord toe te voegen, en de hashwaarde hiervan op te slaan.

Ook Cookie replay Attacks kunnen we tot de Authentication categorie beschouwen. Deze

aanval houdt in dat de aanvaller de authentication cookie van een gebruiker kan bemachtigen,

en zich zo een valse identiteit kan aanmeten. Deze aanval kan voorkomen worden door SSL te

gebruiken bij het verzenden van de cookie, of een cookie timeout te gebruiken.

Authorization

Niveau: applicatie

Authorization is van groot belang om ervoor te zorgen dat niet iedereen gebruik kan maken

van functies die een bepaalde positie of verantwoordelijkheid vereisen om ze te mogen

uitvoeren. Om dit te kunnen garanderen moet er dan ook aandacht besteed worden aan de

aanvallen die dit zouden kunnen omzeilen.

Page 23: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

SECURITY THREATS 16

Elevation of privilege is een aanval waarbij men probeert de rechten van een member, proces

of service over te zetten naar een andere member. Bijvoorbeeld kan er geprobeerd worden om

de rechten van de administrator over te zetten naar een account van een “gewone” member.

Deze aanval kan tegengegaan worden door processen en services te gebruiken die weinig

rechten hebben, alsook user accounts met beperkte rechten.

Disclosure of Confidential Data komt voor wanneer sensitive data gelezen kan worden door

niet-geautoriseerde gebruikers. Dit kan gaan van specifieke data van de applicatie, zoals credit

card nummers, werknemersgegevens en financiële rapporten tot configuratiedetails van

applicaties, zoals database connection strings. De noodzaak is dan ook om zulke data veilig

op te slaan in databanken en dergelijke. Zorg er ook voor dat er steeds een controle gebeurt

wanneer er toegang tot zulke informatie wordt gegeven, en encrypteer steeds zulke

informatie, en dat zeker wanneer het over een netwerk wordt verstuurd.

Data Tampering is het manipuleren van data, terwijl de persoon er niet toe bevoegd is. Bouw

een strenge controle in die enkel aan geautoriseerde gebruikers toelaat om data te

manipuleren.

Luring Attacks komen voor wanneer een gebruiker met weinig rechten in staat is om een

gebruiker met veel rechten data te laten lezen of manipuleren in zijn voordeel. Om dit te

voorkomen moet er terug een strenge controle voorzien worden wanneer data gemanipuleerd

wordt.

Session Management

Niveau: applicatie

Session security is een vereiste om een veilige applicatie te kunnen garanderen. Session

Hijacking treedt op wanneer een aanvaller in staat is om bijvoorbeeld de authenticatie cookie

die een representatie vormt van een sessie van een andere gebruiker, te bemachtigen. Op deze

manier krijgt de aanvaller toegang tot de applicatie, en heeft hij of zij ook dezelfde rechten als

de gebruiker. Door SSL te gebruiken om de authenticatie te laten verrichten, een logout

functionaliteit te implementeren en de periode dat een cookie geldig blijft te beperken, kan

deze aanval voorkomen worden.

Session Replay gebeurt wanneer een aanvaller de session token van een gebruiker onderschept

en dit gebruikt om de authenticatie te omzeilen. Dit kan tegengegaan worden door een nieuwe

Page 24: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

SSL VERSUS WSS 17

authenticatie te eisen wanneer er kritieke functionaliteiten worden gebruikt. Zorg ook voor

een beperkte geldigheidsperiode van session tokens, en zorg ervoor dat gebruikersspecifieke

data kan verwijderd worden van het systeem.

Man in the Middle Attacks komen voor wanneer een aanvaller een bericht onderschept tussen

een gebruiker en zijn bestemmeling. De aanvaller kan dan de inhoud veranderen en het

doorsturen naar de bestemmeling. De bestemmeling handelt het bericht dan af als kwam het

van de oorspronkelijke gebruiker. Wanneer de bestemmeling het bericht beantwoordt, kan de

aanvaller opnieuw het bericht onderscheppen en aanpassen. De gebruiker en de bestemmeling

zullen niet weten dat ze het slachtoffer waren van deze aanval.

3.2 SSL versus WSS

Zoals in de vorige sectie uitvoerig werd aangetoond, zijn er vele security threats waar

rekening mee gehouden moet worden. Vele threats kunnen door de gebruikers zelf opgelost

worden, door het goed configureren van hun client en netwerk, maar er zijn ook een aantal

threats die de applicatie zelf zal moeten trachten te voorkomen.

De applicatie is in wezen een Web Service framework. Er kunnen hoofdzakelijk twee

mechanismen gebruikt worden om secure Web Services aan te bieden, namelijk Secure Socket

Layer (SSL) of Web Service Security (WSS).

SSL is een protocol die aanwezig is in de transportlaag. SSL zorgt ervoor dat een plain-text

bericht verstuurd wordt door een beveiligd kanaal.

WSS echter is een protocol aanwezig in de message- en applicatielaag. Hierbij wordt een

beveiligd bericht verzonden door een niet beveiligd kanaal. De beveiliging wordt dan

gegarandeerd door gebruik te maken van XML Signature en XML Encryption.

Aangezien beide security mechanismen gebruik maken van een verschillend protocol, bieden

ze beide ook een verschillende security context aan.

Page 25: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

SSL VERSUS WSS 18

Tabel 3.1: Security threats en oplossingen

Security threat Niveau Oplossing

Authentication Applicatie Paswoord en login

Authorization Applicatie Gekoppeld aan paswoord en

login

Eavesdropping Netwerk SSL

Replay attack Netwerk SSL

Man in the middle attack Netwerk SSL

SQL injection Applicatie Authorisatie

Dictionary attack Applicatie Paswoorden uitbreiden en

hashen

Proof of transaction Client - Applicatie WSS

SSL maakt gebruik van een beveiligd kanaal om een bericht te verzenden, maar eenmaal het

bericht het kanaal verlaten heeft, is het niet langer secure. SSL vormt dus een goede keuze

voor point-to-point communicatie.

WSS zorgt er dan weer voor dat het SOAP bericht dat verstuurd wordt, geëncrypteerd wordt.

Dit heeft zijn voordeel wanneer we gebruik maken van een multi-hop topologie. Op die

manier kan een tussenliggende component enkel die data uit het SOAP bericht halen dat voor

hem van belang is, terwijl de rest van het bericht geëncrypteerd blijft. Op die manier blijft het

bericht op elk moment beschermd tegen onbevoegde toegang.

Wanneer we gebruik wensen te maken van WSS, kunnen we een beroep doen op de Web

Service Enhancements (WSE) 2.0 filters en klassen. WSE zal er dan voor zorgen dat het

SOAP bericht dat verstuurd wordt, geëncrypeerd wordt.

De extra beveiliging en voordelen die WSS biedt, brengt echter ook overhead met zich mee.

Wanneer we gebruik maken van een WSE proxy, dan moeten alle berichten door input en

output filters gestuurd worden, die meer overhead en SOAP tags genereren dan moest er

gebruik gemaakt worden van een normale proxy. De overhead die gegenereerd wordt, is

aanzienlijk hoger dan wanneer er SSL encryptie gebruikt wordt.

Daarom zal er binnen de E-procurement proof of concept gebruik gemaakt worden van SSL.

In [1] wordt aangetoond dat wanneer er beveiligde Web Services vereist zijn, die het best

presteren met SSL. De proof of concept is een typische point-to-point applicatie, waarbij

hopping niet vereist is. Bovendien is SSL een gekende, bewezen en performante oplossing.

Page 26: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

MYSQL 19

Echter, het gebruik van SSL alleen is niet voldoende. Wanneer SSL gebruikt wordt, kan er

nog geen Proof of transaction gegarandeerd worden. Door Proof of transaction aan te bieden

kan een ziekenhuis of een leverancier achteraf niet meer ontkennen dat hij of zij een

aanbesteding of offerte heeft geplaatst.

Wanneer we Proof of transaction willen aanbieden, moeten we het SOAP bericht die naar de

Web Service interfaces wordt verstuurd, digitaal ondertekenen. Hiervoor zullen we Web

Service Security (WSS) gebruiken.

Het is dus duidelijk dat er een trade-off moet gemaakt worden tussen de performantie (SSL)

en de security functionaliteit (WSS). De beste resultaten kunnen bereikt worden door SSL –

het encrypteren – te combineren met WSS – het digitaal ondertekenen.

Tot slot wordt in tabel 3.1 als samenvatting een opsomming gegeven van de voornaamste

security threats die binnen de applicatie worden behandeld, en de oplossing die ervoor wordt

gebruikt.

3.3 MySQL

In de E-procurement applicatie wordt er ook een database voorzien. De database technologie

waarvan in de uiteindelijke applicatie gebruik van wordt gemaakt, is MySQL.

MySQL is een veel gebruikte en bewezen open source database technologie, die bekend staat

voor zijn betrouwbaarheid en performantie. Bovendien is MySQL eenvoudig te gebruiken, en

worden er heel wat handige tools voorzien om MySQL in je applicatie te integreren.

Binnen de applicatie werd gebruik gemaakt van MySQL Database Server 4.1, MySQL Control

Center voor het aanmaken van de tabellen, en MySQL Connector/NET 1.0 API voor het

communiceren binnen de applicatie met de database.

Page 27: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

SPECIFICATIE 20

Hoofdstuk 4

Specificatie

Use cases bieden de mogelijkheid aan de ontwikkelaar van een applicatie om de manieren

waarop de applicatie zal kunnen gebruikt worden, aan te tonen. Met andere woorden, het geeft

de functionaliteit weer die de applicatie de gebruiker zal aanbieden. De manier waarop het die

functionaliteit beschrijft, is vanuit het gezichtspunt van de gebruiker zelf. Bij het beschrijven

van de use cases is aandacht besteed aan de interactie tussen de gebruiker en de applicatie, en

niet aan de interne activiteiten van de applicatie.

4.1 Use cases

4.1.1 Gebruiker use cases

Algemeen

De uiteindelijke gebruikers van de E-procurement applicatie zijn voornamelijk de

ziekenhuisgebruiker en de leveranciergebruiker. Er zal hiervoor dan ook een onderscheid

gemaakt worden in de use cases. Maar eerst wordt er in fig. 4.1 een gemeenschappelijke use

case voor het inloggen van de gebruikers besproken.

Uiteraard moet een gebruiker gekend zijn bij het systeem, voordat hij of zij gebruik zal

kunnen maken van de features die de Web Service aanbiedt. Dit gebeurt door het invoeren

van een login en password.

Page 28: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

GEBRUIKER USE CASES 21

Figuur 4.1: Gemeenschappelijke use case: inloggen

Zoals fig. 4.2 aantoont, verwacht een ziekenhuisgebruiker van de applicatie dat hij of zij in

staat is om aanbestedingen te plaatsen, en dat hij of zij in staat is het verloop van de offertes

op te volgen.

Gelijklopend met de algemene use case van de ziekenhuisgebruiker, toont fig. 4.3 dat het voor

de leveranciergebruiker vooral van belang is dat de applicatie hem of haar in staat stelt om

aanbestedingen te ontvangen, hierop een offerte te plaatsen, een offerte aan te passen en het

bieden kan opvolgen.

Gedetailleerd

Zoals in fig. 4.1 getoond wordt, moet de gebruiker steeds inloggen voor hij of zij gebruik mag

maken van de features die de gebruiker aangeboden wordt.

Scenario’s:

1. Inloggen.

Preconditions:

1. De gebruiker moet geconnecteerd zijn met het Web Service framework.

2. De gebruiker moet gekend zijn in het Web Service framework.

Postconditions:

1. De gebruiker krijgt toegang tot de features van de Web Service.

Inloggen.

Gebruiker

Page 29: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

GEBRUIKER USE CASES 22

Subscenario’s:

1. Er kan geen connectie gemaakt worden met het Web Service framework.: de gebruiker

wordt gevraagd op een later tijdstip opnieuw te proberen.

2. De gebruiker is niet gekend in het Web Service framework.: dit wordt aan de

gebruiker kenbaar gemaakt, en de gebruiker krijgt geen verdere toegang tot het

systeem.

Zoals er uit fig. 4.2 opgemaakt kan worden, zal de ziekenhuisgebruiker, na ingelogd te zijn,

gebruik maken van de features van de Web service. De gebruiker kan beslissen om een

aanbesteding te verzenden naar de leveranciers en/of het verloop van de offertes rond een

geplaatste aanbesteding op te volgen.

Scenario’s:

1. Aanbesteding verzenden.

2. Offertes opvolgen.

Figuur 4.2: Algemene use case: ziekenhuisgebruiker

Preconditions:

1. De gebruiker moet ingelogd zijn.

2. De gebruiker moet geautoriseerd zijn om de feature te gebruiken.

Aanbesteding

plaatsen.

Offertes opvolgen.

Ziekenhuisgebruiker

Inloggen.

<< include >>

<< include >>

Page 30: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

GEBRUIKER USE CASES 23

Postconditions:

1. De gebruiker keert terug naar het main screen, waar hij of zij opnieuw kan kiezen om

een aanbesteding te plaatsen of de offertes op te volgen.

Subscenario’s:

1. De gebruiker is niet geautoriseerd om een aanbesteding te plaatsen: dit wordt aan de

gebruiker kenbaar gemaakt, en de aanbesteding wordt niet verzonden.

Figuur 4.3: Algemene use case: leveranciergebruiker

In fig. 4.3 wordt duidelijk gemaakt dat de leveranciergebruiker in staat moet zijn om

aanbestedingen te ontvangen en op een ontvangen aanbesteding moet kunnen reageren met

een offerte. Bovendien zal hij of zij de offerte moeten kunnen aanpassen en het biedingproces

moeten kunnen opvolgen.

Scenario’s:

1. Aanbesteding ontvangen.

2. Offerte aanbieden.

3. Offerte updaten.

4. Bieden opvolgen.

Preconditions:

1. De gebruiker moet geautoriseerd zijn om een offerte te plaatsen.

2. De gebruiker moet geautoriseerd zijn om een offerte aan te passen.

Aanbesteding

ontvangen.

Offertes aanbieden.

Leveranciergebruiker

Offerte updaten.

Bieden opvolgen.

Inloggen.

<< include >>

<< include >>

<< include >>

<< include >>

Page 31: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

SECURITY USE CASE 24

Postconditions:

1. De gebruiker keert terug naar het main screen, waar hij of zij opnieuw de keuze heeft

offertes te versturen, het bieden op te volgen en zijn offertes aan te passen.

Subscenario’s:

1. De gebruiker is niet geautoriseerd om een offerte te plaatsen: dit wordt aan de

gebruiker kenbaar gemaakt, en de offerte wordt niet verzonden.

2. De gebruiker is niet geautoriseerd om een offerte te updaten: dit wordt aan de

gebruiker kenbaar gemaakt, en de offerte wordt niet verzonden.

4.1.2 Security use case

Om de functionaliteit van de security controle te bespreken wordt er gebruik gemaakt van een

Security use case die uit 6 delen bestaat:

1. de source: stelt een entiteit voor.

2. de stimilus: vormt een conditie waaraan voldaan moet worden.

3. de environment: is de conditie waaraan de stimilus voldoet.

4. de artifact: kan de gehele applicatie zijn, of slechts een specifiek deel ervan.

5. de response: is de activiteit dat volgt na de stimilus.

6. de response measure: geeft aan wanneer de response gebeurt.

Wanneer een gebruiker (source) gebruik wenst te maken van een functionaliteit die de

applicatie aanbied (stimilus), moet er eerst aan een aantal security eisen voldaan worden,

namelijk:

- authenticatie: dit komt erop neer dat er nagegaan wordt of de identiteit van de

gebruiker overeenkomt met wie de gebruiker beweerd te zijn.

- autorisatie: dit komt erop neer dat gecontroleerd wordt of een geauthenticeerde

gebruiker gemachtigd is de functionaliteit die de applicatie aanbiedt, te gebruiken.

Wanneer aan deze voorwaarden voldaan werd, zal onder normale omstandigheden

(environment) het Web Service framework aangesproken worden (artifact), en zal de

gevraagde functionaliteit uitgevoerd worden (response + response measure).

Page 32: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

SECURITY USE CASE 25

Figuur 4.4: Security use case

Tijdens het uitvoeren van de response komt nog een derde security aspect kijken, namelijk:

- data geheimhouding: dit komt erop neer dat de uitwisseling van data gevrijwaard

wordt van niet-geautoriseerde toegang.

Preconditions:

1. De gebruiker moet geconnecteerd zijn met het Web Service framework.

Postconditions:

1. De gebruiker krijgt toegang tot het hoofdscherm, waar hij of zij de keuze krijgt van de

features van de applicatie gebruik te maken.

Subscenario’s:

1. Er kan geen connectie gemaakt worden met het Web Service framework: de gebruiker

wordt gevraagd op een later tijdstip opnieuw te proberen.

2. De gebruiker is niet gekend in het centrale punt (authenticatie): dit wordt aan de

gebruiker kenbaar gemaakt, en de gebruiker krijgt geen verdere toegang tot het

systeem.

3. De gebruiker is niet geauthoriseerd om een feature te gebruiken(authorisatie): dit

wordt aan de gebruiker kenbaar gemaakt, en de feature wordt niet uitgevoerd.

4. Man in the middle attack: om dit te voorkomen worden alle boodschappen die

verstuurd worden geëncrypteerd.

Source:

Correct

geïdentificeerde

gebruiker

Artifact:

Data in Web Service

framework. Stimulus:

Probeert van

functionaliteit gebruik te

maken Environment: Onder normale

omstandigheden

Response:

Uitvoeren gevraagde

functionaliteit. Response measure:

Op het moment.

12

6

3 9

Page 33: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

SEQUENTIEDIAGRAMMEN 26

4.2 Sequentiediagrammen

In deze sectie vertalen we de use cases die we besproken hebben in de figuren 4.1 tot en met

4.4 naar sequentiediagrammen.

De handelingen die vereist zijn om een gebruiker te authenticeren worden in fig. 4.5

afgebeeld. Hiervoor wordt het paswoord en de login van de gebruiker naar het Web Service

framework verstuurd. Wanneer de gebruiker geauthenticeerd is, zal de gebruiker toegelaten

worden, anders wordt er een error boodschap aan de gebruiker getoond, en wordt er gevraagd

om opnieuw in te loggen.

Figuur 4.5: Sequentiediagram: inloggen

Figuur 4.6 toont de verschillende stappen die vooraf gaan aan het plaatsen van een

aanbesteding door een ziekenhuisgebruiker. Eerst wordt er nagegaan of de gebruiker

geautoriseerd is om de aanbesteding te plaatsen. Indien dit het geval was, zal het Web Service

framework de aanbesteding behandelen, anders wordt de aanvraag van de gebruiker

geweigerd.

Figuur 4.6: Sequentiediagram: Aanbesteding plaatsen

Gebruiker Web Service

framework

1: Paswoord en login (secure)

2a: Niet geauthenticeerd: error

2b: Wel geauthenticeerd: acces granted Authenticatie

controle

Ziekenhuis

gebruiker

1: Vraag om aanbesteding te plaatsen

2a: Niet geautoriseerd: error

2b: Wel geautoriseerd

3: Aanbesteding plaatsen

4: Bevestiging plaatsing aanbesteding

Autorisatie

controle

Web Service

framework

Page 34: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

SEQUENTIEDIAGRAMMEN 27

Figuur 4.7 toont het sequentiediagram van een ziekenhuisgebruiker die de offertes wenst op te

volgen. De gebruiker zal hier enkel tot in staat zijn als hij of zij aan de juiste autorisatie

vereisten voldoet.

Figuur 4.8 toont de vraag van een leveranciergebruiker om de aanbestedingen te ontvangen.

Het Web Service framework zal die aanbestedingen enkel verzenden wanneer de gebruiker

geautoriseerd is om de aanbestedingen te ontvangen.

Figuur 4.7: Sequentiediagram: offertes opvolgen

Figuur 4.9 behandelt het plaatsen van een nieuwe offerte. Wanneer de gebruiker geautoriseerd

is, zal het Web Service framework de offerte behandelen en de gebruiker op de hoogte stellen

of de offerte al dan niet correct kon behandeld worden.

Figuur 4.8: Sequentiediagram: Aanbestedingen ontvangen

Figuur 4.10 toont de sequenties die vereist zijn om het bieden op een aanbesteding op te

volgen, en fig. 4.11 toont de sequenties voor het updaten van een offerte. Terug wordt steeds

door het Web Service framework nagegaan of het gaat om geautoriseerde verzoeken.

1: Vraag om aanbestedingen te ontvangen

2a: Niet geautoriseerd: error

2b: Wel geautoriseerd

3: Aanbestedingen verzenden

Autorisatie

controle

Leverancier

gebruiker Web Service

framework

1: Vraag om offertes op te volgen

2a: Niet geautoriseerd: error

2b: Wel geautoriseerd

3: Verloop offertes verzenden

Autorisatie

controle

Ziekenhuis

gebruiker Web Service

framework

Page 35: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

SEQUENTIEDIAGRAMMEN 28

Figuur 4.9: Sequentiediagram: offerte plaatsen

Figuur 4.10: Sequentiediagram: Bieden opvolgen

Figuur 4.11: Sequentiediagram: Offerte updaten

1: Vraag om offerte updaten

2a: Niet geautoriseerd: error

2b: Wel geautoriseerd

3: Offerte updaten

4: Bevestiging update

Autorisatie

controle

Leverancier

gebruiker Web Service

framework

1: Vraag om bieden op te volgen

2a: Niet geautoriseerd: error

2b: Wel geautoriseerd

3: Verloop bieden verzenden

Autorisatie

controle

Leverancier

gebruiker Web Service

framework

1: Vraag om offerte te plaatsen

2a: Niet geautoriseerd: error

2b: Wel geautoriseerd

3: Offerte plaatsen

4: Bevestiging plaatsing offerte

Autorisatie

controle

Leverancier

gebruiker Web Service

framework

Page 36: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

ARCHITECTUUR 29

Hoofdstuk 5

Architectuur

In dit hoofdstuk wordt de structuur van het E-procurement web service framework wat dieper

ontleed. Eerst en vooral wordt het algemeen ontwerp ervan besproken. Ten slotte worden ook

nog enkele uitgebreide sequentie diagrammen bekeken.

5.1 Algemeen ontwerp

Figuur 5.1 toont een voorstelling van het algemene ontwerp van de E-procurement web

service framework. Er worden duidelijk twee grote gehelen opgemerkt.

Het eerste geheel omvat de client zijde. De belangrijkste component hiervan is uiteraard de

ClientGUI, die de gebruiker toelaat om aanbestedingen (Engels: tender) en orders te plaatsen,

op te zoeken, enzovoort.

De ClientGUI op zich maakt gebruik van onderliggende componenten die voor de gebruiker

niet zichtbaar zijn. Deze componenten omvatten klassen die een voorstelling geven van

producten, orders en aanbestedingen, kortom, die zaken die voor de gebruiker van de E-

procurement web service framework van belang zijn.

Verder omvatten die componenten ook enkele Handler klassen die instaan voor de

bewerkingen op de producten, orders en aanbestedingen, alsook methoden voorzien om de

web service aan te spreken. Deze componenten werden met het oog op herbruikbaarheid

ontworpen, waardoor zowel de leverancier als de ziekenhuis GUI van deze componenten

kunnen gebruik maken.

Page 37: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

ALGEMEEN ONTWERP 30

Ten slotte bevat de ClientGUI ook twee security componenten, SoapSigner en

SecurityHandler, die een betrouwbare gegevensoverdracht moet garanderen. De

SecurityHandler is de enige component die verschillend is in de leverancier GUI en de

ziekenhuis GUI. De reden ligt in het feit dat de beide GUI’s een verschillende context

aanbieden, en die ook verschillende security eisen vereisen.

De server zijde vormt het tweede geheel. Aan de server zijde zijn Service interfaces voorzien,

die het voor een client mogelijk maakt om de vereiste web service methoden aan te spreken.

Figuur 5.1: Algemeen ontwerp E-procurement web service framework

Page 38: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

UML DIAGRAMMEN 31

Onderliggend zijn er ook klassen voorzien die de business logic voor het E-procurement web

service framework definiëren. Het voordeel van dit ontwerp is dat de business logic niet

rechtstreeks geïmplementeerd is in de Service interfaces, wat het mogelijk maakt om een

component gebaseerd ontwerp na te streven.

Verder moet er aan de server zijde ook een databank aanwezig zijn die alle nuttige

gegevensoverdracht tussen een ziekenhuis en een leverancier bijhoudt. Hiervoor is dan ook

een databank access klasse voorzien.

5.2 UML diagrammen

Nu wordt het ontwerp dat in de vorige sectie besproken werd, bekeken.

Figuur 5.2 toont het UML diagram voor de client zijde. Zoals reeds aangetoond laat de

ClientGUI de gebruiker toe om op de producten, orders en aanbestedingen in te werken.

De ClientGUI component maakt dan ook hiervoor gebruik van de TenderHandler en

OfferHandler componenten. In deze klassen worden de methoden gespecificeerd die op

orders en aanbestedingen kunnen worden verricht.

Bovendien maakt de ClientGUI component nog gebruik van een SecurityHandler

component, die het security aspect voor zijn rekening neemt, zoals authenticatie en

autorisatie.

Een Tender bevat minstens een Product, die een representatie vormt van het product

waarvoor een aanbesteding werd geplaatst. Aan de Tender kunnen geen of meerdere

Offers toegevoegd worden, die de verschillende offertes van de leverancier voorstellen.

Wanneer er door de ziekenhuisgebruiker een offerte (Offer) wordt aanvaard voor een

aanbesteding (Tender), wordt die aanbesteding niet langer als een Tender beschouwd,

maar als een Order. De producten (Product) die tot de Tender behoorden, worden

binnen de Order dan als HandledProducts bijgehouden. Een Order heeft maximum

één offerte, die als een HandledOffer wordt bijgehouden binnen het Order object.

Wanneer het biedingproces ten einde is, en de ziekenhuisgebruiker geen Offer heeft

aanvaard binnen een dag na het verstrijken van de biedinglimiet, dan wordt er geen

HandledOffer aan het object Order toegekend.

Page 39: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

UML DIAGRAMMEN 32

Figuur 5.2: UML diagram client zijde

De reden waarom er een onderscheid gemaakt wordt tussen een Tender, Order en de

overige klassen, is om binnen de applicatie gemakkelijk onderscheid te kunnen maken tussen

objecten die nog veranderd kunnen worden, of niet. Zo kan aan een Tender tijdens het

bieden meerdere Offers toegevoegd worden, of kan een Offer aangepast worden. De

gegevens die zich in het Order of HandledOffer object bevinden, kunnen op geen

enkele manier meer aangepast worden.

De TenderHandler staat in voor het aanmaken van aanbestedingen, het versturen ervan,

en het opvragen van aanbestedingen en orders. De OfferHandler doet dit voor het

aanmaken, versturen en opvragen van offertes.

Page 40: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

UML DIAGRAMMEN 33

Verder is er nog een klasse XmlHandler gedefinieerd, waar de klassen OfferHandler en

TenderHandler van gebruik maken om de aanbestedingen en dergelijke naar de Web

Service te versturen of te ontvangen. De XmlHandler maakt een XmlDocument van deze

objecten, en verstuurt dan dit document naar de Web Service. De reden hiervoor is omdat

Web Services de zelf gedefinieerde types niet als paramater of return waarde aanvaarden.

Figuur 5.3 toont het UML diagram voor de server zijde.

Aan de server zijde worden er drie Server interfaces, TenderWS, OfferWS en

LoginWS, voorzien. Deze componenten worden door de client aangeroepen wanneer hij

offertes of aanbestedingen wenst te versturen, opvragen, … Hierbij dienen de OfferWS en

de TenderWS voor het afhandelen van alles wat te maken heeft met respectievelijk offertes

en aanbestedingen. De LoginWS is de component die aangesproken wordt om een gebruiker

te authenticeren.

Achterliggend maken de TenderWS en de OfferWS gebruik van de TenderLogic en de

OfferLogic, die de business logic binnen het E-procurement web service framework

definieert.

Wanneer deze business logic componenten aangesproken worden, wordt eerst in de

ServerSecurity component nagegaan of de aanvraag van een geauthenticeerde gebruiker

afkomstig is, en eveneens of de gebruiker geautoriseerd is om die aanvraag te doen.

De klassen TenderLogic, OfferLogic en ServerSecurity maken gebruik van de

klasse DatabaseConnection om toegang tot de databank te krijgen.

Page 41: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

INTERFACES 34

Figuur 5.3: UML diagram server zijde

5.3 Interfaces In deze sectie worden de belangrijkste interfaces aan de server en client zijde eens onder de

loep genomen. De volgende methoden behoren tot de ITenderHandler interface aan de

client zijde.

CreateTender(string name, string surname, string hospital, DateTime

date, DateTime dateLimit, string tenderID, ArrayList

productList);

SendTenders(string user, string password);

ValidateOffer(string user, string password, string tenderID, string

offerID);

GetData(string user, string password);

Page 42: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

INTERFACES 35

De methode CreateTender zorgt ervoor dat er een nieuw Tender object wordt

aangemaakt. Een Tender object bevat steeds de naam en de voornaam van de persoon die de

aanbesteding aanmaakte, het ziekenhuis waarvoor hij of zij werkt, de datum waarop de

aanbesteding werd geplaatst (date), de datum waarop het bieden afgesloten wordt (dateLimit),

een ID voor de aanbesteding en een lijst met alle producten die besteld moeten worden.

Met de methode SendTenders kunnen nieuwe aanbestedingen naar de Web Service

verzonden worden. Hierbij worden het paswoord en de login van de gebruiker opnieuw

meegegeven, zodat de server in staat is om de authenticiteit en de autorisatie van de gebruiker

na te gaan.

Met de ValidateOffer methode kan een ziekenhuisgebruiker een offerte die op een

aanbesteding is geplaatst, aanvaarden. Hiervoor wordt opnieuw het paswoord en login

meegegeven, aangezien het hier gaat om een belangrijke beslissing. Het ID van de

aanbesteding en de offerte worden eveneens meegegeven, zodat de gegevens correct in de

databank kunnen worden aangepast.

Met de methode GetData kan de gebruiker de aanbestedingen opvragen die hij of zij heeft

geplaatst, alsook de orders.

De volgende methoden behoren tot de IOfferHandler interface.

CreateOffer(string name, string surname, string company, string

offerID, double price, string tenderID, DateTime date);

SendOffers(string user, string password);

UpdatePlacedOffer(string user, string password, string tenderID,

string offerID, double price);

GetData(string user, string password);

GetLowestOffer(string tenderID);

Deze methoden zijn gelijkaardig aan de methoden uit de ITenderHandler interface.

De methode CreateOffer maakt een nieuwe offerte aan, waarbij de naam en voornaam,

alsook het bedrijf waar de persoon voor werkt, worden bijgehouden. Verder wordt er een ID

Page 43: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

INTERFACES 36

voor de offerte meegegeven, de aangeboden prijs, het ID van de aanbesteding waarvoor de

offerte bedoeld is en de datum waarop de offerte werd geplaatst.

De methoden SendOffers en GetData zijn volledig gelijklopend met de methoden uit de

ITenderHandler, alleen worden er nu Offer en HandledOffer objecten verstuurd.

UpdatePlacedOffer laat toe om de oorspronkelijke prijs die aan een offerte werd

meegegeven, aan te passen. Wanneer een gebruiker deelneemt aan het bieden, en een nieuw

bod plaatst, wordt er van deze methode gebruik gemaakt. De parameters die dienen

meegegeven te worden zijn de gegevens van de gebruiker, het ID van de aanbesteding en de

offerte, en uiteraard de nieuwe prijs.

Met de methode GetLowestOffer wordt er opgevraagd wat het laagste bod is die reeds

geplaatst werd op een aanbesteding. Die aanbesteding wordt gespecificeerd door de

tenderID.

De interfaces die nu besproken werden, bevinden zich aan de client zijde. De volgende

interfaces bevinden zich aan de server zijde.

GetTenders(string [] userinfo);

GetOrders(string [] userinfo);

AddTenders(string user, ArrayList tenders);

ValidateOffer(string user, string tenderID, string offerID);

Dit zijn de interface methoden uit de ITenderLogic methoden. De methoden in de

interface laten toe om aanbestedingen van de gebruiker op te vragen, waarbij de gegevens van

de gebruiker uit de string array userinfo worden gehaald. Gelijkaardig is er ook een

methode die de orders van de gebruiker teruggeeft.

De methode AddTenders zal alle aanbestedingen die zich in de ArrayList bevindt,

toevoegen voor de gespecificeerde gebruiker.

Tot slot zal de methode ValidateOffer er voor zorgen dat een offerte wordt aanvaard

voor een aanbesteding.

Page 44: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

SEQUENTIEDIAGRAMMEN 37

GetOffers(string [] userinfo);

GetHandledOffers(string [] userinfo);

AddOffers(string user, ArrayList offers);

LowestOffer(string tenderID);

UpdateOffer(string user, string tenderID, string offerID, double

price);

Deze methoden behoren tot de IOfferLogic interface. Het bevat methoden om de

Offers en HandledOffers op te vragen van een gebruiker, alsook een methode om

offertes toe te voegen.

De methode LowestOffer geeft het laagste bod terug voor de aanbesteding met ID

tenderID, en de methode UpdateOffer zal ervoor zorgen dat de prijs van de offerte met

offerID zal aangepast worden naar de meegegeven price value.

In Appendix B werden eveneens de interfaces opgenomen voor de ServerSecurity klasse

en de DatabaseConnection.

5.4 Sequentiediagrammen

In de vorige secties werd er door middel van UML diagrammen en interfaces inzicht

verkregen in de manier waarop de applicatie opgebouwd is. Nu zullen de verschillende

relaties tussen de klassen duidelijk gemaakt worden aan de hand van een uitgebreide

sequentiediagram.

De situatie is die van een ziekenhuisgebruiker die zijn orders opvraagt aan de Web Service.

Hiervoor moet de gebruiker echter eerst ingelogd zijn.

De beginsituatie wordt getoond in fig. 5.4. Wanneer de gebruiker wenst in te loggen (1), zal

de GUI die aanvraag doorspelen naar de SecurityHandler (2). De SecurityHandler

zal dan via de LoginWS de gegevens opvragen van de gebruiker (3). Hiertoe zal de

LoginWS de aanvraag doorspelen aan de ServerSecurity (4), die de gegevens van de

gebruiker zal opvragen via de DatabaseConnection klasse (5). Als antwoord zal er dan

een string array met de gegevens van de gebruiker worden teruggestuurd naar de

Page 45: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

SEQUENTIEDIAGRAMMEN 38

SecurityHandler aan de client kant (6-8). Wanneer de string array niet null is, dan

gaat het om een geauthenticeerde gebruiker en wordt die tot de applicatie toegelaten (9a &

10a). Indien dit niet het geval is, zal aan de gebruiker gevraagd worden om opnieuw in te

loggen (9b & 10b).

Figuur 5.4: Uitgebreide sequentiediagram: inloggen

Wanneer de gebruiker toegelaten is tot het systeem, worden zijn of haar orders opgevraagd.

Dit wordt afgebeeld in fig. 5.5. De GUI zal die aanvraag terug doorsturen naar de

SecurityHandler (2). Die zal nagaan of de gebruiker geautoriseerd is om de aanvraag te

doen (3). Indien dit het geval is, zal de SecurityHandler aan de gebruiker vragen om

opnieuw zijn paswoord in te geven (4). Nadat de gebruiker dit heeft gedaan, zal de

SecurityHandler aan de TenderHandler vragen om de orders op te vragen (6). Die

zal daarvoor de TenderWS aanspreken (7). De TenderWS op zijn beurt zal de aanvraag

doorgeven aan de ServerSecurity (8). Die zal opnieuw via het paswoord en de login van

de gebruiker de authenticiteit (9 & 10) en de autorisatie (10 & 11) van de gebruiker nagaan.

Deze acties kunnen wellicht enkele vragen oproepen. Waarom zowel aan client als aan server

zijde de autorisatie van de gebruiker controleren?

De reden waarom dit aan de client zijde gebeurt, is om de trafiek naar de Web Services zo

veel mogelijk te vrijwaren van ongeldige aanvragen. Wanneer een niet-geautoriseerde

aanvraag al aan de client zijde kan ontedekt worden, wordt de Web Service minder belast.

Page 46: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

SEQUENTIEDIAGRAMMEN 39

Figuur 5.5: Uitgebreide sequentiediagram: autorisatie nagaan

Waarom de authenticiteit en de autorisatie ook aan de server zijde gecontroleerd wordt, is om

te voorkomen dat een aanvaller die zelf een GUI zou geschreven hebben waar er geen

authenticatie en autorisatie wordt verricht, geen aanbestedingen of offertes zou kunnen

plaatsen. Wanneer er immers van uitgegaan wordt dat elke aanvraag al aan de client zijde

gecontroleerd werd, dan zou in dit geval ongeldige aanvragen behandeld kunnen worden.

Figuur 5.6: Uitgebreide sequentiediagram: orders opvragen

Wanneer blijkt dat de aanvraag afkomstig is van een geauthenticeerde en geautoriseerde

gebruiker (fig. 5.6), zal de ServerSecurity de TenderLogic vragen om de aanvraag

Page 47: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

TOEVOEGEN DIGITAL SIGNATURES 40

verder af te handelen (1). Die zal gebruik maken van de DatabaseConnection om de

gewenste gegevens op te vragen (2 & 3). Voordat deze gegevens naar de client worden

teruggestuurd, zal de TenderLogic de gegevens door de XmlHandler laten parsen naar

een XmlDocument (4 & 5). Dat XmlDocument zal dan naar de TenderHandler

worden teruggestuurd (6 – 8).

Dan zal de TenderHandler aan de XmlHandler vragen om uit het XmlDocument

terug de complexe datatypes te genereren (9 & 10), waarna de orders aan de gebruiker zullen

worden getoond (11 – 13).

5.5 Toevoegen Digital Signatures

Figuur 5.7: Aangepast UML diagram

Page 48: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

TOEVOEGEN DIGITAL SIGNATURES 41

Momenteel worden er nu security features aangeboden via SSL en login en paswoord. Er

wordt echter nog geen proof of transaction aangeboden. In deze sectie zal de implementatie

van de digital signatures besproken worden, en aan de hand van de minimale aanpassingen die

dit vereist, zal ook aangetoond worden dat de applicatie getuigt van een component gebaseerd

ontwerp.

Om digital signatures te implementeren, moet er een extra methode toegevoegd worden in elke

Web service interface. De methode wordt in fig. 5.8 weergegeven, en zal nagaan of de

binnenkomende berichten digitaal ondertekend werden of niet.

Verder is er ook nog een extra klasse vereist aan de client zijde, namelijk SoapSigner. Deze

klasse bevat een enkele methode die een SecurityToken teruggeeft waarmee een SOAP

bericht ondertekend kan worden.

Figuur 5.7 toont het nieuwe UML diagram voor de client zijde. Elke klasse die een Web

Service Interface methode oproept, maakt nu gebruik van de klasse SoapSigner om de

SOAP messages die verstuurd worden digitaal te ondertekenen

private bool IsMessageSigned(SoapContext context)

{

foreach (ISecurityElement element in context.Security.Elements)

{

if (element is MessageSignature)

{

MessageSignature sig = element as MessageSignature;

if((sig.SignatureOptions &

SignatureOptions.IncludeSoapBody) != 0)

{

return true;

}

}

}

return false;

}

Figuur 5.8: Extra methode in Web Service Interfaces

Het bekijken van de eenvoudigste use case, namelijk een gebruiker die wenst in te loggen, zal

de relatie tussen de nieuwe componenten duidelijk maken. Figuur 5.9 toont het uitgebreide

sequentiediagram hiervoor.

Page 49: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

TOEVOEGEN DIGITAL SIGNATURES 42

Figuur 5.9: Uitgebreide sequentiediagram: inloggen

Wanneer de gebruiker nu wenst in te loggen (1), zal de GUI nog steeds de aanvraag

doorsturen naar de SecurityHandler (2). Voordat de SecurityHandler nu de

LoginWS zal aanspreken, zal het eerst aan de SoapSigner het SecurityToken

aanvragen (3 & 4) waarmee de SecurityHandler het SOAP bericht kan ondertekenen.

Pas hierna zal de SecurityHandler een aanvraag naar de LoginWS versturen (5). De

LoginWS zal dan eerst nagaan of het bericht digitaal ondertekend is (6). Indien dit het geval

is, zal de aanvraag doorgestuurd worden naar de ServerSecurity (7), die via de

DatabaseConnection de gegevens van de gebruiker zal opvragen (8 & 9) en die naar de

SecurityHandler zal terugsturen (10 & 11). Die zal nagaan of het gaat om een

geauthenticeerde gebruiker (12a & 13a) of een niet-geauthenticeerde gebruiker (12b & 13b).

In Appendix C wordt er een extract van een SOAP bericht getoond, dat bewijst dat de SOAP

berichten effectief digitaal ondertekend worden.

Page 50: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

IMPLEMENTATIE 43

Hoofdstuk 6

Implementatie

In dit hoofdstuk worden de implementatiedetails van de applicatie besproken. Er wordt

aandacht besteed aan de Hospital Client GUI, de Supplier Client GUI, de UserCreator en de

E-procurement Web Service.

6.1 Client GUI’s

6.1.1 Hospital Client GUI

Voordat een gebruiker toegang krijgt tot de Hospital Client GUI, wordt er steeds gevraagd

aan de gebruiker om in te loggen met behulp van een paswoord en een login. Dit scherm

wordt weergegeven in fig. 6.1.

Figuur 6.1: Login screen

Eenmaal de gebruiker succesvol ingelogd is, krijgt hij of zij het hoofdscherm te zien. Bij het

implementeren van de Client GUI werd er gestreefd naar een zo bekend mogelijke ‘look-and-

Page 51: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

HOSPITAL CLIENT GUI 44

feel’. Aangezien er gebruik werd gemaakt van Visual Studio .NET, werd de layout van de

GUI gebaseerd op de Windows Verkenner structuur.

Aan de linkerkant van het hoofdscherm kan de gebruiker via een treeview een keuze maken

tussen de lopende aanbestedingen en de afgehandelde orders, die allen gerangschikt zijn op

datum. De Pending tenders zijn de aanbestedingen waarvoor het bieden nog steeds aan de

gang is, en de Handled orders zijn die aanbestedingen waarvoor er reeds een offerte werd

aanvaard, of waarvoor het bieden afgelopen is.

Aan de rechterkant van het scherm kan de gebruiker de belangrijkste gegevens van de

aanbesteding bekijken. Er wordt afgebeeld wie de aanbesteding heeft geplaatst, wanneer het

werd geplaatst, wanneer het bieden eindigt, hoeveel offertes er reeds op geplaatst werden en

hoeveel producten er besteld werden.

Het hoofdscherm voorziet in een toolbar en menuschermen om de gebruiker de mogelijkheid

te geven aanbestedingen te plaatsen, bekijken, … Dit alles wordt getoond in fig. 6.2.

Figuur 6.2: Main screen

De gebruiker kan – wanneer hij of zij geautoriseerd is – zoveel aanbestedingen plaatsen als

gewenst. Figuur 6.3 toont het scherm waarin de gebruiker een nieuwe aanbesteding kan

plaatsen. Door in het menu View – Unsend tenders… te selecteren, of op de verrekijker te

klikken op de toolbar, krijgt de gebruiker een overzicht van alle aanbestedingen die hij of zij

heeft geplaatst, maar nog niet heeft verzonden (fig. 6.4).

Page 52: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

HOSPITAL CLIENT GUI 45

Figuur 6.3: Nieuwe aanbesteding plaatsen

Wanneer de Hospital Client GUI afgesloten wordt, zal er melding gemaakt worden dat de

aanbestedingen nog niet werden verzonden, en dat die gegevens verloren zullen gaan wanneer

de GUI afgesloten wordt.

De gebruiker kan via het scherm waar de niet verzonden aanbestedingen getoond worden nog

beslissen om aanpassingen te verrichten of eventueel aanbestedingen te verwijderen. Het

scherm biedt de mogelijkheid om de aanbestedingen te verzenden, waarna er geen

aanpassingen meer aan kunnen verricht worden.

Wanneer de gebruiker een offerte wenst te aanvaarden, dan kan dat via het scherm onder

Tools – Validate offer… Dan krijgt de gebruiker fig. 6.5 te zien. De gebruiker kan dan via de

combobox een aanbesteding selecteren, waarna de gegevens van die aanbesteding getoond

worden, alsook de offertes die ervoor werden geplaatst. De gebruiker kan dan een van die

offertes kiezen en valideren. Op de aanbesteding die in fig. 6.5 wordt getoond, werd nog geen

offerte geplaatst.

Een keuze die gemaakt werd bij het implementeren van de Client GUI’s, was om het

paswoord van een gebruiker niet bij te houden binnen de applicatie. Hierdoor wordt de

situatie vermeden dat een gebruiker eventjes zijn computer verlaat, en een ander persoon via

zijn login en paswoord verrichtingen kan doen. Daarom zal bij het plaatsen van nieuwe

Page 53: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

SUPPLIER CLIENT GUI 46

aanbestedingen en het valideren van een offerte steeds opnieuw gevraagd worden aan de

gebruiker om zijn paswoord in te geven.

Figuur 6.4: Niet verzonden aanbestedingen

6.1.2 Supplier Client GUI

Ook van de leveranciergebruiker wordt er steeds verwacht dat er een paswoord en login

combinatie wordt ingegeven. Wanneer de gebruiker geauthenticeerd is, wordt er een

gelijkaardig hoofdscherm getoond als voor de ziekenhuisgebruiker. Verschillend is wel dat bij

de lopende aanbestedingen alle geplaatste aanbestedingen van alle ziekenhuisgebruikers

weergegeven wordt, en bij de afgehandelde orders zijn het die orders die getoond worden

waarvoor de offerte van de gebruiker werd aanvaard.

Figuur 6.6 toont de manier waarop de informatie van een aanbesteding wordt getoond die de

leverancier heeft ontvangen. De belangrijkste data – wie plaatste de aanbesteding, wanneer

stopt het bieden, … – wordt overzichtelijk weergegeven. Bovendien kan de gebruiker steeds

snel zien wat het laagste bod is die momenteel op de aanbesteding werd geboden. In fig. 6.6

heeft de gebruiker nog geen offerte geplaatst. Indien dit wel het geval was, heeft de gebruiker

de mogelijkheid om via Update… zijn bod aan te passen.

Page 54: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

USERCREATOR 47

Figuur 6.5: Offerte aanvaarden

Figuur 6.7 toont het scherm waar de gebruiker een nieuwe aanbesteding kan plaatsen. Terug

worden alle gegevens overzichtelijk weergegeven, en indien gewenst kan de gebruiker via de

combobox andere aanbestedingen selecteren, om er een offerte op te plaatsen.

Bovendien wordt er steeds gebruik gemaakt van input validatie, zodat er geen ongeldige data

naar de Web Service verstuurd kan worden.

6.1.3 UserCreator

Omdat er voor het opslaan van de paswoorden in de databank gebruik gemaakt wordt van

strings die uitgebreid werden met een sterke random waarde en gehasht worden, is het niet zo

eenvoudig om voor testdoeleinden nieuwe gebruikers toe te voegen.

Daarom werd er nog een kleine applicatie – UserCreator – geïmplementeerd die het toelaat

om een gebruiker toe te voegen.

Page 55: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

WEB SERVICE FRAMEWORK 48

Figuur 6.6: Aanbesteding bekijken

Het programmaatje bestaat uit een enkel scherm (fig. 6.8), waarop gevraagd wordt een login

en paswoord in te geven, alsook de gegevens van de gebruiker. Ook de autorisatiegraad kan

ingesteld worden. Wanneer alle velden correct werden ingevuld, zal er een nieuwe gebruiker

aan de databank worden toegevoegd met de ingegeven data.

6.2 Web Service framework

In deze sectie worden de implementatiedetails en –beslissingen besproken die genomen

werden om de E-procurement Web Service te implementeren.

Naar de buitenwereld toe worden er drie Web Service Interfaces geboden. De aanvragen die

bij die interfaces toekomen, moeten digitaal ondertekend zijn, anders wordt de aanvraag

genegeerd. Elk SOAP bericht dat bij de Web Service Interfaces toekomt, wordt opgeslagen in

een log file. Op die manier kan er effectief nagegaan worden of bepaalde aanbestedingen of

offertes geplaatst werden.

Page 56: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

WEB SERVICE FRAMEWORK 49

Dit brengt wel een mogelijk gevaar met zich mee, namelijk Denial of Service. Wanneer een

aanvaller op de hoogte is van het feit dat de SOAP berichten opgeslagen worden, zou hij of zij

hiervan misbruik van kunnen maken om de server over te belasten.

Er wordt echter nog geen backup van de logfile gemaakt. Dit zou eventueel kunnen door een

script.

Figuur 6.7: Offerte plaatsen

Om de achterliggende business logic voor de buitenwereld verborgen te houden, wordt elke

aanvraag doorgegeven aan de ServerSecurity. Die zal in de databank nagaan of de

aanvraag afkomstig is van een gekende gebruiker. Hierna zal de ServerSecurity ook de

autorisatiegraad van de gebruiker onderzoeken. Aan de hand van de autorisatiegraad, zal de

gebruiker een verschillend paswoord en login toegewezen krijgen om mee te connecteren naar

de databank. Op die manier kan er steeds gegarandeerd worden dat er alleen geldige acties op

de databank ondernomen worden.

Bij het opvragen van de gegevens van de gebruiker, wordt er gebruik gemaakt van een

gehasht paswoord. De sterke random waarde die aan de paswoorden worden toegevoegd,

Page 57: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

WEB SERVICE FRAMEWORK 50

werd in de code opgenomen. Beter zou zijn om die waarde in een file op te slaan op de server

zelf, en die file te encrypteren, zodat een aanvaller veel moeilijker aan die waarde kan komen.

Figuur 6.8: UserCreator

In de E-procurement Web Service werd ook een methode geïmplementeerd die nagaat of de

ID’s die met de aanbestedingen en offertes worden meegegeven, uniek zijn. Indien dit niet het

geval is, wordt de aanbesteding of offerte genegeerd, en wordt dit aan de gebruiker kenbaar

gemaakt.

Wanneer de ziekenhuisgebruiker inlogt en zijn gegevens opvraagt, zal de server voor elke

aanbesteding nagaan of de limiet voor het bieden al afgelopen is of niet. Indien dit het geval

is, wordt de aanbesteding niet langer als een aanbesteding beschouwd, maar als een order.

Voor testdoeleinden werd alles zo geïmplementeerd dat de ziekenhuisgebruiker dan nog een

dag de tijd heeft om een offerte te aanvaarden. Wanneer dit niet gebeurt binnen de

vastgestelde tijd, dan worden de order en de offertes als ongeldig beschouwd, en kan de

ziekenhuisgebruiker zich niet beroepen op een offerte. Dit kan echter zeer eenvoudig

aangepast worden naar een beslissingsperiode van 30 dagen.

Wanneer een leveranciergebruiker een offerte plaatst, of wanneer hij of zij zijn of haar bod

wenst aan te passen, wordt er ook nagegaan of dit nog geldig is binnen de limietdatum voor

het bieden.

Page 58: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

BESLUIT 51

Hoofdstuk 7

Besluit

7.1 Conclusie

Uit datgene wat er in de vorige hoofdstukken behandeld werd, kan er besloten worden dat E-

procurement een oplossing vormt voor het manuele reverse auctioning probleem.

De applicatie die afgeleverd wordt, voldoet aan de vereiste security eisen. Er kan

gegarandeerd worden dat enkel geauthenticeerde en geautoriseerde gebruikers gebruik kunnen

maken van het E-procurement Web Service framework.

Bovendien kan de integriteit van de verstuurde berichten gegarandeerd worden door SSL.

Door gebruik te maken van een beveiligd kanaal waardoor de berichten verzonden worden,

worden replay, man in the middle en eavesdropping attacks voorkomen.

Door de autorisatie die zowel in de applicatie als in de databank wordt voorzien, wordt er

voorkomen dat aanvallen op de databank slagen.

Tot slot wordt er ook via Digital Signatures, en een logfile, een systeem voorzien waarmee de

geldigheid van geplaatste aanbestedingen en offertes kan worden aangetoond.

Door gebruik te maken van het E-procurement framework kunnen aanbestedingen en offertes

veel sneller aangeboden en afgehandeld worden. Alle belangrijke informatie wordt steeds

Page 59: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

VERDERE ONTWIKKELINGEN 52

overzichtelijk op het scherm weergegeven. Bovendien kan zeer snel op datum opgezocht

worden welke orders er reeds geplaatst of behandeld werden. Dit alles brengt een hogere

tijdswinst met zich mee. Bovendien kan door de overzichtelijke informatie zeer snel de meest

winstgevende offerte gekozen worden.

De ontwikkelingen in de informatica zorgen ervoor dat vele tijdsrovende problemen

eenvoudig kunnen opgelost worden. De keerzijde echter is de beveiliging die bij het gebruik

van computers en vooral het internet vereist worden. Een volledige beveiliging kan namelijk

nooit gegarandeerd worden.

Indien een gebruiker van een zwak paswoord en login gebruik maakt, dan kan er niet

voorkomen worden dat een onbevoegd persoon handelingen verricht die niet geautoriseerd

zijn.

Bovendien moet er steeds een keuze gemaakt worden tussen de aangeboden security en de

performantie:

WSS kan diepgaandere beveiliging aanbieden, maar zorgt dan weer voor een grote overhead.

Door middel van digital signatures en een log systeem wordt er proof of transaction

aangeboden, maar hierdoor wordt de kans groter dat de Denial of Service aanval voorkomt.

Tot slot werd er ook aangetoond dat de applicatie op een component gebaseerde manier werd

ontworpen, en dat het extra toevoegen van nieuwe features op een eenvoudige manier kan

gebeuren.

7.2 Verdere ontwikkelingen

Welke aanpassingen kunnen nog aan de applicatie worden toegevoegd, en in welke

toepassingen zou deze applicatie gebruikt kunnen worden?

• Momenteel wordt er steeds aan de gebruiker gevraagd om een ID aan zijn

aanbesteding of offerte toe te voegen. Wanneer de ID niet geldig is, werd de aanvraag

wel al verstuurd naar de Web Service en behandeld. Het zou dus gebruiksvriendelijker

en performanter zijn wanneer de applicatie zelf een ID aan een aanbesteding en offerte

toevoegt.

Page 60: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

VERDERE ONTWIKKELINGEN 53

• Het inloggen gebeurt met een paswoord en een login. Een andere mogelijkheid zou

kunnen zijn om de authenticatie via certificaten te laten verrichten. Op die manier

vermindert het risico dat er een login en paswoord bekend wordt.

• De sterke random waarde die gebruikt wordt om de paswoorden mee uit te breiden,

wordt momenteel in de code zelf bijgehouden. Beter zou zijn om die waarde op de

server op te slaan, en die waarde ook te versleutelen.

• De E-procurement Web Service applicatie bevat nog geen verdediging tegen een

Dictionary attack aan de client zijde. Wanneer een aanvaller verschillende

paswoorden probeert, zullen die aan de server zijde uitgebreid worden met de sterke

random waarde, en op die manier zou er ook een paswoord en login combinatie

ontdekt kunnen worden. Dit kan voorkomen worden door bijvoorbeeld op te leggen

dat slechts drie keer kan geprobeerd worden in te loggen met dezelfde login binnen

een periode. Een log systeem is hierbij ook aangeraden zodat aanvalpogingen op tijd

ontdekt kunnen worden.

• Wanneer er een aanbesteding wordt geplaatst, wordt die aanbesteding verstuurd naar

alle leveranciers. Het zou gebruiksvriendelijker zijn om de gebruiker te laten beslissen

naar welke leveranciers de aanbesteding verzonden moet worden. Zo kunnen er

categorieën aangemaakt worden van leveranciers die enkel in medicijnen, spuiten, …

handelen. Bij het plaatsen van de aanbesteding kan dan gespecificeerd worden wie de

aanbesteding mag ontvangen, zodat leveranciers die de materialen van een

aanbesteding niet kunnen leveren, geen aanbestedingen ontvangen.

• De applicatie kan eenvoudig geïntegreerd worden in reeds bestaande systemen.

Wanneer er bijvoorbeeld reeds een databank voorhanden is in een ziekenhuis, moet

enkel de klasse DatabaseConnection op die databank afgestemd worden om de

applicatie te kunnen gebruiken.

• Een mogelijke ontwikkeling zou er kunnen in bestaan om het E-procurement

framework te integreren in een stock beheer systeem. Zo zou de applicatie door het

stock beheer op de hoogte kunnen worden gebracht dat een product bijna opgebruikt

is, en dan zelf een aanbesteding voorstellen. Er zouden zelfs regels kunnen

gedeclareerd worden waaruit kan beslist worden dat het programma automatisch een

Page 61: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

VERDERE ONTWIKKELINGEN 54

aanbesteding plaatst, of dat de aanbesteding of eerst nog moet goedgekeurd worden

door een geauthenticeerde gebruiker.

Page 62: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

APPENDICES 55

Appendices

Page 63: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

APPENDIX A 56

<?xml version="1.0" encoding="utf-8" ?>

<xs:schema id="Tenders" targetNamespace="http://tempuri.org/Tenders.xsd"

elementFormDefault="qualified"

xmlns="http://tempuri.org/Tenders.xsd" xmlns:mstns="http://tempuri.org/Tenders.xsd"

xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:complexType name="Product">

<xs:sequence>

<xs:element name="Name" type="xs:string" />

<xs:element name="Count" type="xs:double" />

<xs:element name="Description" type="xs:string" />

</xs:sequence>

</xs:complexType>

<xs:complexType name="Tender">

<xs:sequence>

<xs:element name="Name" type="xs:string" />

<xs:element name="Surname" type="xs:string" />

<xs:element name="Hospital" type="xs:string" />

<xs:element name="TenderID" type="xs:string" />

<xs:element name="Date" type="xs:string" />

<xs:element name="DateLimit" type="xs:string" />

<xs:element name="Products" type="ProductList" />

<xs:element name="Offers" type="OfferList" />

</xs:sequence>

</xs:complexType>

<xs:complexType name="ProductList">

<xs:sequence>

<xs:sequence>

<xs:element name="Product" type="Product" minOccurs="1" />

</xs:sequence>

</xs:sequence>

</xs:complexType>

<xs:complexType name="TenderList">

<xs:sequence>

<xs:sequence>

<xs:element name="Tender" type="Tender" />

</xs:sequence>

</xs:sequence>

</xs:complexType>

<xs:element name="Tenders" type="TenderList"></xs:element>

<xs:complexType name="Offer">

<xs:sequence>

<xs:element name="Name" type="xs:string" />

<xs:element name="Surname" type="xs:string" />

<xs:element name="Company" type="xs:string" />

<xs:element name="OfferID" type="xs:string" />

<xs:element name="Offer" type="xs:double" />

<xs:element name="TenderID" type="xs:string" />

<xs:element name="Date" type="xs:string" />

</xs:sequence>

</xs:complexType>

<xs:complexType name="OfferList">

<xs:sequence>

<xs:sequence>

<xs:element name="Offer" type="Offer" />

</xs:sequence>

</xs:sequence>

</xs:complexType>

</xs:schema>

Figuur A.1: XML schema voor Tenders

Page 64: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

APPENDIX A 57

<?xml version="1.0" encoding="utf-8" ?>

<xs:schema id="Orders" targetNamespace="http://tempuri.org/Orders.xsd"

elementFormDefault="qualified"

xmlns="http://tempuri.org/Orders.xsd" xmlns:mstns="http://tempuri.org/Orders.xsd"

xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:complexType name="HandledProduct">

<xs:sequence>

<xs:element name="Name" type="xs:string" />

<xs:element name="Count" type="xs:double" />

<xs:element name="Description" type="xs:string" />

</xs:sequence>

</xs:complexType>

<xs:complexType name="HandledOffer">

<xs:sequence>

<xs:element name="Name" type="xs:string" />

<xs:element name="Surname" type="xs:string" />

<xs:element name="Company" type="xs:string" />

<xs:element name="OfferID" type="xs:string" />

<xs:element name="Offer" type="xs:double" />

<xs:element name="OrderID" type="xs:string" />

<xs:element name="Date" type="xs:string" />

<xs:element name="Status" type="xs:string" />

</xs:sequence>

</xs:complexType>

<xs:complexType name="HandledProductList">

<xs:sequence>

<xs:sequence>

<xs:element name="HandledProduct" type="HandledProduct"

minOccurs="1" />

</xs:sequence>

</xs:sequence>

</xs:complexType>

<xs:complexType name="Order">

<xs:sequence>

<xs:element name="Name" type="xs:string" />

<xs:element name="Surname" type="xs:string" />

<xs:element name="Hospital" type="xs:string" />

<xs:element name="OrderID" type="xs:string" />

<xs:element name="Date" type="xs:string" />

<xs:element name="DateLimit" type="xs:string" />

<xs:element name="HandledProducts" type="HandledProductList"

maxOccurs="1" />

<xs:element name="HandledOffer" type="HandledOffer" />

</xs:sequence>

</xs:complexType>

<xs:complexType name="OrderList">

<xs:sequence>

<xs:sequence>

<xs:element name="Order" type="Order" />

</xs:sequence>

</xs:sequence>

</xs:complexType>

<xs:element name="Orders" type="OrderList"></xs:element>

</xs:schema>

Figuur A.2: XML schema voor Orders

Page 65: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

APPENDIX B 58

CheckUser(string user, string password);

GetOffers(string user, string password);

GetHandledOffers(string user, string password);

AddOffers(string user, string password, XmlNode offers);

LowestOffer(string tenderID);

GetTenders(string user, string password);

GetOrders(string user, string password);

GetOrders(string user, string password, string [] orderIDs);

AddTenders(string user, string password, XmlNode tenders);

ValidateOffer(string user, string password, string tenderID, string

offerID);

UpdateOffer(string user, string password, string tenderID, string

offerID, double price);

B.1: ISecurityServer interface methodes

CheckUser(string user, string password);

GetUser(string name, string surname, string company);

DeleteOffers(string tenderID);

DeleteProducts(string tenderID);

DeleteTender(string tenderID);

InsertTender(string user, Tender tender);

InsertOrder(string user, Tender tender);

InsertOffer(string user, Offer offer);

InsertHandledOffer(string user, Offer offer);

InsertProduct(string tenderID, Product product);

InsertHandledProduct(string tenderID, Product product);

ValidateOffer(string offerId);

GetOffers(string [] userinfo, string tenderID);

GetHandledOffers(string [] userinfo);

GetAllTenders();

GetTenders(string [] userinfo);

GetOrders(string [] userinfo);

GetProducts(string tenderID);

GetOrderProducts(string orderID);

GetOffersByTenderID(string tenderID);

GetTenderByID(string tenderID);

GetOrderByID(string orderID);

GetOfferByID(string offerID);

GetHandledOfferByOrderID(string orderID);

GetHandledOfferByOfferID(string offerID);

GetLowestOffer(string tenderID);

B.1: IDatabaseConnection interface methodes

Page 66: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

APPENDIX C 59

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-

instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing"

xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"

xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">

<soap:Header>

<wsa:Action wsu:Id="Id-1226b6dc-8f99-4950-97be-2f4fe900f618">http://tempuri.org/LogIn</wsa:Action>

<wsa:MessageID wsu:Id="Id-aa0cc677-5947-4e0b-8b39-e68545bef68b">uuid:ccfb2fe7-e243-403b-828d-

36aed017d895</wsa:MessageID>

<wsa:ReplyTo wsu:Id="Id-814ba0bf-0273-4082-ab4f-58c10945e640">

<wsa:Address>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:Address>

</wsa:ReplyTo>

<wsa:To wsu:Id="Id-1355fcc1-a6b1-449a-a72e-f33a26ed9377">http://digicamm/E-

ProcWebService/LoginHandler.asmx</wsa:To>

<wsse:Security soap:mustUnderstand="1">

<wsu:Timestamp wsu:Id="Timestamp-4a144464-515a-46b9-978e-dd7441e64c16">

<wsu:Created>2005-05-12T19:22:30Z</wsu:Created>

<wsu:Expires>2005-05-12T19:23:30Z</wsu:Expires>

</wsu:Timestamp>

<wsse:BinarySecurityToken ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-

profile-1.0#X509v3" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-

1.0#Base64Binary" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"

wsu:Id="SecurityToken-d2cf6bc8-6aec-4d08-bca2-

d3c8262eac3c">MIIBxDCCAW6gAwIBAgIQxUSXFzWJYYtOZnmmuOMKkjANBgkqhkiG9w0BAQQFADAWMRQwEgYDVQQDEwtSb290IEFnZW5jeTAeFw0wMz

A3MDgxODQ3NTlaFw0zOTEyMzEyMzU5NTlaMB8xHTAbBgNVBAMTFFdTRTJRdWlja1N0YXJ0Q2xpZW50MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQ

C+L6aB9x928noY4+0QBsXnxkQE4quJl7c3PUPdVu7k9A02hRG481XIfWhrDY5i7OEB7KGW7qFJotLLeMec/UkKUwCgv3VvJrs2nE9xO3SSWIdNzADukY

h+Cxt+FUU6tUkDeqg7dqwivOXhuOTRyOI3HqbWTbumaLdc8jufz2LhaQIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMB

IGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwDQYJKoZIhvcNAQEEBQADQQAfIbnMPVYkNNfX1tG1F+qfLhHwJdfDUZuPyRPucWF5qk

h6sSdWVBY5sT/txBnVJGziyO8DPYdu2fPMER8ajJfl</wsse:BinarySecurityToken>

<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">

<SignedInfo>

<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"

xmlns:ds="http://www.w3.org/2000/09/xmldsig#" />

<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />

<Reference URI="#Id-1226b6dc-8f99-4950-97be-2f4fe900f618">

<Transforms>

<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />

</Transforms>

<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />

<DigestValue>hLono1bFQ/HYqWuIn1zzoYlkueA=</DigestValue>

</Reference>

<Reference URI="#Id-aa0cc677-5947-4e0b-8b39-e68545bef68b">

<Transforms>

<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />

</Transforms>

<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />

<DigestValue>V3EDfk9V52LEXVUPxiMw0LJ47AQ=</DigestValue>

</Reference>

<Reference URI="#Id-814ba0bf-0273-4082-ab4f-58c10945e640">

<Transforms>

<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />

</Transforms>

<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />

<DigestValue>vzZetaUdNBDOfE7UjTcqYG/8tyk=</DigestValue>

</Reference>

<Reference URI="#Id-1355fcc1-a6b1-449a-a72e-f33a26ed9377">

<Transforms>

<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />

</Transforms>

<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />

<DigestValue>15gTJ9N2hGdgO9L6wzCGk/UHUVI=</DigestValue>

</Reference>

<Reference URI="#Timestamp-4a144464-515a-46b9-978e-dd7441e64c16">

<Transforms>

<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />

</Transforms>

<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />

<DigestValue>heHhYt9ILHXiE16vZDTwLGz+JC8=</DigestValue>

</Reference>

<Reference URI="#Id-a68d2813-29c0-4bdf-a3ee-41c25f314285">

<Transforms>

<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />

</Transforms>

<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />

<DigestValue>DsV7Bsx7QPwfeovK38hgBHsJ2w0=</DigestValue>

</Reference>

</SignedInfo>

<SignatureValue>s959OrGDE+5JoIN1mrRS0bhBWeYEdT4pXqAos4GS3ClVdVEloE+tZ7HQ5LhC9rjd22ocdDBx4VBG4sCbjpB1FE2abqUeyq0qQpEw

YSrU0wtPzB+tHB/Cpo7IWcewga8FK1y5eJrl+a8U4B9GhUrrTGYZkor8VWaIqVTiXHMzlUQ=</SignatureValue>

<KeyInfo>

<wsse:SecurityTokenReference>

<wsse:Reference URI="#SecurityToken-d2cf6bc8-6aec-4d08-bca2-d3c8262eac3c"

ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" />

</wsse:SecurityTokenReference>

</KeyInfo>

</Signature>

</wsse:Security>

</soap:Header>

<soap:Body wsu:Id="Id-a68d2813-29c0-4bdf-a3ee-41c25f314285">

<LogIn xmlns="http://tempuri.org/">

<username>madridde</username>

<password>INTEC</password>

</LogIn>

</soap:Body>

</soap:Envelope>

C.1: Ondertekend SOAP bericht

Page 67: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

BIBLIOGRAFIE 60

Bibliografie [1] S. Van Hoecke, W. Haerick, G. De Jans, F. De Turck, E. Laermans, B. Dhoedt, P.

Demeester. Design and Implementation of a Secure Media Content Delivery Broker

Architecture. 2005.

[2] J. Jagger and J. Sharp. Programmeercursus Microsoft Visual C# .NET. Academic

Service, 2002.

[3] A. Ferrara and M. MacDonald. Programming .NET Web Services. O’Reilly, first

edition, 2002.

[4] M. Telles. C# Grand Cru. Easy Computing, eerste druk, 2002.

[5] M. Fowler. UML Distilled. Addison-Wesley, third edition, 2004.

[6] MSDN Community. http://www.msdn.com

[7] MySQL. http://www.mysql.com

Page 68: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier

LIJST VAN FIGUREN 61

Lijst van figuren

Figuur 3.1: Security threats zones 9

Figuur 4.1: Gemeenschappelijke use case: inloggen 21

Figuur 4.2: Algemene use case: ziekenhuisgebruiker 22

Figuur 4.3: Algemene use case: leveranciergebruiker 23

Figuur 4.4: Security use case 25

Figuur 4.5: Sequentiediagram: inloggen 26

Figuur 4.6: Sequentiediagram: Aanbesteding plaatsen 26

Figuur 4.7: Sequentiediagram: offertes opvolgen 27

Figuur 4.8: Sequentiediagram: Aanbestedingen ontvangen 27

Figuur 4.9: Sequentiediagram: offerte plaatsen 28

Figuur 4.10: Sequentiediagram: Bieden opvolgen 28

Figuur 4.11: Sequentiediagram: Offerte updaten 28

Figuur 5.1: Algemeen ontwerp E-procurement web service framework 30

Figuur 5.2: UML diagram client zijde 32

Figuur 5.3: UML diagram server zijde 34

Figuur 5.4: Uitgebreide sequentiediagram: inloggen 38

Figuur 5.5: Uitgebreide sequentiediagram: autorisatie nagaan 39

Figuur 5.6: Uitgebreide sequentiediagram: orders opvragen 39

Figuur 5.7: Aangepast UML diagram 40

Figuur 5.8: Extra methode in Web Service Interfaces 41

Figuur 5.9: Uitgebreide sequentiediagram: inloggen 42

Figuur 6.1: Login screen 43

Figuur 6.2: Main screen 44

Figuur 6.3: Nieuwe aanbesteding plaatsen 45

Figuur 6.4: Niet verzonden aanbestedingen 46

Figuur 6.5: Offerte aanvaarden 47

Figuur 6.6: Aanbesteding bekijken 48

Figuur 6.7: Offerte plaatsen 49

Figuur 6.8: UserCreator 50

Page 69: NET Web Services en security voor E-procurementlib.ugent.be/fulltxt/RUG01/000/894/575/RUG01-000894575... · 2019. 12. 6. · security threats, en besproken worden op welke manier