# Active Directory ve LDAP ile giriş

> Kişiler Proxus giriş sayfasında Active Directory ya da LDAP kullanıcı adı ve parolasıyla girsin; Proxus rolleri dizin gruplarından gelsin.

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

Bu rehberin sonunda kişiler Proxus giriş sayfasında Active Directory kullanıcı adı ve parolalarıyla girer; AD
grupları Proxus rollerini belirler. Proxus domain controller'larınızla doğrudan konuşur; başka bir şey kurulmaz. Aynısı
OpenLDAP, FreeIPA ve diğer LDAP dizinleri için de çalışır.

Proxus dizin parolalarını hiçbir zaman saklamaz. Her girişte parolanın doğru olup olmadığını dizine sorar; bu yüzden
değişen, süresi dolan ya da kapatılan bir AD hesabı bir sonraki girişte geçerli olur.

Uygulamalar arasında tek oturum açma ya da parola yazmadan Windows ile giriş için bunun yerine
[Keycloak üzerinden Active Directory](https://proxus.io/tr/docs/administer/active-directory-keycloak) sayfasını kullanın.

## Başlamadan önce

- Active Directory'de **salt okunur bir servis hesabı**, örneğin `svc-proxus-ldap`; parolasının süresi dolmamalı.
  Proxus kişileri ve gruplarını bu hesapla bulur.
- 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. Bu
  grupların içindeki gruplar da sayılır.
- Hub'ın domain controller'lara 636 numaralı porttan ulaşabilmesi.

## Adım 1: CA sertifikasını Proxus'a verin

Şirketinizin kök CA sertifikasını hub'ın yapılandırma klasörüne kopyalayın, örneğin `company-root-ca.pem` olarak.
Konteynerde bu `/app/config/company-root-ca.pem` olur (`config` volume'ü).

Domain controller'ların sertifikaları hub'ın işletim sisteminin zaten güvendiği bir CA'dan geliyorsa bu adımı
atlayabilirsiniz.

## Adım 2: Dizinle girişi açın

1. Yapılandırma klasöründeki `Proxus-config.toml` dosyasını açın, `[Authentication.Ldap]` bölümünü bulun ve doldurun:

      ```toml
   [Authentication.Ldap]
   Enabled = true
   Servers = ["ldaps://dc1.plant.local:636", "ldaps://dc2.plant.local:636"]
   TrustedCaFile = "/app/config/company-root-ca.pem"
   BindDn = "CN=svc-proxus-ldap,OU=Service Accounts,DC=plant,DC=local"
   UserBaseDn = "OU=Users,DC=plant,DC=local"
   GroupBaseDn = "OU=Groups,DC=plant,DC=local"

   [Authentication.Ldap.RoleMap]
   proxus-admins = ["Administrators"]
   proxus-operators = ["Operator"]
   proxus-viewers = ["Viewer"]
   ```
   
   Proxus sunucuları sırayla dener; ilki kapalıyken ikinci bir domain controller girişi çalışır tutar.
2. Servis hesabının parolasını dosyaya değil, hub'a ortam değişkeni olarak verin. Docker Compose'da `proxus-ui`
   servisinin `environment` bölümüne ekleyin:

   ```yaml
   environment:
     Authentication__Ldap__BindPassword: ${PROXUS_LDAP_BIND_PASSWORD}
   ```

   ve `docker-compose.yml` dosyasının yanındaki `.env` dosyasına `PROXUS_LDAP_BIND_PASSWORD=...` yazın.
3. Hub'ı yeniden başlatın.

Varsayılanlar Active Directory'ye uygundur: kişiler `sAMAccountName` ile bulunur, bu Proxus kullanıcı adı olur ve iç
içe gruplar izlenir. Tüm anahtarlar [Yapılandırma anahtarları](https://proxus.io/tr/docs/reference/configuration#authenticationldap)
sayfasında anlatılır.

## Adım 3: Rolleri kontrol edin

Proxus her girişte, `RoleMap`'in kişinin gruplarını eşlediği rolleri verir ve kişinin ayrıldığı gruplara ait eşlenen
rolleri geri alır. `RoleMap`'in adını vermediği roller, bir yöneticinin Proxus'ta ayarladığı gibi kalır.

Bir kişi ilk kez girdiğinde Proxus, eşlenen rollerin yanında **Default** rolüyle kullanıcısını oluşturur. Bunu
`DefaultRoles` ile değiştirin; yalnızca bir yöneticinin bağladığı kişileri içeri almak için `CreateUsers = false`
yapın.

## Adım 4: Test edin

1. Proxus'u gizli bir tarayıcı penceresinde açın.
2. `proxus-admins` grubundaki bir AD hesabının kullanıcı adı ve parolası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.

## Mevcut Proxus kullanıcıları

Bir AD hesabıyla aynı kullanıcı adına sahip bir Proxus kullanıcısı, Proxus parolasıyla girmeye devam eder. Bu
kullanıcıları Active Directory'ye taşımak için `LinkExistingUsers = true` yapın ve hub'ı yeniden başlatın: bir sonraki
girişlerinden itibaren AD parolalarını kullanırlar ve Proxus parolaları artık çalışmaz.

Yöneticiler hiçbir zaman taşınmaz. Proxus parolalarını korurlar; böylece her zaman bir giriş yolu kalır.

## 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). Hiçbir domain controller'a ulaşılamadığında
bu hesap yine çalışır; dizinle giren kişiler ise dizine ulaşılamadığını söyleyen bir mesaj görür.

## Nasıl korunur

- Parolalar yalnızca domain controller'lara, LDAPS ya da StartTLS üzerinden gider. `StartTls` olmadan düz bir
  `ldap://` adresinde hub açılırken bir uyarı yazar.
- Yanlış parola başarısız giriş sayılır; Active Directory'de olduğu gibi
  [hesap kilitleme](https://proxus.io/tr/docs/administer/users-and-roles) uygulanır.
- Boş parola her zaman reddedilir. Kişilerin yazdıkları dizin aramasını değiştiremez.
- Dizin kullanıcıları [iki adımlı doğrulamayı](https://proxus.io/tr/docs/administer/two-step-verification) açabilir. Parolalarını
  Active Directory'de değiştirirler; Proxus onlara **Parolamı değiştir** seçeneğini göstermez.
- Bir yönetici bir dizin kullanıcısını Proxus'ta kapatabilir (**Etkin** kapalı); AD hesabı değişmez.

## OpenLDAP ve diğer dizinler

Filtreleri dizininizin nesne sınıflarına göre değiştirin, örneğin OpenLDAP için:

```toml
[Authentication.Ldap]
UserFilter = "(&(objectClass=inetOrgPerson)(uid={0}))"
UserNameAttribute = "uid"
GroupFilter = "(&(objectClass=groupOfNames)(member={0}))"
```

`{0}`, `UserFilter` içinde yazılan kullanıcı adı, `GroupFilter` içinde kişinin DN'idir.

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

Hub, reddedilen her dizin girişinin nedenini loguna yazar (**Authentication** kategorisi).

| Ne görüyorsunuz | Neden | Ne yapmalı |
| --- | --- | --- |
| "Şirket dizinine şu anda ulaşılamıyor" | Hiçbir sunucu yanıt vermedi, sertifikaya güvenilmiyor ya da servis hesabı reddedildi. | Hub'ın 636 numaralı porta ulaştığını, `TrustedCaFile`'ın sunucu sertifikalarının kök CA'sı olduğunu, servis hesabının DN'ini ve parolasını kontrol edin. Log nedeni yazar. |
| Doğru parolayla "Kullanıcı adı veya parola hatalı" | Kişi `UserBaseDn` altında değil ya da `UserFilter` onu bulmuyor. | Kişinin AD'deki yerini ve filtreyi kontrol edin. |
| "Dizin hesabınız doğru, ancak Proxus'u açma izni yok" | Bu adla bağlanmamış bir Proxus kullanıcısı var, kullanıcı kapalı ya da `CreateUsers` kapalı. | [Mevcut Proxus kullanıcıları](#mevcut-proxus-kullanıcıları) bölümüne bakın ya da kullanıcıyı açın. |
| Giriş çalışıyor ama kişinin Proxus rolü yok | Grupları `GroupBaseDn` altında değil ya da adları farklı. | Grup adlarını `RoleMap` satırlarıyla karşılaştırın. |
| Açılışta bir sunucunun şifrelenmediği uyarısı | `StartTls` olmadan düz bir `ldap://` adresi. | `ldaps://` kullanın ya da `StartTls = true` yapın. |

## Sırada ne var

- [Keycloak üzerinden Active Directory](https://proxus.io/tr/docs/administer/active-directory-keycloak): tek oturum açma ve Windows ile giriş
- [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)
