====== Keycloak: Open Source Identitets- og Adgangsstyring (IAM) ====== --- ===== Hvad er Keycloak? ===== **Keycloak** er et **åbent open source-projekt** udviklet af **Red Hat**, der tilbyder **identitets- og adgangsstyring (IAM)**. Det gør det muligt for organisationer at **sikre applikationer og tjenester** med **autentificering, autorisation og brugerfederation** på en centraliseret måde. Keycloak understøtter moderne standarder som **OAuth 2.0, OpenID Connect (OIDC) og SAML 2.0**, hvilket gør det kompatibelt med et bredt udvalg af applikationer og tjenester. Projektet er designet til at være **let at integrere**, **skalerbart** og **fleksibelt**, og det kan køre som en **selvstændig server** eller integreres i eksisterende infrastrukturer. ---- ===== Hovedfunktioner i Keycloak ===== | **Funktion** | **Beskrivelse** | |----------------------------|-----------------------------------------------------------------------------------------------------| | **Single Sign-On (SSO)** | Brugerne logger ind **én gang** og får adgang til **alle tilknyttede applikationer** uden at skulle logge ind igen. | | **Brugerfederation** | Understøtter integration med **eksterne identitetsudbydere** (f.eks. Google, Facebook, Active Directory, LDAP). | | **Multi-Factor Authentication (MFA)** | Ekstra sikkerhedslag som **SMS, TOTP (Authenticator app), e-mail-bekræftelse** osv. | | **Brugeradministration** | Centraliseret **oprettelse, redigering og sletning af brugere**, roller og grupper. | | **Klientadministration** | Konfiguration af **applikationer (klienter)**, der skal bruge Keycloak til autentificering. | | **Social Login** | Integration med **sociale medier** (Google, Facebook, Twitter osv.) som login-metode. | | **Adgangskontrol** | Finmasket **rolle- og tilladelsesbaseret adgangskontrol (RBAC/ABAC)**. | | **Audit Logging** | **Logning af aktiviteter** (f.eks. login-forsøg, ændringer i brugerdata) for compliance og sikkerhed. | | **Tema- og UI-tilpasning** | Mulighed for at **tilpasse login-sider** med organisationens branding. | ---- ===== Hvordan kan Keycloak erstatte Microsoft-miljøprodukter? ===== Keycloak kan erstatte **Microsoft Active Directory (AD), Azure Active Directory (Azure AD) og andre identitetsløsninger** i et Linux-baseret miljø. ==== Her er hvordan: ==== | **Microsoft-Produkt** | **Keycloak-Alternativ** | **Fordele ved Keycloak** | |-----------------------------|-------------------------------------------|----------------------------------------------------------| | **Active Directory (AD)** | **LDAP-integration + Keycloak** (som central IAM-løsning) | Åben kildekode, ingen licensomkostninger, fleksibel integration med Linux/Unix-systemer. | | **Azure AD** | **Keycloak som cloud/on-prem IAM** (med understøttelse af OIDC/OAuth2/SAML) | Fuldt kontroll over data (digital suverænitet), ingen afhængighed af Microsoft-cloud. | | **Microsoft Entra ID** | **Keycloak med social login og MFA** | Understøtter de samme protokoller (OIDC, SAML) og integreres med alle moderne applikationer. | | **Microsoft NPS (Network Policy Server)** | **Keycloak + Radius/Proxy-integration** (f.eks. med **FreeRADIUS**) | Centraliseret adgangskontrol til netværkstjenester. | ---- ===== Overordnet Implementering i et Linux-miljø ===== ---- === 1. Forudsætninger === - **Server**: En Linux-server (f.eks. **Debia, Rhel, SUSE**) med Java (OpenJDK 11+). - **Database**: Keycloak kræver en **relational database** (PostgreSQL, MySQL, MariaDB eller H2 for test). - **Reverse Proxy** (valgfrit): **Nginx** eller **Apache HTTP Server** for SSL-terminering og load balancing. - **Certifikater**: **TLS/SSL-certifikater** (f.eks. fra Let’s Encrypt) for sikker kommunikation. ---- === 2. Installation === Keycloak kan installeres på flere måder: **A. Docker (anbefalet til hurtig opsætning)** bash docker run -d --name keycloak -p 8080:8080 -p 8443:8443 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=strongpassword -e KC_DB=postgres -e KC_DB_URL=jdbc:postgresql://postgres:5432/keycloak -e KC_DB_USERNAME=keycloak -e KC_DB_PASSWORD=dbpassword quay.io/keycloak/keycloak:latest start-dev *Bemærk*: Erstat postgres med din database-server og opdater miljøvariablerne. **B. Native Installation (via .tar.gz eller RPM/DEB)** 1. Download Keycloak fra [[https://www.keycloak.org/download | keycloak.org ]] . 2. Udpak og start serveren: bash tar -xvf keycloak-*.tar.gz cd keycloak-*/ bin/kc.sh start-dev --db=postgres --db-url=jdbc:postgresql://localhost:5432/keycloak 3. Adgang til admin-konsol: http://:8080/admin (brug admin/strongpassword) **C. Kubernetes (for skalerbare miljøer)** - Brug **Keycloak Operator** eller Helm-chart til at deploye i et Kubernetes-cluster. ---- === 3. Grundlæggende Konfiguration === 1. **Opret et Realm**: - Et **realm** er en logisk container for brugere, roller og klienter. - Gå til **Admin Console** → **Create Realm**. 2. **Opret Brugere**: - Naviger til **Users** → **Add User**. - Tilføj brugernavn, adgangskode og roller. 3. **Opret Klienter (Applikationer)**: - Gå til **Clients** → **Create**. - Vælg **OpenID Connect (OIDC)** eller **SAML** som protokol. - Konfigurer **redirect-URLs** for applikationen. 4. **Konfigurer Autentificeringsflow**: - Tilføj **MFA** (f.eks. TOTP) under **Authentication** → **Flows**. 5. **Integrer med LDAP/Active Directory (valgfrit)**: - Gå til **User Federation** → **Add Provider** → **LDAP**. - Indtast LDAP-serveroplysninger (f.eks. OpenLDAP eller Microsoft AD). ---- === 4. Integration med Linux-tjenester === | **Tjeneste** | **Integrationsmetode** | |----------------------------|---------------------------------------------------------------------------| | **Apache/Nginx** | Brug **OAuth2 Proxy** (f.eks. [oauth2-proxy](https://github.com/oauth2-proxy/oauth2-proxy)) til at beskytte web-applikationer. | | **SSH (Linux-servere)** | Brug **Pam Keycloak** (PAM-modul) til at integrere Keycloak med SSH-login. | | **Samba (filserver)** | Konfigurer **Winbind + Keycloak** for at erstatte AD-integration. | | **Nextcloud/ownCloud** | Brug **OpenID Connect-plugin** til at integrere med Keycloak. | | **Jenkins/GitLab** | Konfigurer **OIDC-plugin** i Jenkins/GitLab for at bruge Keycloak som login-udbyder. | ---- === 5. Sikkerhedsforanstaltninger === - **HTTPS**: Altid brug **TLS/SSL** (f.eks. via Nginx eller direkte i Keycloak). - **Firewall**: Åbn kun **port 8080/8443** for interne/brugere. - **Backup**: Sikkerhedskopier **databasen** og Keycloak-konfigurationen regelmæssigt. - **Opdateringer**: Hold Keycloak opdateret til den **nyeste stabile version**. ---- ===== Fordele ved at bruge Keycloak i et Linux-miljø ===== ✅ **Digital Suverænitet**: Ingen afhængighed af **Microsoft eller andre proprietary løsninger**. ✅ **Omkostningsbesparelser**: **Ingen licensomkostninger** (open source). ✅ **Fleksibilitet**: Understøtter **alle moderne protokoller** (OIDC, OAuth2, SAML). ✅ **Skalerbarhed**: Kan køre **on-premises, i cloud eller hybrid**. ✅ **Integration**: Let at integrere med **Linux-tjenester, databaser og applikationer**. ✅ **Community & Support**: **Aktivt community** og kommerciel support tilgængelig via Red Hat. ---- **Eksempel: Erstatte Microsoft AD med Keycloak + Samba** 1. **Installér Samba** på en Linux-server: bash sudo apt install samba 2. **Konfigurer Samba til at bruge Keycloak**: - Brug **Winbind** til at integrere med Keycloak via LDAP. - Alternativt: Brug **SSSD (System Security Services Daemon)** til centraliseret autentificering. 3. **Opret brugerkonti i Keycloak** og synkroniser med Samba. 4. **Test login** fra en Linux-klient: bash smbclient //server/share -U username ---- ===== Udfordringer og Overvejelser ===== ⚠ **Migration fra AD**: - Kræver **planlægning** for at flytte brugere, grupper og politikker. - Værktøjer som **https://github.com/daniel-frak/keycloak-user-migration** kan hjælpe. ⚠ **Kompleksitet**: - Keycloak er **kraftfuldt**, men kræver **konfiguration** (især for avancerede scenarier). ⚠ **Support**: - **Community-support** er tilgængelig, men for **enterprise-brug** kan **Red Hat Support** (via SUSE eller RHEL) være nødvendigt. ⚠ **Ydeevne**: - For store organisationer: Overvej **clustering** (f.eks. med Kubernetes) for høj tilgængelighed. --- **Næste Skridt** - **Prøv Keycloak i et testmiljø**: Start med en **Docker-container** og eksperimenter med brugeroprettelse og klientintegration. - **SUSE Kurser**: Foretrækker du SUSE-certificeringer, kan du undersøge om der findes **SUSE-udbudte kurser i Keycloak** (f.eks. som del af **SUSE Linux Enterprise Server (SLES)**-økosystemet). - **Integrer med dine nuværende systemer**: Prøv at forbinde Keycloak til **Nextcloud, GitLab eller Jenkins** for at se, hvordan det fungerer i praksis. ---- **Læs mere** : (eksterne links) https://www.linkedin.com/feed/update/urn:li:groupPost:25827-7483945706563555329/ om https://mjmjmj.name/python/keycloak-the-complete-guide-to-open-source-identity-and-access-management-with-fastapi-golang-examples/ ---