# Keycloak ile giriş

> Keycloak'ı hazır profille Proxus'un yanında çalıştırın, kişileri ve grupları orada yönetin; kişiler Proxus'a tek bir şirket hesabıyla girsin.

Kaynak: https://proxus.io/tr/docs/administer/keycloak

Bu rehberin sonunda Keycloak Proxus'un yanında çalışır, kişileri ve gruplarını orada yönetirsiniz ve kişiler Proxus'a
Keycloak hesaplarıyla girer. Gruplar Proxus rollerini belirler. Active Directory'ye ya da internet erişimine gerek
yoktur.

Keycloak açık kaynaklı bir kimlik yazılımıdır. Proxus ve diğer uygulamalarınız için tek hesap (tek oturum açma), tek
yerden çok faktörlü giriş ve parola kuralları istediğinizde ya da Active Directory'yi sonradan bağlayacak bir yer
gerektiğinde kullanın.

## Başlamadan önce

- [Kurulum betiğiyle](https://proxus.io/tr/docs/get-started/install) kurulmuş Proxus.
- 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.
- İki adrese Proxus konteynerinden de ulaşılabilmeli.

## Adım 1: Keycloak'ı kurulum betiğiyle ekleyin

1. `proxus-platform` klasörünü içeren klasörde betiği yeniden çalıştırın (kurulumdaki komutun aynısı) ve
   **Add Keycloak (single sign-on)** seçeneğini seçin. Yeni bir kurulumdaysanız bunun yerine
   **Install Keycloak next to Proxus?** sorusuna `y` yanıtı verin.
2. Soruları yanıtlayın:
   - **Address people open Proxus with**, örneğin `https://proxus.plant.local`.
   - **Address people open Keycloak with**, örneğin `https://sso.plant.local`.
   - **Text of the sign-in button**, örneğin `Şirket hesabı`.
3. Betik Keycloak'ın yönetici parolasını ve Proxus ile Keycloak'ın paylaştığı gizli anahtarı üretir, Keycloak'ı
   Proxus'un yanında başlatır ve Proxus'u ona bağlar. Sonunda Keycloak yönetiminin adresini ve `admin` parolasını
   gösterir. İkisi de `proxus-platform/.env` dosyasında da durur.

İlk başlatmada Keycloak, Proxus PostgreSQL sunucusunda kendi veritabanını ve `proxus` adında bir realm oluşturur.
Realm'de şunlar hazır gelir:

- Proxus'un giriş yaptığı `proxus-hub` uygulaması,
- `proxus-admins`, `proxus-operators` ve `proxus-viewers` grupları,
- Proxus'un rolleri vermek için okuduğu `groups` bilgisi.

Sonraki başlatmalar ve güncellemeler Keycloak'ta yaptığınız değişiklikleri korur; realm yeniden oluşturulmaz.
Keycloak'ın verisi Proxus veritabanında durduğu için betiğin yedekleri onu da içerir. Keycloak'ı kaldırmak için
betiği çalıştırıp **Remove Keycloak** seçeneğini seçin; verisi kalır, yeniden eklediğinizde geri gelir.

## Adım 2: Kişileri ekleyin

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. **Users**'ı açın ve **Add user**'ı seçin. **Username**, e-posta ve adı girin, ardından **Create**.
3. **Credentials** sekmesinde **Set password**'ü seçin. **Temporary** açık kalsın: kişi ilk girişte kendi parolasını
   seçer.
4. **Groups** sekmesinde **Join Group**'u seçin ve örneğin `proxus-operators` grubunu seçin.

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

| Keycloak 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 grupları eşlemek için onları
`proxus-platform/docker-compose.override.yml` dosyasına ekleyin (güncellemeler `docker-compose.keycloak.yml`
dosyasını değiştirir, override dosyasını hiç değiştirmez), ardından o klasörde `docker compose up -d` komutunu
çalıştırın:

```yaml
services:
  proxus-ui:
    environment:
      Authentication__Oidc__Providers__0__RoleMap__hat-1-operatorler__0: Operator
```

## Adım 3: Test edin

1. Proxus'u gizli bir tarayıcı penceresinde açın. **Oturum aç**'ın altında artık **Şununla oturum aç: Şirket hesabı**
   butonu vardır.
2. Butonu seçin. Keycloak'ın giriş sayfası açılır; kişinin kullanıcı adı ve parolasıyla girin.
3. Proxus açılır. Bir yönetici olarak **Güvenlik > Kullanıcılar**'ı açın: kişi **Operator** ve **Default** rolleriyle
   listelenir, **Oturum açma yöntemi** sütununda **Tek oturum açma (company)** yazar.

Kişiyi Keycloak'ta gruptan çıkarın ve yeniden girin: rol kalkar. Rollerin 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.

## Keycloak'ın eklediklerini açın

| Ne | Keycloak'ta nerede (**proxus** realm'i) |
| --- | --- |
| Çok faktörlü giriş (doğrulama uygulaması) | **Authentication** > **Required actions**: **Configure OTP**'yi açın ya da OTP'yi tarayıcı akışına ekleyin |
| Parola kuralları | **Authentication** > **Policies** > **Password policy** |
| Yanlış parolalardan sonra hesap kilitleme | **Realm settings** > **Security defenses** > **Brute force detection** |
| Active Directory ya da LDAP hesapları | **User federation**, bkz. [Keycloak üzerinden Active Directory](https://proxus.io/tr/docs/administer/active-directory-keycloak) |

## 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). Keycloak'a ulaşılamadığında bu hesap yine
çalışır.

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

| Ne görüyorsunuz | Neden | Ne yapmalı |
| --- | --- | --- |
| **Şununla oturum aç: …** butonu yok. | Sağlayıcı ayarları eksik. | 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ı. |
| Keycloak "Invalid redirect uri" diyor. | Verdiğiniz Proxus adresi, kişilerin Proxus'u açtığı adres değil. | Betiği çalıştırın, Keycloak'ı kaldırıp doğru adresle yeniden ekleyin. Realm adresi yalnızca ilk başlatmada okur: Keycloak'ta `proxus-hub` uygulamasının **Valid redirect URIs** alanını da değiştirin. |
| Giriş çalışıyor ama kişinin Proxus rolü yok. | Kişi eşlenmiş bir grupta değil. | **Groups** sekmesinden bir gruba ekleyin ya da grubunu override dosyasında eşleyin. |
| Keycloak "HTTPS required" diyor. | Keycloak düz HTTP üzerinde çalışıyor ve yerel ağ dışındaki bir adresten açılıyor. | Keycloak'ı HTTPS arkasına alın. Yalnızca test ortamında: **Realm settings** > **General** > **Require SSL**: **none**. |

## Sırada ne var

- [Giriş yöntemini seçin](https://proxus.io/tr/docs/administer/sign-in-methods)
- [Tek oturum açma](https://proxus.io/tr/docs/administer/single-sign-on): tüm OpenID Connect ayarları, API ve servis hesapları
- [Keycloak üzerinden Active Directory](https://proxus.io/tr/docs/administer/active-directory-keycloak)
