# Keycloak üzerinden Active Directory

> Active Directory hesaplarıyla tek oturum açma ve Windows ile giriş; Proxus'un yanında çalışan bir Keycloak üzerinden, internet erişimi olmadan da.

Kaynak: https://proxus.io/tr/docs/administer/active-directory-keycloak

Bu rehberin sonunda kişiler Proxus'a Active Directory (ya da başka bir LDAP) kullanıcı adı ve parolalarıyla girer;
AD grupları Proxus rollerini belirler. Tesis ağından hiçbir şey çıkmaz: Proxus'un yanında bir Keycloak çalışır,
Active Directory'yi LDAPS ile okur ve Proxus kişileri Keycloak üzerinden
[tek oturum açma](https://proxus.io/tr/docs/administer/single-sign-on) ile içeri alır.

Keycloak açık kaynaklı bir kimlik yazılımıdır. Active Directory'nin yanında Windows ile girişi (Kerberos) de
ekleyebilir: domain'e bağlı bilgisayarlardaki kişiler Proxus'u parola yazmadan açar. Çok faktörlü girişi de sağlar.

Kişilerin Active Directory kullanıcı adı ve parolasını Keycloak olmadan doğrudan Proxus giriş sayfasına yazması için
[Active Directory ve LDAP ile giriş](https://proxus.io/tr/docs/administer/active-directory) sayfasına bakın. Uygulamalar arasında tek
oturum açma ya da Windows ile giriş istediğinizde Keycloak'ı kullanın.

Keycloak zaten Proxus'un yanında çalışıyorsa ([Keycloak ile giriş](https://proxus.io/tr/docs/administer/keycloak)), Adım 1'in
yalnızca ikinci kısmını yapın ve [Adım 2](#adım-2-active-directoryyi-bağlayın) ile devam edin.

## Başlamadan önce

- [Kurulum betiğiyle](https://proxus.io/tr/docs/get-started/install) kurulmuş Proxus.
- Active Directory'de **salt okunur bir servis hesabı**, örneğin `svc-proxus-ldap`; parolasının süresi dolmamalı.
- Domain controller'larınızda **LDAPS** (port 636) ve şirketinizin kök CA sertifikası `.pem` dosyası olarak. Windows
  Server 2025 şifrelenmemiş LDAP girişlerini varsayılan olarak reddeder; her yerde LDAPS kullanın.
- Proxus için AD grupları, örneğin `proxus-admins`, `proxus-operators` ve `proxus-viewers`, içinde kişilerle.
- Kişilerin açabileceği iki adres: biri Proxus için, örneğin `https://proxus.plant.local`; biri Keycloak için,
  örneğin `https://sso.plant.local`. Test ortamında `http://<sunucu>:8080` ve `http://<sunucu>:8180` yeterlidir.

## Adım 1: Keycloak'ı ekleyin ve şirket CA'nıza güvenin

1. Keycloak'ı kurulum betiğiyle Proxus'un yanına,
   [Keycloak ile giriş, Adım 1](https://proxus.io/tr/docs/administer/keycloak#adım-1-keycloakı-kurulum-betiğiyle-ekleyin) sayfasındaki
   gibi ekleyin. Betik, Proxus'un giriş yaptığı uygulamayı ve `proxus-admins`, `proxus-operators`, `proxus-viewers`
   gruplarını içeren `proxus` realm'ini oluşturur ve Keycloak'ın `admin` parolasını gösterir.
2. Keycloak'ın domain controller'ların LDAPS sertifikalarına güvenmesi için şirketinizin kök CA sertifikasını
   `proxus-platform/keycloak/truststore/` klasörüne kopyalayın, örneğin `company-root-ca.pem` olarak. Ardından
   `proxus-platform` klasöründe:

   ```bash
   docker compose restart keycloak
   ```

## Adım 2: Active Directory'yi bağlayın

1. `<KEYCLOAK_URL>/admin` adresini açın, `admin` kullanıcısı ve `KEYCLOAK_ADMIN_PASSWORD` ile girin, sol üstten
   **proxus** realm'ine geçin.
2. **User federation**'ı açın ve **Add Ldap providers**'ı seçin.
3. Şunları doldurun:

   | Alan | Değer |
   | --- | --- |
   | Vendor | **Active Directory** |
   | Connection URL | `ldaps://dc1.plant.local:636` (birden fazlaysa boşlukla ayırın) |
   | Bind type | **simple** |
   | Bind DN | servis hesabı, örn. `CN=svc-proxus-ldap,OU=Service Accounts,DC=plant,DC=local` |
   | Bind credentials | parolası |
   | Edit mode | **READ_ONLY** |
   | Users DN | kişilerin bulunduğu yer, örn. `OU=Users,DC=plant,DC=local` |
   | Search scope | **Subtree** |

   **Test connection** ve **Test authentication**'ı seçin; ikisi de başarılı olmalı. Ardından **Save**.
4. Sağlayıcıda **Mappers** > **Add mapper**'ı açın, tür olarak **group-ldap-mapper** seçin:

   | Alan | Değer |
   | --- | --- |
   | LDAP Groups DN | Proxus gruplarının bulunduğu yer, örn. `OU=Groups,DC=plant,DC=local` |
   | Group Name LDAP Attribute | `cn` |
   | Group Object Classes | `group` |
   | Membership LDAP Attribute | `member` |
   | Membership Attribute Type | `DN` |
   | Mode | **READ_ONLY** |
   | User Groups Retrieve Strategy | **LOAD_GROUPS_BY_MEMBER_ATTRIBUTE_RECURSIVELY** (iç içe AD gruplarını izler) |
   | LDAP Filter | `(cn=proxus-*)` (yalnızca Proxus grupları) |

   **Save**, ardından **Sync LDAP groups to Keycloak**.

## Adım 3: Rolleri kontrol edin

Gruplar `docker-compose.keycloak.yml` içinde Proxus rollerine eşlenir:

| AD grubu | Proxus rolü |
| --- | --- |
| `proxus-admins` | Administrators |
| `proxus-operators` | Operator |
| `proxus-viewers` | Viewer |

Proxus her kullanıcıyı oluştururken ona **Default** rolünü de verir. Başka grup adları ya da roller kullanmak için rol
eşlemesini [Keycloak ile giriş](https://proxus.io/tr/docs/administer/keycloak#adım-2-kişileri-ekleyin) sayfasındaki gibi
`proxus-platform/docker-compose.override.yml` dosyasına ekleyin ve `docker compose up -d` komutunu yeniden çalıştırın.
Eşlenen rollerin her girişte nasıl güncellendiği
[Tek oturum açma](https://proxus.io/tr/docs/administer/single-sign-on#adım-3-grupları-rollere-eşleyin) sayfasındadır.

## Adım 4: Test edin

1. Proxus'u gizli bir tarayıcı penceresinde açın ve **Şununla oturum aç: Company account**'u seçin.
2. `proxus-admins` grubundaki bir AD hesabıyla girin.
3. Proxus'ta **Güvenlik > Kullanıcılar**'ı açın: kişi **Administrators** rolüyle listelenir.
4. Kişiyi AD'de gruptan çıkarın ve yeniden girin: rol kalkar.

## Bir giriş yolunu açık tutun

Proxus parolasıyla giren en az bir Proxus yöneticisi bırakın (**Admin** kullanıcısı,
[iki adımlı doğrulama](https://proxus.io/tr/docs/administer/two-step-verification) ile). Bir domain controller'a ya da Keycloak'a
ulaşılamadığında bu hesap yine çalışır.

## Windows ile giriş ve çok faktörlü giriş

- **Windows ile giriş (Kerberos):** domain'e bağlı bilgisayarlardaki kişiler Proxus'u parola yazmadan açar.
  Keycloak'ın LDAP sağlayıcısında **Allow Kerberos authentication**'ı açın ve AD yöneticinizin Keycloak adresi için
  oluşturduğu servis principal'ı ile keytab'ı girin. Tarayıcıların Windows ile giriş için bu adrese güvenmesi gerekir.
- **Çok faktörlü giriş:** Keycloak'ta **Authentication** > **Required actions** altında **Configure OTP**'yi açın ya
  da OTP'yi tarayıcı akışına ekleyin.

## Bir şey çalışmadığında

| Ne görüyorsunuz | Neden | Ne yapmalı |
| --- | --- | --- |
| **Test connection** sertifika hatasıyla başarısız. | Keycloak domain controller'ın sertifikasına güvenmiyor. | Kök CA `.pem` dosyasını `proxus-platform/keycloak/truststore/` klasörüne koyun ve `docker compose restart keycloak` komutunu çalıştırın. |
| **Test authentication** başarısız. | Bind DN ya da parola yanlış veya hesap kilitli. | Servis hesabını AD'de kontrol edin. Tam DN'yi kullanın. |
| Giriş çalışıyor ama kişinin Proxus rolü yok. | Grupları eşitlenmemiş ya da adları farklı. | **Sync LDAP groups to Keycloak**'u çalıştırın; adları rol eşlemesiyle karşılaştırın. |
| **Şununla oturum aç: …** butonu yok. | Sağlayıcı ayarları eksik; örneğin `KEYCLOAK_URL`, `KEYCLOAK_REQUIRE_HTTPS=false` olmadan `http://` ile başlıyor. | Hub logu (**Authentication** kategorisi) açılışta sorunu yazar. |
| Buton, Keycloak'ın giriş sayfası yerine bir hata gösteriyor. | Proxus, Keycloak'ın adresine ulaşamıyor. | `KEYCLOAK_URL` hem tarayıcılardan hem Proxus konteynerinden ulaşılabilir olmalı. |

## Sırada ne var

- [Active Directory ve LDAP ile giriş](https://proxus.io/tr/docs/administer/active-directory): Keycloak olmadan
- [Tek oturum açma](https://proxus.io/tr/docs/administer/single-sign-on): tüm OpenID Connect ayarları, API ve servis hesapları
- [Kullanıcılar ve roller](https://proxus.io/tr/docs/administer/users-and-roles)
- [İki adımlı doğrulama](https://proxus.io/tr/docs/administer/two-step-verification)
