nieuwe website

Bestek dd. 30/10/2014
Referentie: 14/004
BESTEK 14/004 VOOR EEN OPDRACHT VOOR
DIENSTEN MET ALS VOORWERP
Het aanstellen van een partner voor het ontwikkelen van
een nieuwe BIV-website
Offerteaanvraag
BIV
Goedgekeurd door de Nationale Raad dd. 30/10/2014
1
Bestek dd. 30/10/2014
Referentie: 14/004
INHOUD
INHOUD .....................................................................................................................................................................2
I. VOORAFGAANDELIJK...............................................................................................................................................4
I.1. INLICHTINGEN MET BETREKKING TOT DIT BESTEK .................................................................................................................. 4
I.2. WETTELIJK KADER ......................................................................................................................................................... 4
II. ADMINISTRATIEVE BEPALINGEN ............................................................................................................................5
II.1. BESCHRIJVING VAN DE OPDRACHT ................................................................................................................................... 5
II.2. IDENTITEIT VAN DE OPDRACHTGEVER ............................................................................................................................... 6
II.3. WIJZE VAN GUNNEN ..................................................................................................................................................... 6
II.4. PRIJSOPGAVE .............................................................................................................................................................. 6
II.5. VORM EN INHOUD VAN DE OFFERTE ................................................................................................................................. 6
II.6. INDIENEN VAN DE OFFERTE ............................................................................................................................................ 7
II.7. VERBINTENISTERMIJN ................................................................................................................................................... 7
II.8. GUNNINGSCRITERIA...................................................................................................................................................... 7
II.9. ONREGELMATIGE OF ONVOLLEDIGE OFFERTE ..................................................................................................................... 8
III. CONTRACTUELE BEPALINGEN ................................................................................................................................9
III.1. LEIDING OVER DE UITVOERING ....................................................................................................................................... 9
III.2. PRIJSHERZIENINGEN..................................................................................................................................................... 9
III.3. LOOPTIJD .................................................................................................................................................................. 9
III.4. INTELLECTUELE EIGENDOMSRECHTEN ..................................................................................................... 10
IV. TECHNISCHE BEPALINGEN: EEN BESCHRIJVING VAN HET PROJECT ......................................................................11
ALGEMEEN ...................................................................................................................................................................... 11
HOOFDSITE EN OMRINGENDE SITES ...................................................................................................................................... 12
FUNCTIONALITEIT OP MAAT ................................................................................................................................................ 13
INTEGRATIES EN KOPPELINGEN ............................................................................................................................................ 17
INFRASTRUCTUUR EN ONDERHOUDSCONTRACT ....................................................................................................................... 17
MAILCHIMP .................................................................................................................................................................... 18
2
Bestek dd. 30/10/2014
Referentie: 14/004
LOGO’S EN HUISSTIJL ......................................................................................................................................................... 18
V. BIJLAGEN..............................................................................................................................................................20
V.1. OFFERTEFORMULIER................................................................................................................................................... 20
V.2. GEBRUIKSRECHTENMATRIX .......................................................................................................................................... 24
V.3. PAGINASTRUCTUUR.................................................................................................................................................... 25
V.4. ACCOUNT VAN DE VASTGOEDMAKELAAR ........................................................................................................................ 26
V.5. WEGOV ................................................................................................................................................................... 29
3
Bestek dd. 30/10/2014
Referentie: 14/004
I. VOORAFGAANDELIJK
I.1. INLICHTINGEN MET BETREKKING TOT DIT BEST EK
Inlichtingen over dit bestek kunnen uitsluitend opgevraagd worden op volgend adres / via email bij
volgende contactpersoon:
Naam: BIV – Beroepsinstituut van Vastgoedmakelaars
Adres: Luxemburgstraat 16B, 1000 Brussel (België)
Tel: +32 2 505 38 50
Contactpersoon: Frank Damen
E-mail: [email protected]
I.2. WETTELIJK KADER
Koninklijk Besluit van 20 juli 2012 tot bepaling van de regels inzake de organisatie en de werking van het
Beroepsinstituut van Vastgoedmakelaars, in het bijzonder artikel 43.
4
Bestek dd. 30/10/2014
Referentie: 14/004
II. ADMINISTRATIEVE BEPALINGEN
II.1. BESCHRIJVING VAN DE OPDRACHT
Het Beroepsinstituut van Vastgoedmakelaars is een bij wet opgerichte publiekrechtelijke
beroepscorporatie. Wie in België zelfstandig als vastgoedmakelaar wil actief zijn, moet erkend zijn bij het
BIV. Het BIV controleert de toegang tot het beroep, sanctioneert op deontologisch vlak en informeert.
Het Instituut, dat onder de federale wetgeving ressorteert en tweetalig is, communiceert in twee talen.
Gevolg hiervan is dat er twee websites bestaan: www.biv.be (aan Nederlandstalige zijde) en www.ipi.be
(aan Franstalige zijde). Beide sites zullen, afgezien van de taal, voor een groot stuk, maar niet volledig,
identiek zijn aan elkaar.
Het Instituut is erg ambitieus in haar opzet om haar informatieve taak op 21e-eeuwse wijze in te vullen.
Dat moet gebeuren door in te zetten op 3 pijlers: toegankelijkheid, transparantie en personalisering.
Toegankelijkheid: informatieve, gevisualiseerde, leesbare, gestructureerde inhoud die eenvoudig te
raadplegen is op alle toestellen.
Transparantie: we tonen wie we zijn, waarom we er zijn en wat we doen.
Personalisering: we bieden aan elk van onze leden relevante en nuttige inhoud op maat aan in een
gepersonaliseerde omgeving.
Doelstelling van deze nieuwe, gestructureerde en gerichte aanpak is efficiënt en effectief communiceren
en het imago van het BIV en bij uitbreiding de vastgoedmakelaardij in de gewenste richting sturen.
Verschillende communicatiemiddelen hebben hiervoor een zware opfrissing nodig.
De nieuwe website zal centraal komen te staan en zal het allesomvattende platform zijn waar alle
communicatie naar alle doelgroepen te vinden valt en waar naar verwezen wordt vanuit andere media.
5
Bestek dd. 30/10/2014
Referentie: 14/004
II.2. IDENTITEIT VAN DE OPDRACHTGEVER
Beroepsinstituut van Vastgoedmakelaars (BIV)
Luxemburgstraat 16B
1000 Brussel (België)
Ondernemingsnummer: 0267.300.821
II.3. WIJZE VAN GUNNEN
Het BIV wenst in het kader van dit bestek meerdere kostenramingen te verzamelen die ter beoordeling
aan de Nationale Raad zullen worden voorgelegd. De beoordeling van de offertes zal gebeuren op basis
van de gunningscriteria opgesomd onder II.8.
De opdrachtgever behoudt zich het recht voor om met een of meer inschrijvers van zijn keuze te
onderhandelen over alle punten van de ontvangen offertes en/of over dit bestek.
De opdrachtgever behoudt zich het recht voor om zowel af te zien van de gunning of de sluiting van de
opdracht, als om de procedure te herbeginnen, desnoods op een andere wijze.
II.4. PRIJSOPGAVE
De prijs wordt bepaald volgens het principe van de globale prijs. De op te geven prijs is “all-in” en omvat
alle kosten van de inschrijver, met afzonderlijke vermelding van het btw-tarief.
De globale prijs (X) wordt duidelijk weergegeven als het resultaat van de volgende optelsom:
P + (O x 12) = X
→ Een éénmalige, all-in kost voor de ontwikkeling van het project (P)
→ Een maandelijkse, all-in kost voor ondersteuning en onderhoud (O) voor een periode van 12
maanden
II.5. VORM EN INHOUD VAN DE OFFERTE
De inschrijver maakt zijn offerte op in het Nederlands of het Frans.
De offerte wordt opgemaakt op basis van de formulieren die hiertoe voorzien zijn in de
opdrachtdocumenten. Indien de inschrijver zijn offerte opmaakt op andere documenten, draagt alleen hij
de volledige verantwoordelijkheid van de perfecte overeenstemming tussen de documenten die hij heeft
6
Bestek dd. 30/10/2014
Referentie: 14/004
gebruikt en het formulier bij de opdrachtdocumenten. De inschrijver wordt geacht zijn offerte te hebben
opgesteld volgens zijn eigen vaststellingen, bewerkingen, berekeningen en ramingen.
Alle documenten opgesteld of vervolledigd door de inschrijver of zijn gevolmachtigde zijn gedateerd en
door hem ondertekend.
Doorhalingen, overschrijvingen, aanvullingen of wijzigingen, zowel in de offerte als in de bijlagen, die de
essentiële voorwaarden van de opdracht zoals prijzen, termijnen, technische specificaties kunnen
beïnvloeden, moeten eveneens door de inschrijver of zijn gemachtigde ondertekend worden.
II.6. INDIENEN VAN DE OFFE RTE
De offerte moet per aangetekend schrijven worden ingediend en door het BIV ontvangen zijn of
neergelegd op de receptie van BIV, met ondertekening voor ontvangst (gedurende de diensturen: van
maandag tot vrijdag van 8u30 tot 16u00), ten laatste op 5 december 2014.
De offerte moet in een dubbele omslag gesloten zijn.

De binnenste omslag dient de vermelding "OFFERTE BIV-WEBSITE" te dragen.

De buitenste omslag moet geadresseerd zijn aan:
BIV – Beroepsinstituut van Vastgoedmakelaars
t.a.v. de heer Frank Damen
Luxemburgstraat 16B
1000 Brussel
II.7. VERBINTENISTERMIJN
De termijn gedurende dewelke de inschrijver door zijn offerte gebonden blijft, bedraagt 60 kalenderdagen,
te rekenen vanaf de uiterste datum voor ontvangst.
II.8. GUNNINGSCRITERIA
De in dit deel volgende criteria zijn van toepassing bij de gunning van de opdracht. De gunningscriteria
komen in totaal op 100 punten.
7
Bestek dd. 30/10/2014
Referentie: 14/004
Nr.
Beschrijving
Gewicht
1
Kwaliteit van de ontwikkeling en service
45
2
Kostprijs ontwikkeling
20
De inschrijver is ertoe gehouden om op een transparante manier de éénmalige kostprijs voor de
ontwikkeling van het project te vermelden. Bij de toekenning van de punten zal de toekenning
gebeuren op basis van volgende formule:
score dx = 20 x (Pl / Px)
waarbij:
- score dx = gescoorde punten voor inschrijver x
- Pl = de prijs van de laagste geselecteerde en regelmatige inschrijver
- Px = de prijs van inschrijver x
3
Kostprijs onderhoud en ondersteuning
15
De inschrijver is ertoe gehouden om op een transparante manier de maandelijkse kostprijs voor
onderhoud en ondersteuning na ontwikkeling van het project te vermelden. Bij de toekenning van de
punten zal de toekenning gebeuren op basis van volgende formule:
score dx = 15 x (Pl / Px)
waarbij:
- score dx = gescoorde punten voor inschrijver x
- Pl = de prijs van de laagste geselecteerde en regelmatige inschrijver
- Px = de prijs van inschrijver x
4*
Proof of Concept, met minstens een insteek van lay-out, aanpak van
functionaliteiten en toelichting van expertise…
10
5*
Aanpak en wijze van ontwikkeling en communicatie
10
(*) De inschrijver is ertoe gehouden om een omstandige omschrijving / verduidelijking te geven bij elk van
deze gunningscriteria. De opdrachtgever behoudt zich het recht voor om een bijkomende toelichting te
vragen aan de inschrijvers.
II.9. ONREGELMATIGE OF ONVOLLEDIGE OFFERTE
Offertes die niet aan de gevraagde minimumvereisten voldoen, kunnen zonder meer uitgesloten worden.
Indien een offerte onvoldoende informatie bevat en het daarom quasi onmogelijk wordt de offerte
grondig te evalueren, kan deze offerte zonder meer uitgesloten worden.
Op straffe van onregelmatigheid mag de offerte inzake specifieke vereisten niet verwijzen naar algemene
of bijzondere verkoopsvoorwaarden, noch deze vermelden op de keerzijde of in bijlage.
8
Bestek dd. 30/10/2014
Referentie: 14/004
III. CONTRACTUELE BEPALING EN
III.1. LEIDING OVER DE UITVOERING
De leiding over de uitvoering van de diensten zal gebeuren door:
Naam: Frank Damen
Telefoon: +32 2 505 38 50
E-mail: [email protected]
III.2. PRIJSHERZIENINGEN
Voor deze opdracht gelden de volgende prijsherzieningsvoorwaarden:
Jaarlijkse aanpassing aan de index der consumptieprijzen
De onder II.4 vermelde basisprijs per deelnemer zal één keer per jaar worden aangepast aan de kosten van
levensonderhoud. De indexatie gebeurt telkens op de verjaardag van de inwerkingtreding van de
overeenkomst. Deze aanpassing geschiedt op basis van de schommelingen van het indexcijfer van de
consumptieprijzen.
De aangepaste prijs mag niet hoger zijn dan het bedrag verkregen door toepassing van de hiernavolgende
formule: basisprijs per deelnemer vermenigvuldigd met het nieuwe indexcijfer en gedeeld door het
aanvangsindexcijfer.
Het nieuwe indexcijfer is het indexcijfer daartoe berekend en benoemd, van de maand voorafgaand aan
die van de verjaardag van de inwerkingtreding van de overeenkomst.
Het aanvangsindexcijfer is het indexcijfer van de consumptieprijzen van de maand die voorafgaat aan de
maand tijdens welke de opdracht wordt gegund.
III.3. LOOPTIJD
De ontwikkelingsopdracht gaat in op datum van toewijzing en moet beëindigd zijn binnen 6 maanden.
9
Bestek dd. 30/10/2014
Referentie: 14/004
III.4. INTELLECTUELE EIGENDO MSRECHTEN
De ontwikkelde websites en modules zullen volledig en exclusief eigendom zijn van het BIV.
De opdrachtnemer dient het BIV te verdedigen tegen elke aantijging van derden voor overtreding van de
intellectuele rechten die rusten op de geleverde producten of diensten. De opdrachtnemer moet, zonder
beperking van het bedrag, alle betalingen van schadevergoeding, kosten of uitgaven die eruit voortvloeien
en die ten laste van het BIV gelegd worden in een rechtsvordering, die gesteund is op een dergelijke
aantijging, op zich nemen voor zover de opdrachtnemer het toezicht heeft op de verdediging evenals op
de onderhandelingen met het oog op een minnelijke schikking.
De opdrachtnemer verbindt zich ertoe, hetzij voor het BIV het recht te bekomen de betrokken producten
verder te gebruiken, hetzij op zijn kosten de producten te wijzigen of te vervangen teneinde een einde te
maken aan de overtreding zonder echter de fundamentele specificaties van de producten te wijzigen.
10
Bestek dd. 30/10/2014
Referentie: 14/004
IV. TECHNISCHE BEPALINGEN: EEN BESCHRIJVING VAN HET PROJECT
ALGEMENE PRINCIPES
De front-end van de website wordt opgebouwd volgens de meest recente HTML- en CSS-standaarden en
zonder Flash. Als CMS prefereren we WordPress omwille van de laagdrempeligheid en veelzijdigheid van
het platform. WordPress laat toe dat ook minder tech savvy medewerkers zelf in een beschermde
omgeving kleine wijzigingen kunnen brengen aan de informatie in hun vakgebied. Daarnaast biedt WP de
mogelijkheid om onder meer zeer dynamisch met menustructuren te werken, vlot permanente links te
creëren en op intuïtieve wijze testpublicaties uit te voeren. Een ander groot voordeel is de open source
aard van het platform, waardoor er reeds vele functionaliteit bestaat. Aandacht voor security mag evenwel
niet ontbreken.
De ontwikkeling van de hoofdwebsite gaat gepaard met de ontwikkeling van enkele minisites met een zeer
specifiek afgelijnde functionaliteit en een zeer specifiek doel. Onderstaande algemene principes gelden
voor elk van de te ontwikkelen websites.
DESIGN
-
WordPress-templates: te ontwikkelen (bijvoorbeeld: homepage, full-width, right-sidebar, leftsidebar, incl-slider, excl-slider, enz…)
Volledig responsive, mobile first
Bootstrap, jQuery, purecss, …
Navigatie: klassiek (top) of left sidebar (in elk geval responsive)
Kernwoorden stijl en UX: uiterst modern, sleek, elegant en stijlvol, rustig en ademend, niet sec
In lijn met te ontwikkelen huisstijl (zie verder)
Lightweight lettertype genre Proxima Nova, Roboto, Open Sans, Ubuntu… (Voorkeur voor
Googlefont)
Toegankelijkheid voor slechtzienden (font size switch)
Herkenbaarheid middels icoontjes, pictogrammen,…
Print.css voorzien
Uitvoerige browsercompatibiliteit (Chrome, Safari, Firefox en IE)
INHOUDELIJKE AANDACH TSPUNTEN
Naast de nodige vaste pagina’s met waar nodig dynamische inhoud, is er ook een blogfunctie voorzien
voor de aanmaak van posts die samen een soort knowledge base vormen. Pagina’s en posts moeten
voorzien worden van automatisch gegenereerde blokken als “gerelateerd nieuws”, “ook interessant”,
“relevante documenten”, of “geraadpleegde bronnen”. Op posts kan commentaar gegeven worden,
behalve wanneer we die mogelijkheid uitschakelen. We maken de comments niet-anoniem en voorzien
een spamfilter à la captcha. Posts moeten gedeeld kunnen worden via sociale media. Externe links worden
altijd automatisch gedecoreerd met een passend “arrow-out” icoontje. We tonen de datum met de laatste
11
Bestek dd. 30/10/2014
Referentie: 14/004
update van een bepaalde pagina. Te downloaden bestanden worden voorzien van een kort bijvoegsel à la
“Bestandsnaam (123x gedownload, 321kB, extensie)”.
Om dubbele inhoud te vermijden, komt er een taalkeuzeswitch in de header van de site. Langs hier kan de
bezoeker switchen tussen NL, FR en DE. Belangrijk! [NL] verwijst door naar het NL equivalent van de
betreffende pagina op biv.be. [FR] verwijst door naar het FR equivalent van de betreffende pagina op
ipi.be. [DE] verwijst door naar ipi.be/de waar de op dit ogenblik meest geconsulteerde Duitstalige
informatie samengevat te vinden zal zijn samen met de echt essentiële info (1 lange pagina met een met
ankers gelinkte TOC).
ZOEKMACHINEOPTIMALIS ATIE
We zullen permanent aandacht besteden aan een gerichte optimalisatie van biv.be en andere sites op
Google met als doel gevonden te worden en onze stem te laten weerklinken. De website zal
beantwoorden aan een erg uitgebreide lijst gangbare SEO-principes. De developer houdt in het oog dat
alle pagina’s volautomatisch indexeerbaar zijn door de zoekmachines, met uitzondering van de sowieso af
te schermen submappen en de makelaarsaccount. Cruciaal is daarnaast dat de developer correct elke
oude pagina redirect (301) naar het nieuwe equivalent (pagina per pagina, niet op domein- of
folderniveau), bij voorkeur gebruikmakend van een interface waarin het BIV zelf 301-redirects kan
aanvullen. Eveneens is het belangrijk dat onleesbare URLs met parameters een helder, SEO-vriendelijk
alternatief krijgen, cf. volgend voorbeeld (de gemarkeerde URL is de “juiste”):
TOEGANKELIJKHEID
We zijn een publieke instelling en willen daarom zoveel mogelijk de toegankelijkheidsprincipes volgen die
worden opgelijst in de AnySurfer Checklist (http://www.anysurfer.be/nl/in-de-praktijk/checklist).
HOOFDSITE EN OMRINGE NDE SITES
BIV.BE & IPI.BE
De hoofdsites met alle beschikbare informatie.
De developers zetten pagina’s en (nog ongepubliceerde) blogposts op volgens de gevraagde structuur,
navigatie en meta data, die we aanleveren in een document. Omdat we al een enorme hoeveelheid
content hebben, maar ook nog veel content zullen moeten opstellen, verkiezen we een aanpak waarbij we
vanuit het BIV al in een zeer vroeg stadium, gelijktijdig met andere fases in de ontwikkeling, al content in
het CMS kunnen plaatsen. De structuur wordt dus opgezet door de developers, statische content wordt
12
Bestek dd. 30/10/2014
Referentie: 14/004
erin geplaatst door het BIV. De modules en dynamische content worden geïmplementeerd door de
developers.
Pagina’s (onder voorbehoud van wijzigingen: zie bijlage 3)
VASTGOEDSTAGE.BE & S TAGEIMMOBILIER.BE
Algemene principes en pagina-opbouw: gelijkaardig aan biv.be en ipi.be
Het Instituut moet voor de bezoeker onmiddellijk herkenbaar zijn. Het moet duidelijk zijn dat deze sites
niet handelen over de stages tijdens opleidingen aan scholen of Syntra! Wel moet deze minisite zijn
eigenheid hebben. Het doelpubliek is immers anders: in de eerste plaats stagiair-vastgoedmakelaars.
Op deze site vindt de gebruiker onze herkenbare hoofding, de titel, links naar de subpagina’s en de op
Google Maps draaiende zoekmodule die gebouwd opdat stagiairs en stagemeesters elkaar beter kunnen
vinden. Onderaan komt de herkenbare BIV-footer.
Pagina’s (onder voorbehoud van wijzigingen: zie bijlage 3)
MIJNVASTGOEDMAKELAAR.BE & MONAGENTIMMOBILIER.BE
De bestaande redirect wordt weggehaald en we plaatsen op deze urls minisites. Ook hier geldt dat BIV-IPI
onmiddellijk herkenbaar moet zijn (via huisstijl en templates) en er moet een zeer zware focus liggen op
het zoekvak, bijna Googliaans. Hier vindt de gebruiker onze herkenbare hoofding en een titel, gevolgd
door het zoekvak, waaronder de resultaten verschijnen, met links naar de eigen publieke BIV-pagina van
die makelaar, gevolgd door een drietal blokken met rechtstreekse links naar meer informatie op biv.be. Zo
is de site ook meteen geschikt voor mobiel. Onderaan onze gekende footer. De zoekopdrachten zijn via
Google Analytics te tracken.
Pagina’s (onder voorbehoud van wijzigingen: zie bijlage 3)
EBIV.BE & EIPI.BE
Design in overeenstemming brengen met andere websites. Voorlopig enkel front-end werk, back-end
wordt in een latere fase aangepakt. Wel moet het nodige gebeuren om enkele e-learningdata (bv.
gevalideerde cursussen en uren) per makelaar in zijn/haar account weer te geven. Herkenbaarheid is ook
hier belangrijk: herkenbare BIV-hoofding, -styling en -footer!
FUNCTIONALITEIT OP MAAT
De developer ontwikkelt de modules die de websites nodig hebben en voorziet de integratie van zowel de
reeds bestaande als de nog te ontwikkelen software op de websites. Ook ondersteuning en opleiding waar
nodig behoort tot het pakket. De te ontwikkelen code moet volledig GA en GTM-compatibel zijn. We
willen kunnen monitoren en analyseren wat er gebeurt op de site, dus ook wat er gezocht wordt, waar op
13
Bestek dd. 30/10/2014
Referentie: 14/004
geklikt wordt, enz. De URI’s van de resultatenpagina’s kunnen ons bijvoorbeeld een indruk geven waar
naar gezocht werd als deze de zoekparameter bevatten (q=… of search=…).
De beschreven modules zijn ofwel gekoppeld aan bestaande (eventueel mirror)databases of Accessbestanden.
Wat nu volgt is een uitgebreidere uitleg over de benodigde functionaliteit per te ontwikkelen module.
PRIVATE ACCOUNT
Een account voor de vastgoedmakelaar laat elk BIV-lid toe om informatie op maat te raadplegen, te
gebruiken en te wijzigen. Op die manier zetten we een grote stap richting het paperless office, waarbij de
papierwinkel en verzendkosten bij het BIV significant verminderd worden. Tevens zal de makelaar op die
manier dichter bij het Instituut komen te staan en wordt hij meer betrokken bij onze werking. Zie bijlage
voor een uitgebreide functionele beschrijving.
De account haalt data uit verregaand geïntegreerde gegevensbanken die we op dit ogenblik tot onze
beschikking hebben. Die integratie behelst Dolmen, Arco, MailChimp, WordPress, Backoffice Vorming, …
Het BIV moet over de mogelijkheid beschikken om een aantal admintaken uit te voeren. Bijvoorbeeld:
specifieke accounts op zeer eenvoudige wijze uitschakelen, ontoegankelijk maken, custom notifications
plaatsen (naar 1 of meerderen tegelijk), gesterde documenten pushen, events in kalender pushen…
De herkenbaarheid van het BIV die over de verschillende websites uitgewerkt wordt, wordt ook hier
getoond in de header en de footer. De account moet ook heel vlot mobiel toegankelijk zijn – met een
verstandige, responsive layout dus. Bij lancering van de account en voor nieuwe gebruikers moeten er ook
tooltips zijn in de account zelf die de gebruikers wegwijs maken in de verschillende functies, op een vlotte
en luchtige manier - “Take the tour”.
Voor een uitgebreide functionele beschrijving: zie bijlage 4. Voor documentatie over weGov: zie bijlage 5.
ZOEKMODULE VOOR DE H ELE WEBSITE
Algemene zoekmodule die door alle content in de website zoekt. (GA-functioneel)
ZOEK/FILTERMODULE VO OR VORMINGEN
BIV biedt haar leden de mogelijkheid aan om zich permanent bij te scholen. Dit is trouwens een wettelijke
verplichting. Met de professionalisering van het beroep in het achterhoofd, moeten we het gemakkelijk en
intuïtief maken voor de makelaars om zich in te schrijven voor een opleiding. Dit is een essentiële pijler
van professionalisering. De toegang tot de vormingsbackoffice wordt voorzien via API. De insteek van de
module is analoog met de huidige, bestaande module.
Er wordt aan de front-end-gebruiker een kalender getoond waarin alle opleidingen weergegeven zijn en hij
kan beginnen zoeken of filteren om te vinden waar hij naar op zoek is.
14
Bestek dd. 30/10/2014
Referentie: 14/004
Elke opleiding heeft een eigen, afzonderlijke URL voor de detailview-popup van elke entry (met het oog op
Google Analytics monitoring van meest bekeken opleidingen). Inschrijven kan via BIV-site of via site van de
vormingsverstrekker zelf (directe link naar formulier). Na inschrijven krijgt de ingeschrevene idealiter een
bevestigende feedback via mail (inclusief een link om zich terug af te melden voor de opleiding) en in de
account en ontvangt BIV in de backend een melding van het ingeschreven lid.
Vormingen in zoekmodule worden automatisch gedecoreerd met rich snippets voor events.
ZOEK/FILTERMODULE VO OR TUCHTRECHTSPRAAK
Om de tuchtwerking van het BIV transparanter te maken, tonen we een raadpleegbare selectie van
tuchtuitspraken op de website.
De data hiervoor komen uit Access-files. We willen niet per definitie alle uitspraken tonen en dus mag het
systeem enkel resultaten weergeven waarbij de variabele in kolom “site”=true. Wat “site”=false is, mag
nooit weergegeven (kunnen) worden in de zoekresultaten. Een lees meer-knop bij het zoekresultaat
brengt een popup naar boven met meer gedetailleerde informatie. Geavanceerd zoeken moet mogelijk
zijn op alle velden. Afzonderlijke URLs worden voorzien voor de detailview van elke entry (met het oog op
Google Analytics monitoring).
ZOEK/FILTERMODULE VO OR DIENST OPSPORING
Om de werking van het Instituut wat betreft de aanpak van illegale makelaardij meer in de verf te zetten,
moeten de afgeronde dossiers van de Dienst Opsporing geraadpleegd kunnen worden. Deze insteek is
analoog aan die van de tuchtrechtspraakmodule. Ook de werking van de dienst opsporing is cruciaal voor
de professionalisering van het beroep, want deze dienst spoort de illegale makelaars op en vervolgt hen.
Ook deze data komen uit een Access-file, een andere dan de tuchtdata. Een lees meer-knop leidt opnieuw
naar een popup met meer gedetailleerde informatie. Geavanceerd zoeken moet mogelijk zijn op alle
velden. Afzonderlijke URLs worden voorzien voor de detailview van elke entry (met het oog op Google
Analytics monitoring).
ZOEK/FILTERMODULE VO OR LEDENLIJST
Mensen moeten nagaan of hun makelaar of syndicus wel erkend en dus legaal bezig is. Dat gebeurt op dit
ogenblik ook al heel veel. Daarom hebben we een moderne zoekmachine nodig om mensen door onze
data te laten zoeken.
De database wordt door RealDolmen beheerd. De input moet eender wat in 1 inputveld kunnen zijn (1
term, meerdere termen, …). Eventueel (indien nodig blijkt) kan er geavanceerd/specifiek zoeken voorzien
worden met verschillende afzonderlijke velden met elk een eigen type input. Er komt een analoog systeem
voor rechtspersonen, in 1 en dezelfde module, maar dan natuurlijk niet met “naam” en “voornaam” in de
resultaten. Geheel volgens de best practices moeten zoekinputs/-resultaten op te volgen zijn in Google
15
Bestek dd. 30/10/2014
Referentie: 14/004
Analytics (via parameter in url, bv. ?q=543210 of ?q=naam). Bedoeling is om input die leidt tot “niet
gevonden” aan te reiken aan de dienst opsporing.
Doorklikken op een zoekresultaat leidt naar de eigen pagina van het BIV-lid met gegevens op de biv-site
zelf (bv. biv.be/erkende-vastgoedmakelaars/543210). Deze pagina’s worden automatisch gegenereerd en
elke pagina wordt gevuld op basis van de gegevens die we hebben voor de betreffende BIV-nummer. Ook
een Google Maps-kaartje met een punaise op de hoofdvestiging wordt automatisch gegenereerd op elke
lidpagina. Op deze pagina staan ook eventuele vacatures die de makelaar in kwestie op onze website wil
tonen. Deze input wordt in de account gegeven en automatisch verwerkt. Op www.biv.be/erkendevastgoedmakelaars/vacatures-in-het-vastgoed worden alle vacatures gebundeld in een handige
zoekmodule waarbij elke vacature verwijst naar de pagina van het erkende lid waar de vacature staat.
De wijze van integratie van deze module op zowel biv.be en ipi.be als op mijnvastgoedmakelaar.be en
monagentimmobilier.be is te bespreken.
ZOEKMODULE VOOR STAGIAIRS EN STAGEMEESTE RS (VASTGOEDSTAGE.BE )
Stagiairs zijn op zoek naar stagemeesters die hen begeleiden in hun stage. Het is niet altijd gemakkelijk om
een vrije én geschikte stagemeester te vinden. Daarom ontwikkelen we een zoekmodule waarbij de
stagemeester zichzelf een bepaalde periode kenbaar maakt en waar de stagiair op zoek kan gaan naar de
voor hem of haar geschikte stagemeester. De tijdelijkheid van het zichtbaar zijn moet er voor zorgen dat er
enkel stagemeesters online staan die echt open staan voor een stagiair.
De input aan makelaarszijde voor deze zoekmodule komt rechtstreeks uit de accounts, namelijk uit wat er
ingevoerd is onder het kopje “Stagemeesterschap”. Dit is meer in detail beschreven in het kopje Private
Account hierboven. Elke stagemeester die open staat voor een stagiair, krijgt een “punaise” op het Google
Map-kaartje. Op deze punaise staan de nodige gegevens zoals de deelkolommen waarvoor hij
stagemeester mag zijn, het optionele bericht dat de makelaar kan achterlaten, het emailadres en het
telefoonnummer om contact op te nemen en automatisch de link naar eigen pagina met gegevens op de
biv-site (bv. biv.be/erkende-vastgoedmakelaars/543210). Géén externe links.
Aan frontend-zijde op vastgoedstage.be staat de zoekmodule zelf incl. Google Map met, na een
zoekopdracht, de relevante punaises.
“RELATED LINKS” EN “RELATED FILES” MET STER
Blokken waarin verwezen wordt naar ofwel related links ofwel related files:
-
-
“Related links”
o artikels die met hetzelfde onderwerp te maken hebben
o geen extra functionaliteit
o mogelijks bestaat iets gelijkaardig al
“Related files”
o formulieren, documenten, wetsbronnen, …
o moeten geopend kunnen worden door iedereen
16
Bestek dd. 30/10/2014
Referentie: 14/004
o moeten voorzien zijn van een ster die enkel zichtbaar is en aangeklikt kan worden door wie
ingelogd is in zijn of haar account
o moet voorzien worden van bestandsgrootte en -extensie
o event tracking op sterretje per file/categorie
 zowel aangeklikt als uitgeklikt
 te weten komen aan welke documenten het meeste waarde wordt gehecht
o overzicht van aantal downloads en aantal bookmarks voor BIV (in een back-end of midend)
o



blokje al dan niet toe te voegen per post/pagina
handmatig te kiezen per post/pagina: kiezen uit database van bestanden
open voor suggesties
INTEGRATIES EN KOPPELINGEN
De webdeveloper voorziet de nodige koppelingen met gesynchroniseerde databases die reeds in gebruik
zijn. Dit gebeurt in samenwerking met een derde partij, die voor de synchronisatie van de data instaat.
Samen met deze derde partij wordt op een veilige manier toegangsbeheer (access control management)
en gebruikersbeheer (identity management) geïmplementeerd.
Ter voorlopige informatie vindt u in de bijlagen:
-
een richtinggevende, maar niet beperkende gebruiksrechtenmatrix
specificaties van het weGov-platform (OAuth 2.0)
INFRASTRUCTUUR EN ON DERHOUDSCONTRACT
De hosting van de website ligt vandaag bij OpenMinds en blijft daar tot nader order.
Onderhoudscontract of Intercompany-agreement (SLA)
Het onderhoudscontract heeft tot doel de goede werking van het systeem in stand te houden en
permanente ondersteuning te bieden aan de beheerder.
De inschrijver stelt in zijn offerte een type onderhoudscontract voor dat onderhoud van het project omvat.
In het voorstel van onderhoudscontract worden de volgende zaken vermeld:
-
het voorwerp van het onderhoudscontract
-
de duur, uitbreidingsmodaliteiten, prijsherziening
17
Bestek dd. 30/10/2014
Referentie: 14/004
-
het voorziene preventief en correctief onderhoud
-
tussenkomsttermijnen en –periode overeenkomstig de eisen van het bestek
-
vorm van technische bijstand en ondersteuning: telefonisch, e-mail, ticketsysteem
De prijs van het onderhoud behoort tot de gunningscriteria.
MAILCHIMP
We migreerden recent onze data van het programma Addemar naar MailChimp. Hier hebben we nood aan
een set vlot bruikbare, flexibel aanpasbare templates in overeenstemming met de huisstijl (zie verder). We
willen op een professionele en efficiënte manier mailings uitsturen die kwalitatief zijn en die weinig
prutswerk vragen. Om onze content op één plaats te kunnen beheren, moet de mailing verwijzen naar
onze website.
Via de RSS-feed van de op te zetten blog, beschikken we over de mogelijkheid om artikels van de website
(waar de artikels volledig te lezen zijn en waar ze geschreven worden) te pushen naar de mailings, volledig
of met een “lees meer”-knop die naar het artikel in kwestie op de website verwijst. We gebruiken
dynamische mergetags ten volle om de mail persoonlijk te maken.
De mailings worden vormgegeven conform de te ontwikkelen huisstijl, zijn eenvoudig in gebruik en
geschikt voor RSS-input wanneer nodig. We hebben meerdere lopende mailingcampagnes: BIV-Mail, BIVFlash, BIV-Essentials en eventueel BIV-Hello.
Daarnaast ontwikkelt de webdeveloper een module waarmee we op de webpagina waar de biv-mails
getoond worden, statistieken kunnen/willen tonen. Dit verloopt via slimme API-calls die in een
overzichtelijke view worden gegoten. Ook in Excel worden er in samenspraak met het Instituut enkele
rapporten opgezet om uitvoerig de e-mailcampagnes te kunnen rapporteren en analyseren via API.
LOGO’S EN HUISSTIJL
Een logo voor BIV-Mail, BIV-News, BIV-Flash, BIV-Essentials en BIV-Hello moet de herkenbaarheid van deze
communicatiemiddelen vergroten. Om redenen van endorsement is de basis van elk logo telkens het BIVlogo; dit hoeft niet herontwikkeld te worden. Eventueel kan dit wel worden opgefrist, maar de
herkenbaarheid moet absoluut blijven.
De ééntalige logo’s worden gebruikt bij de betreffende taal. Toch moeten er ook tweetalige logo’s zijn.
We hebben nood aan een herkenbare huisstijl voor alle communicatiemediums:
-
Website
BIV-Mail ,BIV-Flash, BIV-Essentials
18
Bestek dd. 30/10/2014
-
Referentie: 14/004
BIV-News
Jaarverslag papier/online
Brieven
Persberichten
Banners en presswalls
Brochures en folders
E-mail-handtekeningen
…
19
Bestek dd. 30/10/2014
Referentie: 14/004
V. BIJLAGEN
V.1. OFFERTEFORMULIER
OFFERTE VOOR DE OPDRACHT MET ALS VOORWERP ‘HET ONTWIKKELEN VAN EEN BIV-WEBSITE’.
BELANGRIJK: DIT FORMULIER DIENT VOLLEDIG TE WORDEN INGEVULD EN ONDERTEKEND DOOR
DE INSCHRIJVER. ALLE BEDRAGEN MOETEN ZOWEL IN CIJFERS ALS VOLUIT GESCHREVEN
WORDEN OPGEGEVEN.
Aanbieder:
Natuurlijke persoon
Ondergetekende (naam en voornaam)
Hoedanigheid of beroep
Nationaliteit
Woonplaats (volledig adres)
OF (open laten wat niet van toepassing is)
Vennootschap
De vennootschap (benaming, rechtsvorm)
Vertegenwoordigd door ondergetekende(n)
Ondernemingsnummer
Nationaliteit
Maatschappelijke zetel (volledig adres)
(De gemachtigden voegen bij hun offerte de authentieke of onderhandse akte waaruit hun bevoegdheid blijkt of
een gewaarmerkt afschrift van hun volmacht).
Telefoon
Fax
E-mail
Contactpersoon
20
Bestek dd. 30/10/2014
Referentie: 14/004
Verbindt zich tot:
Algemene inlichtingen
Inschrijvingsnummer bij de RSZ:
BTW nummer (alleen in België):
Betalingen
De betalingen zullen geldig worden uitgevoerd door overschrijving op rekeningnummer
..................................................................... van de financiële instelling .................................................
geopend op naam van ……………………………………...........…………...........…………………….……………….…………….
Bijgevoegde documenten
Bij deze offerte worden de documenten gevoegd, gedateerd en ondertekend, die volgens het bestek van deze
opdracht moeten of mogen worden bijgevoegd, in het bijzonder ter invulling van de gunningscriteria voorzien
in II.8.
21
Bestek dd. 30/10/2014
Referentie: 14/004
Website
Ontwikkeling (P):
(in cijfers, exclusief btw)
……………………………
en
(in letters, exclusief btw)
………………………………………………………………………………………………
Ondersteuning en onderhoud (O):
(in cijfers, exclusief btw)
…………………………… /maand
en
(in letters, exclusief btw)
………………………………………………………………………………………………
Totaal: P + (O x 12) = X
(in cijfers, exclusief btw)
……………………………
en
(in letters, exclusief btw)
………………………………………………………………………………………………
(Alle bedragen moeten zowel in cijfers als voluit geschreven worden opgegeven.)
Inventaris
(Overzicht van de
prijselementen per
onderdeel)
22
Bestek dd. 30/10/2014
Referentie: 14/004
Gedaan te …………………………………………………………………….. op …… / …… / 2014,
De inschrijver,
Naam en voornaam
Functie
Handtekening
Er is geen beroep mogelijk op mogelijke vormgebreken, fouten of leemten (artikel 99 van het koninklijk
besluit van 8/1/1996).
23
Bestek dd. 30/10/2014
Referentie: 14/004
V.2. GEBRUIKSRECHTENMATRIX
Onderstaande tabel is richtinggevend opgevat en is niet beperkend.
bemiddelaar / syndicus / bemiddelaar en syndicus
deelkolom makelaar
(een van deze)
statuut makelaar
(meerdere mogelijk)
admin
titularis
stage
meester
aanvullende rechten
stagiair
weggelaten
geschorst
geschrapt
titularis
accountmodules
-
vorming (BO Vorming)
rwxd
rwx
rwx
rwx
r
r
-
e-learning (eBIV/eIPI)
rwxd
rwx
rwx
rwx
r
r
-
documenten (starred-WP)
rwxd
rwx
rwx
rwx
r
r
-
kalender (custom)
rwxd
rwx
rwx
rwx
r
r
-
dossiers (arco docroom)
rwxd
rwx
rwx
rwx
r
r
-
stagemeesterschap (custom)
rwxd
rwx
-
-
-
-
-
ik zoek een stagiair
rwxd
rwx
-
-
-
-
-
mijn stagiairs
rwxd
rwx
-
-
-
-
-
mijn stage (arco)
rwxd
r
r
rwx
r
r
-
kadasterfinder
rwxd
r
r
r
-
-
-
contactgegevens (custom)
rwxd
rwx
rwx
rwx
rwx
rwx
-
status
bijdrage
verzekering
deelkolommen
stagemeestersschap
mededelingen
rwxd
r
r
r
r
r
24
-
Bestek dd. 30/10/2014
Referentie: 14/004
V.3. PAGINASTRUCTUUR
Onderstaande lijst is richtinggevend opgevat en is niet beperkend.
/0/ Homepage
/1/ Over ons
/1.1/ Waarom het BIV?
/1.2/ Wettelijke taken
/1.3/ Organisatie BIV
/1.4/ Diensten (Opsporing, Kamers, Comm, Vorming,
Financieel en Logistiek)
/1.4.1/ Illegale makelaardij
/2/ Ledenlijst
/2.1/ Pagina per lid
/2.2/ Vacatures bij BIV-erkende VGM
/3/ Tuchtrechtspraak
/4/ Thematische informatie
/4.1/ Witwaswetgeving
/4.2/ Nieuwe wet mede-eigendom
/4.3/ Deelkolommen
/4.4/ Weglatingen
/4.5/ …
/5/ Het beroep van vastgoedmakelaar
/5.1/ Vastgoedmakelaar worden
/5.1.1/ België en het buitenland
/5.1.2/ EU : vrij verkeer van diensten / vrijheid van vestiging
/5.2/ De Plichtenleer
/5.3/ Vorming
/5.3.1/ Lijst van permanente vormingscentra
/5.3.2/ Opleidingsverplichting
/5.3.3/ E-learning
/5.3.4/ FAQ vorming
/5.4/ Verzekering
/5.5/ Modeldocumenten en -formulieren
/5.6/ Bijdrage
/6/ Communicatie
/6.1/ BIV-Mail
/6.2/ BIV-News
/6.3/ BIV-Flash
/6.4/ BIV-Jaarverslag
/6.5/ Pers
/6.6/ Artikels (Blog)
/7/ Account/Login/Dashboard
/8/ De stage
/9/ De consument en het BIV
/9.1/ De VGM
/9.2/ Deontologische verplichtingen van de VGM
/9.3/ FAQ Consument
/9.4/ Klacht neerleggen
/10/ Contacteer ons
/11/ CEPI
/12/ Bestekken
/13/ Links
/14/ Disclaimer
/15/ Sitemap
VASTGOEDSTAGE.BE
STAGEIMMOBILIER.BE
MIJNVASTGOEDMAKELAAR.BE
MONAGENTIMMOBILIER.BE
/0/ Homepage
/1/ Terminologie
/2/ FAQ Stage
/3/ Documenten
/4/ Stagetraject
/0/ Homepage
BIV.BE
IPI.BE
25
Bestek dd. 30/10/2014
Referentie: 14/004
V.4. ACCOUNT VAN DE VASTGOEDMAKELAAR
Hier volgt een functionele beschrijving van de eigen account van elke vastgoedmakelaar die
online zal kunnen geraadpleegd worden via biv.be/account.
Na het inloggen komt de makelaar in zijn eigen account terecht. Om te navigeren, verschijnt er
een menu met de verschillende links met notifications indien van toepassing, min of meer zoals in
de afbeelding hieronder.
DASHBOARD – EEN SNEL OVERZICHT V AN DE BELANGRIJKSTE GEGEVENS UIT FICHES
Status lidmaatschap
-
Bijdrage jaar x (ok; hoeveel te betalen en voor wanneer; niet ok)
Verzekering (ok; in behandeling; niet ok)
Deelkolommen (bemiddelaar, syndicus, beide)
Stagemeestersschap per deelkolom (zichtbaar; niet zichtbaar; geen stagemeester)
Mededelingen (handmatig ingevoerd door BIV)
Overview fiches
-
Mijn Vorming (laatst gevolgd, gevalideerde uren, gevalideerde uren e-learning)
Mijn Documenten (laatst gesterde documenten, nieuwe belangrijke doc beschikbaar)
Mijn Kalender (komende evenementen)
Mijn Dossiers (recentste briefwisseling)
Kadasterfinder (activiteit in kadasterfinder)
-
Mijn Stagedocumenten
FICHES
VORMING
-
Vormingen waarop inschrijving is gebeurd met “aankomende vormingen”
Reeds gevolgde vormingen met afgeleverde attesten en behaald aantal uren
26
Bestek dd. 30/10/2014
Referentie: 14/004
DOCUMENTEN
-
ge”ster”de documenten: doorheen de site kan de makelaar documenten en formulieren die
hij relevant acht “starren” en ze zo steeds in zijn account snel terugvinden
wij moeten indien nodig écht belangrijke documenten hier ook in kunnen pushen met bv. een
alerticoontje in het rood
sterretje in deze eigen lijst (of op de site) uitvinken = verwijderen uit de eigen lijst
KALENDER
-
Push vanuit BIV: interessante gebeurtenissen, evenementen, oproepingen…
Aankomende vormingen en te valideren uren voor die vorming indien gevolgd
Data van procedures en oproepingen voor Kamers
Ook zelf aan te vullen door vgm (bv. data uit oproepingsbrief of voor wat dan ook)
DOSSIERS
-
Data van procedures, oproepingen
Kopies van documenten en correspondenties die we over de makelaar hebben
Integratie met DocRoom van Arco vereist (www.arco.be)
STAGEMEESTERSCHAP
-
Switch actief/niet actief moet uit dolmenfiche gehaald worden (BIV moet deze blok voor
makelaars kunnen in- en uitschakelen)
Ik zoek een stagiair
-
-
-
-
Vinkje “ik zoek op dit ogenblik een stagiair” (voorwaardelijk beschikbaar: enkel aanvinkbaar
wanneer uit de database blijkt dat de makelaar een (bijkomende) stagiair mag aannemen)
o Ingeschakeld = gegevens automatisch publiek en op kaartje op vastgoedstage.be
o Melding in “nieuwsfeed” op vastgoedstage.be: X is op zoek naar een stagiair
o Uitgeschakeld = gegevens niet meer tonen en melding X is niet meer op zoek naar een
stagiair
Indien vorig vinkje uitgevinkt, blijft daaropvolgende (specifiekere) keuze grijs, indien het
ingeschakeld wordt, wordt onderstaande invulbaar (vorige invulling wel onthouden)
Vinkje “bemiddelaar”, vinkje “syndicus”, vinkje “bemiddelaar en syndicus” (uitgrijzen wat niet
mogelijk is obv statuut stagemeester)
o Dit is/zijn de deelkolom(men) voor welke activiteit de vgm een stagiair zoekt
Keuzemogelijkheid: hoe lang ingeschakeld te houden (1 week, 2 weken of 3 weken)
o Doel hiervan: getoonde data up to date te houden
o Notification als termijn aan het verstrijken is
Optioneel: invoerveld voor bericht
o In geen geval mogen ergens externe links ingevoerd kunnen worden.
Mijn stagiairs
27
Bestek dd. 30/10/2014
Referentie: 14/004
Documenten, formulieren, … die betrekking hebben op een lopende stage komen hier.
MIJN STAGE
-
Enkel voor stagiairs
Online dagboek en uploadmodule (integratie Arco DocRoom)
Andere documenten/formulieren beschikbaar maken
CONTACTGEGEVENS
-
-
Velden automatisch inlezen en tonen
Te wijzigen door de makelaar indien nodig
Verzendknop verstuurt data, bijvoorbeeld via mail naar [email protected] en [email protected]
o Regex ter verificatie van ingevoerde gegevens (liefst nog voor insturen)
o 1 adres is de echte mailbox, de andere is de forward naar dezelfde mailbox
o De veranderde velden worden in deze mail aangeduid met sterretje of “(gewijzigd)”.
o Inputstijl is vrij, outputstijl voor het gemak van collega’s in overeenstemming met hun
werkmodule
Alternatief: de proxy benutten die ook voor andere data een tussenstation zal zijn
BLOKJE MET TELEFOONNUMMER HOTLINE
Uitsluitend ter kennisgeving, want de hotline is enkel een dienst voor de vastgoedmakelaar.
28
Bestek dd. 30/10/2014
Referentie: 14/004
V.5. WEGOV
OAuth 2.0, OpenIdConnect, UMA
weGov Authorization Server is een realisatie van die 3 officiële standaarden voor beveiliging van persoonsgegevens,
applicaties en resources.
OAuth 2.0
OAuth 2.0 of Open Authentication (v 2.0) is een standaard bedoelt voor de autorisatie van client toepassingen.
Een client applicatie kan toegang krijgen tot een bepaalde resource via de account van een gebruiker van die
resource. De client hoeft de gebruikersgegevens niet te kennen (gebruikersnaam / wachtwoord). De gebruiker geeft
toestemming aan de client om de resource te gebruiken. De eigenlijke toegang tot de beveiligde resource wordt
geregeld via de uitwisseling van beveiligde tokens (JWT) via een beveiligde verbinding (SSL).
Een autorisatie aanvraag verloopt als volgt:
•
De client toepassing stuurt een aanvraag naar de Authorization Server. De client vraagt enkele ‘scopes’ aan.
Scopes zijn hooflettergevoelige strings die een bepaald onderdeel van de API (resource) afbakenen .
•
De gebruiker wordt omgeleid naar de login pagina van de Authorization Server. Hij meldt aan bij de
authorization Server.
•
De gebruiker wordt omgeleid naar een consent pagina. De aangevraagde scopes worden in een lijst
weergegeven (en kunnen aan en uit gevinkt worden). De gebruiker geeft op deze manier toestemming aan de
client applicatie om de resource te gebruiken.
•
De client applicatie krijgt van de Authorization Server een Accesstoken terug. Het Accesstoken is een
geëncrypteerd JWT (JSON Web Token). De toepassing heeft dit token nodig om een beveiligde resource te
gebruiken. De Resource Server controleert de geldigheid van het Accesstoken en antwoordt op gepaste
manier op de aanvraag.
29
Bestek dd. 30/10/2014
Referentie: 14/004
Authorization
server
Client
Resource
Server
Request access token & authentication
Request access token (authorization grant)
Access & refresh token
Request resources
Access token
Protected resource
Invalid access token & refresh
Access token
Invalid token error
Refresh token
Access token (& refresh)
Figuur 1: OAuth 2.0 Basis Sequentie
OAuth 2.0 heeft enkele vereisten
•
SSL: de communicatie tussen client en Authorization Server verloopt over een beveiligde verbinding.
•
De client is gekend (door registratie) bij de Authorization Server
OpenIdConnect
Een uitbreiding op OAuth 2.0. Open Authentication zegt in principe niks over de gebruiker. Het omvat enkel waar een
client toegang tot krijgt op een bepaalde resource server. OpenIdConnect definieert een nieuw OAuth 2.0 token
(OpenId Token) dat profieldata van de gebruiker bevat.
Om een OpenId Token te verkrijgen moet bij de autorisatie aanvraag enkel de scope ‘openid’ worden meegegeven.
De Authorization Server antwoordt op de aanvraag met een OAuth Accesstoken en een OpenId Token.
Het OpenId Token bevat claims over het gebruikersprofiel. Een ‘claim’ is de combinatie van een sleutel en een
waarde, bvb. ‘naam:Jan’.
UMA 1.0
De UMA specificatie is momenteel nog in ‘draft’ maar wordt waarschijnlijk officieel vanaf februari 2015.
30
Bestek dd. 30/10/2014
Referentie: 14/004
UMA is een uitbreiding op OAuth 2.0 waardoor het mogelijk wordt om externe resources te beveiligen via een zelfde
Authorization Server. De beveiligde resources zijn net als de clients gekend door de Authorization Server. De
Authorization Server kan tokens uitgeven voor zijn eigen resources alsook voor externe (niet-WeGov) resources
waartoe clients toegang willen.
De exacte werking van UMA is buiten de scope van dit document.
Praktisch
weGov Authorization Client
weGov Authorization Client is een .NET 4.5 klasse bibliotheek die speciaal ontwikkeld is om op een eenvoudige
manier beveiligde tokens aan te vragen aan de weGov Authorization Server.
In dit voorbeeld wordt enkel OAuth 2.0 en OpenIdConnect belicht. UMA is hier bijna niet van toepassing.
Client Registratie
De client applicatie is gekend door de Authorization Server met minimaal de volgende parameters
•
ClientId: unieke identifier voor de client (aangemaakt door de Authorization Server bij registratie)
•
ClientSecret: unieke key per client (aangemaakt door de Authorization Server bij registratie)
•
RedirectUri: URL binnen de clientapplicatie waarnaar de Authorization Server tokens of eventuele
foutboodschappen zal sturen. De URL staat vooral geregistreerd voor validatie doeleinden.
De client kent zijn eigen clientid en clientsecret.
Authorization Server Configuratie (UMA)
De UMA standaard zegt dat iedere Authorization Server info moet verstrekken over de adressen van de verschillende
endpoints, token formaat, … De configuratie is publiek toegankelijk op http://[AuthorizationServer -domain]/umaconfiguration/ in JSON formaat.
weGovAuthorizationClient maakt gebruik van deze configuratie om te weten te komen waar de aanvragen naartoe
moeten worden gestuurd.
31
Bestek dd. 30/10/2014
Referentie: 14/004
{
"version": "1.0",
"issuer": "weGovID",
"pat_profiles_supported": "bearer",
"aat_profiles_supported": "bearer",
"rpt_profiles_supported": "bearer",
"pat_grant_types_supported": "client_credentials",
"aat_grant_types_supported":
"authorization_code,client_credentials,password,implicit",
"claim_profiles_supported": "openid",
"user_endpoint":
"http://localhost/weGov.Authorization.Web/AuthorizationCore/consent",
"user_info_endpoint":
"http://localhost/weGov.Authorization.Web/AuthorizationCore/userinfo",
"token_endpoint":
"http://localhost/weGov.Authorization.Web/AuthorizationCore/token",
"introspection_endpoint":
"http://localhost/weGov.Authorization.Web/AuthorizationCore/introspection",
"permission_registration_endpoint":
"http://localhost/weGov.Authorization.Web/AuthorizationCore/permissionregistration",
"rpt_endpoint":
"http://localhost/weGov.Authorization.Web/AuthorizationCore/rpt",
"authorization_request_endpoint":
"http://localhost/weGov.Authorization.Web/AuthorizationCore/request_authori
zation",
"oauth_authorization_endpoint":
"http://localhost/weGov.Authorization.Web/AuthorizationCore/authorize",
"logout_endpoint":
"http://localhost/weGov.Authorization.Web/AuthorizationCore/logout"
}
Figuur 2 voorbeeld UMA Configuratie
Tokens verkrijgen
Om toegang te krijgen tot de weGov API’s heeft de client applicatie een accesstoken nodig. Als de client de identiteit
van de gebruiker wil kennen, heeft hij een OpenId token nodig. Al deze tokens kunnen op verschillende manieren
(flows) worden aangevraagd
•
Authorization Code Flow: de client krijgt eerst een authorization code (die slechts 1x kan worden gebruikt).
Die code kan worden ingewisseld voor tokens.
•
Implicit Flow: bedoelt voor JavaScript clients. De client doet een aanvraag en krijgt meteen tokens terug.
•
Password Credential Flow: de client kent de gebruikersnaam en passwoord van de weGov-gebruiker.
•
Client Credential Flow: er worden tokens uitgegeven aan de hand van clientid en clientsecret.
In de meeste gevallen wordt Authorization Code Flow gebruikt
32
Bestek dd. 30/10/2014
Gebruiker
Referentie: 14/004
Authorization
Server
Client
Autorisatie aanvraag
Omleiden naar login pagina
Aanmelden met gebrukersnaam & wachtwoord
Omleiden naar consent pagina
Toestemming (consent)
Authorization Code
Aanvraag tokens (met Authorization Code)
Tokens
Figuur 3: OAuth 2.0 Authorization Code Flow
De aanvraag voor een Authorization Code begint met een GET Request naar het OAuthAuthorizationEndpoint. De
parameters worden als QueryString meegegeven. OAuthClient (onderdeel van weGov. Authorization.Client) bevat
een methode om de juiste URI op te stellen.
OAuthClient client = new OAuthClient(new
Uri(System.Configuration.ConfigurationManager.AppSettings["UMAConfig"]));
string requestUri = await client.CreateAuthorizationCodeRequestUriAsync("6",
"rsclientsecret", "http://localhost/redstart.web/account/wegovidredirect/", new
string[] { "openid", Constants.StandardScopes.authz, "updateprofile" });
return Redirect(requestUri);
Figuur 4: Aanvraag Authorization Code
•
Er wordt een nieuwe instantie van OAuthClient aangemaakt. De URI naar de UMA-Configuratie kan worden
opgegeven. De URI is hier terug te vinden in web.config (of app.config)
•
CreateAuthorizationCodeRequestUriAsync heeft als argumenten clientid, clientsecret, redirecturi en een
array van geldige scopes. Aan de hand hiervan wordt de juiste URI opgesteld.
requestUri heeft hier als waarde: http://ltsfi0002.cibvivo.local/weGov.Authorization.Web/AuthorizationCore/authorize?response_type=code&client_id=6&client_
secret=rsclientsecret&redirect_uri=http%3A%2F%2Flocalhost%2Fredstart.web%2Faccount%2Fwegovidred
irect%2F&scope=openid+http%3A%2F%2Fdocs.kantarainitiative.org%2Fuma%2Fscopes%2Fauthz.json+up
33
Bestek dd. 30/10/2014
Referentie: 14/004
dateprofile
Deze URI bevat alle parameters die nodig zijn om een geldige request uit te voeren.
•
Scope ‘http://docs.kantarainitiative.org/uma/scopes/authz.json’ (toegevoegd door
Constants.StandardScopes.authz) is verplicht. Deze scope zorgt ervoor dat de client applicatie een
accesstoken zal krijgen.
•
Scope ‘openid’ zorgt ervoor dat de Authorization Server een openidtoken aanmaakt met claims over de
gebruiker zijn identiteit.
•
Scope ‘update_profile’ is een scope die gekend is door weGov. De scope zorgt ervoor dat de client applicatie
methodes van de weGov API kan gebruiken om het profiel van de gebruiker te updaten. (‘update_profile’ is
hier fictief)
•
De gebruiker wordt omgeleid naar de Authorization Server. Als hij nog niet eerder heeft aangemeld, zal eerst
de login pagina getoond worden en daarna de consent pagina.
De Authorization Server zal de gebruiker omleiden naar de redirectUri van de client applicatie. De geldige
Authorization Code wordt als QueryString parameter meegegeven:
http://localhost/redstart.web/account/wegovidredirect/?code=97621d95-e497-43d9-a889-27d7ed1a7982
Indien er fouten opgetreden zijn (bvb. een ongeldig clientid of clientsecret, ongeldige scopes, …), worden parameters
‘error’ en ‘error_description’ meegegeven. Hun waarde is conform aan de OAuth 2.0 specificaties. Het is aan de client
applicaties om deze fouten correct te behandelen en eventueel de gebruiker op de hoogte te stellen.
De ontvangen Authorization Code (parameter ‘code’), kan nu worden gebruikt om de juiste tokens aan te vragen.
Hiervoor moet een POST Request naar het TokenEndpoint van de Authorization Server worden gestuurd.
string code = Request.QueryString["code"];
OAuthClient client = new OAuthClient(new
Uri(System.Configuration.ConfigurationManager.AppSettings["UMAConfig"]));
var response = await client.GetAuthorizationCodeGrantAsync(code,
"http://localhost/redstart.web/account/wegovidredirect/", "6");
Figuur 5: Token Request
Aan methode GetAuthorizationCodeGrantAsync wordt de code, de redirecturi en de clientid meegegeven.
RedirectURI en ClientId worden als validatie gebruikt.
De response returnvalue is van het type OAuthTokenResponse en bevat verschillende properties.
•
AccessToken: het accesstoken om de weGov API’s aan te spreken.
•
OpenIdtoken: het openid token bevat de claims over het gebruikersprofiel van de aangemelde gebruiker. Deze
property heeft enkel een waarde als de ‘openid’ scope is aangevraagd.
•
Refresh: een refreshtoken. Tokens hebben een beperke levensduur. Als een token vervallen is, kan een nieuw
aangevraagd worden door middel van een refreshtoken. Een refreshtoken heeft een langere levensduur.
•
TokenType: zal altijd ‘bearer’ zijn
•
ExpiresIn: Tijdspanne waarbinnen de tokens geldig zijn.
•
Scope: de aangevraagde scopes
34
Bestek dd. 30/10/2014
Referentie: 14/004
•
State: optionele waarde die aan het begin van een authorization request kan worden meegegeven door de
client. De client kan deze waarde bij het ontvangen van de tokens controleren en zo de geldigheid bepalen.
•
Error: Enkel ingevuld als er fouten zijn opgetreden. De waarde komt overeen met de voorgeschreven waardes
in de OAuth 2.0 specificaties
•
Error_Description: meer info omtrent de foutcode
JWT
Tokens worden verstuurd als versleutelde JWT’s (JSON Web Token). Ze zijn dus niet leesbaar voor de mens.
Om de inhoud van een JWT te kunnen bekijken, moeten ze eerst omgezet worden naar een Token object
(weGov.Authorization.Core.Domain). weGov.Authorization.Core.Utils heeft een static class JwtHelper die een JWT
naar een Token kan omvormen.
var accessToken = JwtHelper.GetTokenFromJwt(response.AccessToken);
Figuur 6: Omvormen JWT naar Token
Token bevat een property ‘Claims’ die de info bevat.
Het is eveneens mogelijk om het JWT naar plain JSON om te zetten. OAuthClient heeft een methode ‘DecriptJWT’ die
een JSON string terug geeft
var json = OAuthClient.DecryptJWT(response.AccessToken);
Figuur 7: Omvormen JWT naar JSON
Eenmaal gedecrypteerd, kan een token niet opnieuw geldig geëncrypteerd worden. Op die manier worden
aangepaste, en dus onveilige, tokens vermeden.
Inhoud van het AccessToken
Als we een accesstoken JWT omzetten naar zijn simpele JSON vorm, krijgen we het volgende te zien:
{"sub":"1","name":"matijs","aum":"password","aut":"1412675445,31402","scope":["http://docs.kant
arainitiative.org/uma/scopes/authz.json","openid"],"client_id":"6","token_type":"AuthorizationAPIT
oken","iss":"weGovID","aud":"6","exp":1412718646,"nbf":1412675446}
Figuur 8: AccessToken als JSON string
•
sub: ‘Subject’ = userid van de aangemelde weGov gebruiker
•
name: Gebruikersnaam van de aangemelde weGov gebruiker
•
aum: ‘Authentication Method’, manier van aanmelden (password of eid)
•
scope: de aangevraagde scopes
•
client_id
•
token_type: duidt aan dat het om een AuthorizationAPIToken gaat. Dit is een accesstoken voor client
applicaties (UMA)
•
iss: ‘Issuer’, de uitgever van het token
•
aud: ‘Audience’, de client_id
35
Bestek dd. 30/10/2014
•
exp: ‘Expires’, tijdstip wanneer het token vervalt
•
nbf: ‘Not Before’, tijdstip vanaf wanneer het token geldig is
Referentie: 14/004
Inhoud van het openid token
Het openid token bevat claims omtrent het gebruikersprofiel. Daarnaast zijn de gebruikelijke JWT claims ook
aanwezig (sub, iss, nbf, ...)
{"sub":"1","preferred_username":"matijs","name":"matijs","email":"[email protected]
om","given_name":"Matijs","family_name":"Vandenberghe","role":"Administrator
User","client_id":"6","token_type":"OpenIdToken","iss":"weGovID","aud":"6","exp":1412718646,"nb
f":1412675446}
Figuur 9: OpenId token als JSON string
OpenIdConnect voorziet een aantal standaard claims om een profiel te defniëren. Die hoeven niet allemaal aanwezig
te zijn. Er kunnen ook niet-standaard claims toegevoegd worden, afhankelijk van de provider (in dit voorbeeld: ‘role’).
•
given_name
•
family_name
•
middle_name
•
nickname
•
preferred_username
•
profile: URI waar het gebruikersprofiel kan bekeken worden
•
picture
•
website
•
email
•
email_verified: of het email adres gevalideerd werd (bvb. bevestigingsmail)
•
gender
•
birthdate
•
zoneinfo
•
locale
•
phone_number
•
phone_number_verified: of het telefoonnummer gevalideerd werd.
•
address
•
updated_at
Uitbreidbaarheid
Naast de standaard claims is het mogelijk om provider afhankelijke claims te definiëren. Geen enkel gebruikersprofiel
is namelijk overal op dezelfde wijze geïmplementeerd. OpenIdConnect laat toe om eigen claims toe te voegen,
afhankelijk van wat er bekend is over de gebruikersaccount.
36
Bestek dd. 30/10/2014
Referentie: 14/004
Figuur 10: Basis Gebruikersprofiel met
Client
-ClientID
-ClientName
-ClientSecret
1
User
0..*
1
Role
-UserID
-UserName
rol
0..*
-RoleID
-UserID
-ClientID
-RoleName
Volgens bovenstaande schema, heeft een gebruiker een rol binnen een clientapplicatie (bvb. ‘Administator’ of
’User’). Men zou dus kunnen stellen dat ‘Role’ een onderdeel van het gebruikersprofiel is. ‘Role’ kan dus toegevoegd
worden aan het OpenId Token dat profieldata bevat:
{"sub":"1","preferred_username":"matijs","name":"matijs","email":"[email protected]
om","given_name":"Matijs","family_name":"Vandenberghe","role":"Administrator
User","client_id":"6","token_type":"OpenIdToken","iss":"weGovID","aud":"6","exp":1412718646,"n
bf":1412675446}
De weGov Authorization Server kan zo geconfigureerd worden, dat ieder aspect van het gebruikersprofiel als claim
aan het OpenId token kan worden toegevoegd (bvb. Organisatie, Laatste tijdstip aanmelden, alternatieve contact
gegevens, …)
37