Konfigurera AD-koppling

Inledning

Här följer en kort redogörelse på hur man sätter upp en AD-koppling i en Node-uppsättning, så att vissa lager filtreras, beroende på grupptillhörighet.

Grundläggande förutsättningar:

  • Tillgång till servern för att nå och kunna editera HAJKs miljövariabelfil (.env) 
  • Adress till AD/LDAP
  • En användare i AD som har rättighet att läsa AD 
  • Minst en men helst två AD-grupper. En grupp för HAJKs administratörer och en för vanliga användare(till exemempel HAJK_Admin och HAJK_User) 

1. Sätt upp en lastbalanserare eller proxy framför Hajk som autentiserar användaren och lägger på en header med användarnamnet

Det här är en absolut grundläggande förutsättning: Hajk-backenden behöver få in ett användarnamn från någon komponent i uppsättningen. Användarnamnet ska skickas på varje request, som en header. Standardnamnet på headern är X-Control-Header. Värdet som skickas ska vara användarens samAccountName.

2. Konfigurera Backend så att den har kontakt med LDAP-servern

Nu måste vi tala om för Hajks backend att ta till sig värdet på X-Control-Header och ställa frågan vidare till LDAP-servern för att utläsa vilka grupper som användaren tillhör. Dessutom vill vi begränsa varifrån requests till Backend får komma – de ska endast skickas från vår proxy, annars kan ju vem som helst förfalska ett värde på headern och skicka med i requests och därmed låtsas vara en användare man inte är!

Inställningen görs i .env-filen som hittas i rooten på installationen. Filen innehåller mycket kommentarer så det är tydligt var AD-inställningarna görs. De börjar alla med ”AD_*”.

Exempelfil, utan data, finns på github.

Hajk behöver ha ett eget användarnamn i LDAP-uppsättningen med rättigheter att söka i trädet. Uppgifterna anges på raderna AD_USER och AD_PASS.

Det går bra att koppla mot både LDAP eller LDAPS. I det sistnämda fallet måste man ange certifikat och lite annat, läs mer här Stäm av med din IT-systemkunnige om vilka inställningar som gäller.

Glöm inte att begränsa varifrån requests till Backend får komma. Ange IP-adressen/adresserna till proxyn som en kommaseparerad lista på AD_TRUSTED_PROXY_IPS.

Säkerställ även att AD_LOOKUP_ACTIVE har satts till true, för att aktivera AD-uppslagningen. Läs mer här:

Om header-namnet är annat än X-Control-Header så går det bra att ange i AD_TRUSTED_HEADER.

Om man använder LDAPS behöver man ha certifikat-filer på servern. Det finns en speciell process för hur de tas fram, kolla med din IT-avdelning. Nedan ett exempel på parametervärden i .env-filen för att ange filnamn på TLS-certifikaten.

3. Starta backend och verifiera att uppkopplingen fungerar

När Backend startar upp görs ett försök att koppla upp mot LDAP-servern. Om allt gick bra ser du följande i loggen från Backend: [INFO] service.auth - Connection to ldaps://blabla.example.se succeeded.

Om du däremot ser detta så har du glömt att slå på AD-funktionaliteten: [INFO] service.auth - AD_LOOKUP_ACTIVE is set to 'false' in .env. Not enabling ActiveDirectory authentication.

Andra fel som kan synas i "pm2-loggarna" är t ex Error code: ECONNRESET. Ett tips är att då kolla upp kommunikationen, brandväggar eller parametervärden i .env-filen.

4. Ställ in vad som syns för de olika AD-grupperna

Nu när Backend får in ett användarnamn och kan slå upp grupptillhörigheterna direkt i LDAP/LDAPS så är vi redo att börja låsa ut kartor/lager/verktyg.

Det görs genom att man generellt anger en kommaseparerad lista (med AD-gruppnamnen) på de delar av Hajk som man vill låsa. För att dessa fält ska synas i Admin UI behöver följande sättas till true: "authentication_active": true

Du hittar raden i config.json.

Så här begränsar vi åtkomst till hela kartor: 

image

Motsvarande finns som sagt för lager:

image

Det finns motsvarande för redigeringstjänster, söktjänster och verktyg också. Leta efter rutan Tillträde.

Artikeldetaljer

Artikel-ID:
2
Betyg :