Kişisel ağımda, benzer kimlik bilgilerini kullanarak farklı hizmetlere giriş yapmak zorunda kalmak beni rahatsız ediyordu. Merkezi bir kimlik doğrulama sisteminin faydalarını biliyordum, ancak çoğu zaman kurulumu karmaşık olan Keycloak gibi çözümlerden kaçınıyordum. Bu noktada Pocket ID ile tanıştım. Tek bir Docker kapsülünde çalışan, hafif bir Keycloak alternatifiydi. Kurulumu kolaydı, ancak hizmetlerimin onunla entegre edilmesi farklı bir hikaye oldu.





Pocket ID’yi kurduktan sonra, onu ya public olarak Pangolin üzerinden mi yoksa private olarak NetBird üzerinden mi kullanacağıma karar vermem gerekiyordu. Gizliliği tercih etsem de, bu kullanım senaryom için uygun değildi. Portainer ile kurulumu başlattığımda, eksik ENCRYPTION_KEY değişkeni nedeniyle bir sorunla karşılaştım. Bu sorunu çözdükten sonra kurulum başarılı oldu.




Ardından, Pocket ID’yi Pangolin’e ekledim ve hemen erişebildim. Ancak, bu seferki mücadele, Jellyfin gibi hizmetleri entegre etmekle ilgiliydi.



Jellyfin ile başlayan süreç, OIDC’nin karmaşıklığını gözler önüne serdi. İlk sorun, Jellyfin’in yerleşik olarak OIDC desteği olmamasıydı. Üçüncü taraf bir eklenti kullanarak bu özelliği etkinleştirdim. OIDC istemcisini Pocket ID üzerinde yapılandırdıktan sonra, bu bilgileri Jellyfin’e aktardım.
İlk denemede, “invalid_request – Failed to push authorization parameters” hatasıyla karşılaştım. Pocket ID, Pushed Authorization Requests (PAR) bekliyordu, ancak Jellyfin’in SSO eklentisi bunu desteklemiyordu. Bu sorunu, Jellyfin SSO ayarlarındaki bir checkbox ile çözebildim.
İkinci sorun, yönlendirme URI’sinin Pocket ID tarafından “http://” olarak görünmesiydi, oysa her yerde “https” kullanılıyordu. Bu sorunu, manuel olarak düzeltmek zorunda kaldım.
Bu süreçte, ters proxy kullanımıyla ilgili önemli bir ders çıkardım: Her hizmetin el sıkışma protokolünü açıkça tanımlamak gerekir. Jellyfin’deki TLS, sadece proxy seviyesinde sonlandırılıyordu, bu nedenle istekler HTTP üzerinden gönderiliyordu. Bu durum, Pocket ID’nin HTTPS yönlendirme URI’si beklentisiyle çelişiyordu.
Bu ilk entegrasyon deneyimi, diğer hizmetlerle ilgili beklentilerimi değiştirdi. Nextcloud ve Immich gibi farklı hizmetlerin OIDC ile entegrasyonu, farklı yaklaşımlar gerektirdi. Örneğin, Nextcloud’da yerleşik OIDC desteği sayesinde entegrasyon oldukça sorunsuz geçti.
Immich ile ilgili deneyim ise, kimlik eşleştirme ve kimlik taleplerinin önemini vurguladı. İlk denemede, yeni bir hesap oluşturulduğu için mevcut veriler kayboldu. Bu durum, her hizmetin OIDC’yi nasıl uyguladığını anlamanın kritik olduğunu gösterdi.
Son olarak, Jellyfin’in tarayıcı tabanlı uygulamalarında SSO’nun çalışmaması, yerleşik istemci desteğinin önemini ortaya koydu. Bu deneyimler, “SSO destekli” ifadesinin her zaman aynı anlama gelmediğini ve her hizmetin farklı yaklaşımlar gerektirebileceğini gösterdi.
Pocket ID gibi hafif bir çözümün, Keycloak’un karmaşıklığına alternatif olabileceğini kanıtladı. Ancak, entegrasyon sürecinde karşılaşılan zorluklar, OIDC’nin potansiyel tuzaklarını ve her hizmetin farklı yaklaşımlar gerektirebileceğini gösterdi.
Bu Gelişmeyi Toplulukta Değerlendirin
Haber hakkındaki düşüncelerinizi, donanım deneyimlerinizi ve teknik sorularınızı topluluk üyeleriyle anlık olarak tartışın.
Bir yanıt yazın