Table of Contents
LDAP i et Linux Enterprise-Miljø med Keycloak og Nextcloud
Denne side beskriver, hvordan LDAP (Lightweight Directory Access Protocol) integreres i et Linux enterprise-miljø til brugerstyring og login, og hvordan det kan arbejde parallelt med et eksisterende Windows-miljø — herunder integration med Keycloak og løsninger som Nextcloud. Beskrivelsen tager udgangspunkt i behovet for at understøtte både åben kildekode og eksisterende proprietary systemer.
LDAP: Grundlaget for centraliseret brugerstyring
Hvad er LDAP?
LDAP (Lightweight Directory Access Protocol) er en åben standardprotokol (RFC 4510) til at hente, opdatere og søge i hierarkiske directory-tjenester over et netværk. Den bruges primært til:
* Centraliseret lagring af brugere, grupper, enheder og rettigheder. * Autentificering (login) og autorisation (adgangskontrol). * Multi-platform understøttelse (Linux, Windows, applikationer, tjenester).
Typisk struktur i LDAP
dc=example,dc=com
├── ou=users
│ ├── uid=bruger1
│ └── uid=bruger2
└── ou=groups
├── cn=admins
└── cn=developers
Implementeringer
* OpenLDAP: Åben kildekode, fleksibel. * 389 Directory Server: Red Hat, enterprise-venlig. * Apache Directory Server: Java-baseret, skalerbar.
LDAP i Linux-miljøer
I Linux integreres LDAP med:
* nsswitch.conf: Konfigurerer systemet til at hente brugere/grupper fra LDAP. * pam_ldap eller sssd (System Security Services Daemon): Håndterer autentificering via LDAP. * Kerberos: Til Single Sign-On (SSO) med LDAP som backend.
Eksempel på opsætning
# /etc/nsswitch.conf (Ubuntu/Debian)
passwd: compat ldap
group: compat ldap
shadow: compat ldap
Keycloak: Identity and Access Management (IAM)
Hvad er Keycloak?
Keycloak er en open-source IAM-løsning (udviklet af Red Hat) til:
* Federeret identitet (understøtter LDAP, Active Directory, SAML 2.0, OIDC, OAuth2). * Single Sign-On (SSO) på tværs af applikationer. * Centraliseret autentificering med multi-factor authentication (MFA). * Brugerselvbetjening (self-service password reset, profiladministration).
Integration mellem LDAP og Keycloak
Keycloak kan synkronisere brugere fra LDAP og fungere som en Identity Provider (IdP) for både Linux- og Windows-tjenester.
Opsætning af LDAP i Keycloak
1. Opret en LDAP User Federation i Keycloak:
- Angiv LDAP-serverens URL (f.eks.
ldap://ldap.example.com:389
).
- Konfigurer bind DN (admin-bruger til LDAP-adgang) og adgangskode.
- Definer bruger- og gruppe-mapping (f.eks.
uid
→ username,
memberOf
→ grupper).
2. Synkronisering:
- Keycloak kan importere brugere fra LDAP ved opstart eller på planlagte tidspunkter.
3. Autentificeringsflow:
- Brugere logger ind via Keycloak login-portal (web, API, eller integrerede applikationer).
- Keycloak validerer credentials mod LDAP.
- Udsteder JWT-tokens (OIDC) eller SAML-assertions til klienter.
Fordele ved Keycloak + LDAP
* Enkelt login (SSO) på tværs af Linux/Windows/applikationer. * Understøttelse af MFA (SMS, TOTP, hardware tokens). * Fleksibel integration med både åbne og proprietary systemer. * Audit logs og compliance (GDPR, ISO 27001).
Parallel Integration med Windows (Active Directory)
Hvorfor beholde Windows-miljøet?
* Eksisterende infrastruktur: AD bruges til Windows-klienter, GPO, og legacy-applikationer. * Kerberos/NTLM: Nødvendigt for ældre Windows-tjenester. * Group Policy: Centraliseret konfiguration af Windows-maskiner.
Løsninger for interoperabilitet
| Metode | Beskrivelse | Fordele | Ulemper |
|---|---|---|---|
| Samba som AD DC | Samba kan fungere som en fuldgyldig AD Domain Controller. | Fuldt kompatibelt med Windows. | Kræver avanceret opsætning. |
| LDAP + AD Sync | Synkroniser brugere fra AD til LDAP (f.eks. med ldap-sync). | Beholder AD som kilden. | Risiko for synkroniseringskonflikter. |
| Keycloak + AD | Keycloak forbinder direkte til AD via LDAP eller Kerberos. | Ingen manuel synkronisering. | Kræver AD-adgang for Keycloak. |
| Cross-Forest Trust | Opret en trust-relation mellem Linux LDAP og AD. | Transparent adgang på tværs. | Kompleks opsætning. |
Anbefalet opsætning: Keycloak + LDAP + AD
1. LDAP som primær brugerdatabase:
- Alle brugere (Linux/Windows) lagres i LDAP (eller AD, hvis AD er primært).
- Keycloak forbinder til LDAP/AD for autentificering.
2. Samba som AD-medlem:
- Linux-servere slutter sig til AD-domænet via Samba.
- Brugere kan logge ind på Linux-maskiner med AD-credentials (via
sssd
+
ad
backend).
3. Keycloak som SSO-portal:
- Applikationer (f.eks. Nextcloud) autentificerer via Keycloak.
- Keycloak validerer mod LDAP/AD og udsteder tokens.
Nextcloud og andre applikationer
Integration med Nextcloud
Nextcloud kan integreres med LDAP + Keycloak på to måder:
Option 1: Direkte LDAP-integration
* Nextcloud forbinder direkte til LDAP-serveren. * Fordele: Simpel opsætning, ingen ekstra lag. * Ulemper: Ingen SSO (brugere skal logge ind separat).
1. Installer **LDAP/Active Directory app** i Nextcloud. 2. Konfigurer LDAP-server, bind DN, og søgefiltre. 3. Map LDAP-felter til Nextcloud-brugere (f.eks. <code>uid
→ username). </code>
Option 2: Keycloak SSO (anbefalet)
* Nextcloud autentificerer via Keycloak (OIDC eller SAML). * Fordele: Single Sign-On, MFA, centraliseret styring.
1. **Konfigurer Keycloak**: * Opret en **OIDC-klient** for Nextcloud. * Angiv **redirect URIs** (f.eks. <code>https://nextcloud.example.com/apps/sociallogin/custom_oidc
).
2. Konfigurer Nextcloud:
- Installer Social Login & OIDC app.
- Angiv Keycloak client ID, client secret, og discovery endpoint.
3. Test login:
- Brugere klikker på “Log ind med Keycloak” → omdirigeres til Keycloak → logger ind med LDAP/AD-credentials.
</code>
Eksempel på andre applikationer
| Applikation | Integrationsmetode | Protokol |
|---|---|---|
| Jira/Confluence | Keycloak (SAML/OIDC) | SAML 2.0 / OIDC |
| GitLab | LDAP eller Keycloak (OIDC) | LDAP / OIDC |
| Mattermost | Keycloak (OIDC) | OIDC |
| Grafana | LDAP eller Keycloak (OAuth2) | LDAP / OAuth2 |
Arkitekturoverblik
LDAP Server
│
├── Users (uid=bruger1, uid=bruger2)
└── Groups (cn=admins, cn=developers)
│
├───┬───────────────┬─────────────────┐
│ │ │ │
▼ ▼ ▼ ▼
Linux Servers Windows AD Keycloak Nextcloud
│ │ │ │
│ │ ├─────────────────┘
│ │ │
▼ ▼ ▼
SSSD (PAM) Samba (AD) OIDC/SAML
│ │ │
└───────────┬───────────────────┘
│
▼
Central Brugerdatabase
Workflow for brugerlogin
1. Bruger åbner Nextcloud (eller anden applikation). 2. Viderestilles til Keycloak login-portal. 3. Keycloak validerer credentials mod LDAP/AD. 4. Hvis godkendt, udsteder Keycloak et JWT-token (OIDC) eller SAML-assertion. 5. Nextcloud modtager tokenet og giver adgang.
Praktiske overvejelser
Fordele ved denne opsætning
* Digital suverænitet: LDAP og Keycloak er open source (ingen vendor lock-in). * Fleksibilitet: Understøtter både Linux og Windows uden at erstatte AD. * Skalerbarhed: LDAP og Keycloak kan håndtere tusindvis af brugere. * Sikkerhed: MFA, centraliseret audit, krypteret kommunikation.
Udfordringer og løsninger
| Udfordring | Løsning |
|---|---|
| Synkronisering mellem AD og LDAP | Brug FreeIPA eller Univention Corporate Server (UCS). |
| Performance med mange brugere | Implementér LDAP-replikering og caching i Keycloak. |
| Kompleksitet i opsætning | Brug Ansible/Terraform til automatiseret deployment. |
| Legacy Windows-applikationer | Behold AD og brug Keycloak som broker til moderne applikationer. |
Anbefalede værktøjer til drift
Monitorering
* Prometheus + Grafana: Overvågning af LDAP/Keycloak. * ELK Stack: Logs (Elasticsearch, Logstash, Kibana).
Backup
* LDAP:
slapcat
(OpenLDAP) eller
db2ldif
(389 DS). * Keycloak: Database dump (PostgreSQL/MySQL).
High Availability
* LDAP-replikering: Multi-master eller master-slave. * Keycloak clustering: Flere instanser bag en load balancer.
Trin-for-trin implementeringsguide
Fase 1: Opsæt LDAP
1. Installer OpenLDAP eller 389 Directory Server:
# Ubuntu/Debian sudo apt install slapd ldap-utils
2. Konfigurer base DN (f.eks.
dc=example,dc=com
). 3. Opret admin-bruger og ou=users/ou=groups. 4. Test med
ldapsearch
:
ldapsearch -x -H ldap://localhost -b "dc=example,dc=com"
Fase 2: Integrer LDAP med Linux
1. Installer
sssd
og
ldap-utils
:
sudo apt install sssd ldap-utils
2. Konfigurer
/etc/sssd/sssd.conf
:
[sssd] services = nss, pam domains = example.com [domain/example.com] id_provider = ldap auth_provider = ldap ldap_uri = ldap://ldap.example.com ldap_search_base = dc=example,dc=com ldap_id_use_start_tls = true cache_credentials = true
3. Opdater
nsswitch.conf
og test login:
sudo systemctl restart sssd id bruger1 # Skal vise LDAP-brugerinfo
Fase 3: Opsæt Keycloak
1. Start Keycloak med Docker:
docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=password quay.io/keycloak/keycloak:24.0 start-dev
2. Log ind på http://localhost:8080 (admin/password). 3. Opret et realm (f.eks.
example
). 4. Tilføj LDAP User Federation:
- Gå til User Federation → Add provider → LDAP.
- Udfyld LDAP-serverdetaljer (URL, bind DN, password).
- Test forbindelse med “Test connection” og “Test authentication”.
5. Opret en OIDC-klient for Nextcloud:
- Gå til Clients → Create.
- Client ID:
nextcloud
.
- Root URL:
https://nextcloud.example.com
.
- Tilføj Redirect URI:
https://nextcloud.example.com/apps/sociallogin/custom_oidc
.
Fase 4: Integrer Nextcloud med Keycloak
1. Installer Social Login & OIDC app i Nextcloud:
- Gå til Apps → Social Login & OIDC → Enable.
2. Konfigurer OIDC:
- Provider URL:
https://keycloak.example.com/auth/realms/example/.well-known/openid-configuration
.
- Client ID:
nextcloud
.
- Client Secret: (Hentes fra Keycloak under klienten).
- Button Text:
Log ind med Keycloak
.
3. Test login via Keycloak.
Fase 5: Integrer med Windows AD (valgfrit)
1. Option A: Samba som AD-medlem:
- Installer Samba og slut til AD:
sudo apt install samba krb5-config winbind sudo net ads join -U admin
- Konfigurer
/etc/sssd/sssd.conf
til at bruge
ad
provider.
2. Option B: Keycloak + AD (direkte):
- Opret en ny LDAP User Federation i Keycloak for AD:
- LDAP URL:
ldap://ad.example.com:389
.
- Bind DN:
CN=admin,CN=Users,DC=example,DC=com
.
- Base DN:
DC=example,DC=com
.
Brugeroplevelse
Bruger på Linux-maskine
* Logger ind med AD/LDAP-credentials (via
sssd
). * Åbner Nextcloud → automatisk logget ind via Keycloak SSO.
Bruger på Windows-maskine
* Logger ind på Windows med AD-credentials. * Åbner Nextcloud i browser → viderestilles til Keycloak → logger ind med samme AD-credentials.
Admin
* Styrer alle brugere/grupper centralt i LDAP/AD. * Konfigurerer rettigheder i Keycloak (f.eks. hvilke grupper har adgang til Nextcloud).
Sikkerhedsanbefalinger
LDAP
* Brug LDAPS (port 636) eller StartTLS for krypteret kommunikation. * Begræns bind DN-rettigheder (kun læs/adgang til nødvendige felter).
Keycloak
* Aktiver HTTPS (aldrig HTTP i production). * Brug stærke adgangskoder til admin-brugere. * Aktiver brute-force beskyttelse (f.eks. max 5 forsøg).
Nextcloud
* Konfigurer CORS korrekt for at tillade Keycloak-domænet. * Brug AppArmor/SELinux til at begrænse Nextclouds adgang.
Alternativer og udvidelser
| Komponent | Alternativ | Bemærkninger |
|---|---|---|
| LDAP | FreeIPA, Univention Corporate Server | Inkluderer Kerberos, DNS, og CA. |
| Keycloak | Authelia, LemonLDAP::NG | Lettervægtsalternativer til IAM. |
| Nextcloud | ownCloud, Seafile | Andre open-source fil-delingsløsninger. |
| Samba | Winbind (del af Samba) | Til integration med AD. |
Opsummering
| Krav | Løsning |
|---|---|
| Central brugerstyring | LDAP + Keycloak (alle brugere ét sted). |
| Single Sign-On (SSO) | Keycloak (OIDC/SAML) til Nextcloud og andre applikationer. |
| Windows-kompatibilitet | Samba (AD-integration) + Keycloak (federeret identitet). |
| Digital suverænitet | OpenLDAP, Keycloak, Nextcloud (alle open source). |
| Skalerbarhed | LDAP-replikering, Keycloak clustering. |
| Sikkerhed | MFA, LDAPS, HTTPS, audit logs. |
Næste skridt
1. Prøv opsætningen i et testmiljø:
- Brug Docker til at køre LDAP (f.eks.
osixia/openldap
) og Keycloak.
- Test integration med Nextcloud (Docker-container).
2. Vurder SUSE-certificeringer:
- SUSE Certified Administrator (SCA) i Enterprise Linux.
- SUSE Certified Engineer (SCE) i Identity Management.
3. Overvej FreeIPA:
- Red Hat’s løsning til integreret LDAP + Kerberos + DNS + Certificate Authority.
4. Automatiser med Ansible:
- Skriv playbooks til at deploye LDAP, Keycloak, og Nextcloud.
Spørgsmål til refleksion
* Har du allerede en LDAP-server eller Active Directory i drift, som du ønsker at integrere med? * Skal Nextcloud være den eneste applikation, eller er der andre (f.eks. GitLab, Jira)? * Ønsker du at erstatte AD på sigt, eller skal det kun være parallelt?
