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