====== 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/
---