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

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki

Brug af AI : Al tekst kán være uddrag af AI genereret tekst og kan være fejlbehæftet.
AI kan lave fejl og det kan mennesker også, men al tekst er gennemgået af et menneske for fejl, og personlig bias kan være tilføjet.