User Tools

Site Tools


teknik:infrastruktur:ldap

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 FederationAdd providerLDAP.
  • Udfyld LDAP-serverdetaljer (URL, bind DN, password).
  • Test forbindelse med “Test connection” og “Test authentication”.

5. Opret en OIDC-klient for Nextcloud:

  • Gå til ClientsCreate.
  • 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 AppsSocial Login & OIDCEnable.

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?

teknik/infrastruktur/ldap.txt · Last modified: by smarken

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki