Dokumentet beskriver hur man kan bygga en enkel server som tillhanda håller REST-api, JSON/XML-listor samt skapar exportfiler. Tanken är från början att ta ut information från katalogtjänsten för att tillhandahålla den till Open E.
Open E är ett system för e-tjänster vanligt hos kommuner. Syftet med denna instruktion är att kunna använda data från vår katalogtjänst och visa upp i Open E på ett säkert sätt.
Länk: http://www.oeplatform.org
LDAP är ett protokoll för en katalogtjänst. Länk: https://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol
Servern är en Linuxserver, Ubuntu LTS. Detta dokument har enbart exempel från Ubuntu. Vilken linux eller windowsversion som helst fungerar.
Installerat på den är Apache samt php. Php har tillägget php-ldap för att kunna prata med LDAP. Php-mbstring är också installerat för kraftfullare sökningar.
Installera Ubuntu enligt den stegvisa guiden. För att följa den behöver du ha en fast ip-adress samt ett namn på servern i DNS. I mitt fall heter servern api01.kommun.se och är det namn jag använder fortlöpande i dokumentet.
När Ubuntu är installerat kör följande:
- sudo apt-get upgrade
- sudo apt-get update
- sudo apt-get install apache2
- sudo apt-get install php
- sudo apt-get install php-ldap
- sudo apt-get install php-mbstring
Efter detta starta om server med sudo reboot.
Du kommer att kunna surfa in på http://api01.kommun.se/ och se en testsida från Ubuntu.
Alla filer ligger i mappen /var/www/html på servern.
Nästa steg är att installera ett certifikat på servern så att https fungerar. Port 80 och http är osäkert och bör stängas av.
Certifikat installeras i samarbete med IT och den leverantör ni har av certifikat. Jag rekommenderar ett vanligt SSL-certifikat och inte Let's encrypt då server kommer att låsas för internetåtkomst.
OBS! Open E använder java för att hämta data, det innebär att du även måste inkludera ca-bundle så att servern har hela certifikatkedjan. I en vanlig browser så ser man inte detta fel då den läser root-certifikat centralt.
Även LDAP använder certifikat. Viktigt är att php inte längre använder sig av ldaps utan enbart ldap på port 389
Antingen så importerar du certifikaten till servern alternativt så ställer du in så den inte kontrollerar LDAP-certifikatet.
Ändra /etc/ldap/ldap.conf och lägg till:
TLS_REQCERT never
Vill man ha en bra debug i /log/var/apache2/error.log kan man överst i sitt script lägga till:
ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
Så här kan man sätt upp säkerheten kring servern
Servern har lokal brandvägg installerad samtidigt som kommunens större brandvägg skyddar.
Man öppnar enbart för Nordic Peak och Open E från utsidan.
Insidan så har man en krypterad koppling mot LDAP-källan, katalogtjänsten.
Enbart de datorer som ska administrera servern har access till den via brandväggsregler. Många IT-avdelningar har eget nät med högre säkerhet.
Port 443 = https, krypterad http
Port 22 = terminalporten ssh, via denna kan man även skicka filer med exempelvis Filezilla
Port 636 = ldaps, krypterad ldap
Ufw används som lokal brandvägg. Först låser vi allt.
Sudo ufw default deny incoming
Sedan tillåter vi utgående trafik
Sudo ufw default allow outgoing
Inkommande ssh-trafik (port 22) är tillåten
Sudo ufw allow ssh
Inkommande trafik på port 443 är tillåten
Sudo ufw allow 443
Sist aktiveras lokal brandvägg.
Sudo ufw enable
Mål: Att koppla Val av barn -frågan till Open E
Vi vill skicka in personnummer och få tillbaka Skola och Klass
Se koden index.php
I Open E ställer man i val av barnfrågan så här
Viola, nu är Skola och klass med i svaret i Open E.