• Buradasın

    Keycloak Kimlik Yönetimi ve Entegrasyon Eğitimi

    youtube.com/watch?v=uB1nlnihRXY

    Yapay zekadan makale özeti

    • Bu video, Spring Metap Grubu etkinliğinde gerçekleştirilen bir teknik eğitim sunumudur. Konuşmacı, ODTÜ Bilgisayar mezunu olup Turkcell ve Spain MEB Grubu gibi şirketlerde çalışmış bir teknoloji uzmanıdır. Ayrıca Mehmet Ali, Taner ve Ali Şentürk gibi eğitmenler de sunumda yer almaktadır.
    • Video, Keycloak kimlik yönetimi sisteminin kurulumu, yapılandırılması ve çeşitli entegrasyonları hakkında kapsamlı bilgiler sunmaktadır. İçerik, Keycloak'un LDAP entegrasyonu, Spring Security ile entegrasyonu, token yönetimi, oturum yönetimi ve Kerberos authentication gibi konuları adım adım göstermektedir. Eğitmenler, hem frontend hem de backend projelerinde (Spring Boot) Keycloak entegrasyonunu uygulamalı olarak anlatmakta ve izleyicilerden gelen soruları yanıtlamaktadır.
    • Eğitimde ayrıca Keycloak'un OpenID Connect ve SAML protokolleriyle diğer kimlik sağlayıcılarına entegre edilebilmesi, mikro hizmetlerde authorization yönetimi, Redis entegrasyonu ve Kerberos ticket distribution server'ı (KDC) gibi ileri seviye konular da ele alınmaktadır. Video, uygulamaların Postman ile test edilmesi ve soru-cevap oturumlarıyla zenginleştirilmiştir.
    00:04Giriş ve Sunum Planı
    • Sunucu, Spring Metap Grubu etkinliğinde Layermark'ın çözdüğü bir müşteri problemi üzerinden bir paylaşım yapacağını belirtiyor.
    • Sunumda Layermark tanıtımı, Key Clock ve backend entegrasyonu, Mehmet Ali'nin frontend entegrasyonu hakkında konuşacağı belirtiliyor.
    • Sunum, uçtan uca bir döngü tamamlamayı ve uygulamaları sekr hale getirmeyi amaçlıyor.
    01:26Layermark Hakkında
    • Layermark, Amerika'da Washington DC'de merkezi olan, CMMI Elite partnerliği olan ve World White ESR partnerliği olan bir şirket.
    • Şirket, utility şirketlerinin şehir hattına dağılmış varlıklarını yönetmesini sağlayan uygulamalar geliştiriyor.
    • Layermark büyümekte olan bir şirket olup, iyi projeler ve ürünler çıkarmak için fırsatlar yakalıyor ve yeteneklileri önemsiyor.
    02:53Layermark'ın Projeleri
    • Azerbaycan'da ülke genelinde toprak analiz ve bitki örtüsü analiz haritası çıkarılmasını sağlayan büyük bir proje gerçekleştirmişler.
    • Washington DC'deki su idaresi (DC Water) için başlangıçta ufak bir uygulamayı replas etmeyle başlayan, şimdi ürün haline getirme ve diğer utility şirketlerine sunma vizyonuyla ilerleyen bir proje üzerinde çalışıyorlar.
    • Şirket, sahadaki ekiplerin ihtiyaç duyduğu uygulamaları ve asset management sistem çözümünü geliştiriyor.
    05:15Layermark'ın Teknoloji Ekosistemi
    • Backend'te Spring Boot, Elastic Search, Kafka, Redis ve relational DB'ler kullanılıyor.
    • Frontend tarafında WC React kullanılıyor, ayrıca .NET ile WPF uygulamaları geliştiriliyor.
    • ESRI SDK'lar bol miktarda kullanılıyor ve iOS tarafında da tabletlerde uygulama geliştirmeleri var.
    06:08Sunucunun Kişisel Bilgileri
    • Sunucu ODTÜ Bilgisayar mezunu, Hollanda'da yaşadı ve Turkcell'de çalışmış.
    • Spain MEB grubu kariyerinde önemli bir yer tutuyor.
    • Layermark ekibi yüzde yüz remote çalışmakta ve bu zorlukları aşmak için sık sık bir araya gelmeye çalışıyor.
    06:52Key Clock Tanıtımı ve Sunum Planı
    • Sunumda Key Clock'un ne kadar yetenekli bir tool olduğu, yetenek seti ve WCS ile Spring Boot uygulamalarının entegrasyonu anlatılacak.
    • Key Clock Metap adlı bir repository oluşturulmuş ve adımlar dökümente edilmiş.
    • Sunumda Key Clock'u ayağa kaldırma, LDAP servis entegrasyonu, user ve grup importu ve demo client ile authentication istekleri gösterilecek.
    09:53Keycloak Kurulumu ve LDAP Entegrasyonu
    • Keycloak, Quarcus kullanarak 88 portundan development modunda başlatılıyor.
    • LDAP demo için bir realm tanımlanıyor ve JSON dosyasından import ediliyor.
    • LDAP servisi için Keycloak'un kaynak kodundan "examples/ldap" klasöründeki Maven komutu çalıştırılarak başlatılıyor.
    15:18LDAP Grupları ve Kullanıcıları Entegre Etme
    • LDAP gruplarını entegre etmek için User Federation mappers kısmından yeni bir grup map yaratılıyor.
    • Organizational Unit'lerin altındaki gruplar ve kullanıcılar otomatik olarak Keycloak'a import ediliyor.
    • LDAP'ta yapılan grup atamaları, belirlenen refresh periyotlarında Keycloak'ta otomatik olarak güncelleniyor.
    17:10LDAP ile Uygulama Entegrasyonu
    • LDAP demo uygulamasına LDAP'teki kullanıcılarla giriş yapılıyor.
    • LDAP'teki kullanıcıların rolleri ve grupları otomatik olarak uygulamaya aktarılıyor.
    • Keycloak'ta her realm için özel endpoint'ler bulunuyor ve bu endpoint'ler üzerinden token alma işlemleri yapılıyor.
    20:04Keycloak Protokolleri ve Özet
    • Keycloak, Open Connect ve SAML protokolleriyle entegrasyon sağlıyor.
    • SAML protokolüyle Azure AD gibi Identity Provider'lara bağlanılabilir.
    • Keycloak kurulumu, LDAP entegrasyonu ve API testi için Postman kullanımı gösteriliyor.
    22:04Keycloak Kullanıcı Yönetimi ve Client Oluşturma
    • Keycloak'ta realm seviyesinde ve realm içinde client seviyesinde multitenancy (çok kiracı) özelliği bulunmaktadır.
    • Client oluşturmak için konsola gidip "realm/clients" bölümünden yeni bir client oluşturmak gerekiyor.
    • Client oluştururken "Open ID Connect" protokolü seçilmeli ve "public" olarak ayarlanmalı ki son kullanıcılar password veya sosyal medya hesaplarıyla giriş yapabilsin.
    24:06CORS Ayarları ve Oturum Yönetimi
    • Frontend uygulaması için CORS ayarları yapılmak zorunda, aksi takdirde frontend uygulaması 3000 portundan çalışırken CORS hatası alınır.
    • Keycloak ile kullanıcı login olabilir, user credentials ile giriş yapılabilir ve token expire olduğunda refresh token ile oturum devam ettirilebilir.
    • Keycloak kullanarak kullanıcıyı içeriye almak ve yetkileri dahilinde işlemler yaptırmak için yeterli özellikler sunmaktadır.
    27:53Frontend Entegrasyonu
    • Frontend projesi için GitHub'da bir repozitörde "frontend" modülü bulunmaktadır.
    • Frontend uygulaması 3000 portunda çalışmaktadır.
    • Uygulamaya giriş yapıldığında, halihazırda sadece password opsiyonu görünmektedir çünkü sadece bir identity management sistemi (user federation) tanımlanmıştır.
    29:30GitHub Entegrasyonu
    • Keycloak'ta GitHub entegrasyonu için GitHub'dan client id ve client secret bilgileri alınmalıdır.
    • Client id ve client secret bilgileri Keycloak'a eklendikten sonra "Sign in with GitHub" opsiyonu görünür hale gelir.
    • GitHub üzerinden giriş yapıldığında, Keycloak otomatik olarak kullanıcıyı oluşturur ve kişisel bilgileri alır.
    33:02Backend Projesi ve Güvenlik Yapılandırması
    • Proje, basit bir yapıda olmasına rağmen secure servisler içeriyor ve web security config'inde whitelist'te olmayan tüm URL'lerin authenticated olduğu bir yapılandırma bulunuyor.
    • Kurumsal uygulamalarda, Swagger gibi belirli public açılan alanlar dışında her şeyin en azından authentication gerektirdiği belirtiliyor.
    • Authorization açısından, bazı servislere erişim için "super user" rolü, diğerlerine ise "normal user" rolü gerekiyor ve bu problem Clock üzerinden çözülüyor.
    34:16Authentication ve Authorization Testi
    • Postman kullanarak "b.wilson" kullanıcı adıyla authentication başlatılıyor ve token alınıyor.
    • Authentication olmadan yapılan istekler 401 Unauthorized hatası alırken, yetkili kullanıcılar için 403 Forbidden hatası alınıyor.
    • Backend, kullanıcıyı nereden alırsa alsın önemli değil, yetkisi varsa ve otantike olabiliyorsa işlem yapabiliyor.
    35:24Token İçeriği ve Rol Kontrolü
    • Token çözülerek geçerliliği kontrol ediliyor ve token içinde kullanıcı bilgileri (ad, soyad, künye, imaj) alınabiliyor.
    • Backend'deki kontrol, kullanıcıya "super user" veya "normal user" rolünün olup olmadığına bağlı olarak farklı HTTP kodları döndürüyor.
    • Kullanıcının rolü yoksa 403 Forbidden hatası alınıyor.
    36:48Rol Tanımlama ve Atama
    • Client uygulamasında kendi rolleri tanımlanıyor: "normal user" ve "super user".
    • Kullanıcı gruplarına roller atanıyor, böylece bir kullanıcı bir gruba atandığında tüm kullanıcılar o rollere sahip oluyor.
    • Token güncellenerek kullanıcıya atanan rollerle birlikte yeni token alınıyor.
    40:19Authorization Testi ve Sonuç
    • "J. Brown" kullanıcı adıyla login yapıldığında normal user rolü alınıyor ve normal işlemleri yapabiliyor.
    • "B. Wilson" kullanıcı adıyla login yapıldığında super user rolü alınıyor ve hem normal hem de super işlemleri yapabiliyor.
    • Gateway'den sonra her mikro servis authorization işlemi yapacaksa, bunu nasıl yöneteceğimiz konusunda soru soruluyor.
    42:51Keycloak Adaptörleri ve Alternatif Yaklaşımlar
    • Keycloak, Spring Security için adaptörler sunuyor, ancak bu adaptörlerin her istekte Keycloak'a token doğrulaması yapması tehlikeli olabilir çünkü Keycloak servisi down olduğunda sistem çalışmaz.
    • Performans açısından da dezavantajı olabilir çünkü her istekte Keycloak'a network isteği yaparak performans sorunlarına neden olabilir.
    • Alternatif olarak Spring Boot Starter OIDC Resource Server modülünü kullanarak adaptör kullanmadan doğrulama yapılabilir.
    45:04Token Doğrulama Yöntemi
    • Spring Boot Starter OIDC Resource Server modülünü projeye ekleyerek web security config'inde security context repository kurgulanabilir.
    • Keycloak token'ını decode etmek için JWT decoder kullanılır ve bu decoder, Keycloak'ın token'ı decode ederken kullandığı sertifikaya erişim sağlar.
    • Keycloak'ın token'ı için JWKS URI'si kullanılarak sertifika bilgileri alınır ve bu sertifika ile token doğrulanır.
    50:04Keycloak Veritabanı ve Failover Yapıları
    • Keycloak, verilerini relational veritabanında tutar ve desteklediği veritabanları arasında PostgreSQL, SQL Server, Oracle gibi yaygın veritabanları bulunur.
    • Keycloak, hem tek veri merkezinde hem de birden fazla veri merkezinde cluster yapılandırması yapılabilir.
    • Failover durumları için Keycloak'un dokümantasyonundaki server installation and configuration, server administration bölümlerine bakılabilir.
    54:42Keycloak Entegrasyonu Başlangıcı
    • Öncelikle hata veren bir uygulama örneği gösteriliyor ve Keycloak entegrasyonu nasıl yapılacağı gösterilecek.
    • Entegrasyon için "keycloak-js" kütüphanesi npm ile yükleniyor.
    • Kütüphane yüklendikten sonra "main.js" dosyasına entegrasyon yapılacak.
    56:11Keycloak Nesnesi Oluşturma
    • Keycloak kütüphanesi import edilerek "Keycloak" nesnesi oluşturuluyor.
    • Keycloak nesnesi initialize edilirken "url", "realm" ve "clientId" parametreleri alıyor.
    • Bu parametreler environment değişkenleri olarak tutulması öneriliyor çünkü uygulama farklı ortamlarda çalışabilir.
    58:40Keycloak Oluşturma ve Initialize Etme
    • Keycloak instance oluşturulduktan sonra "keycloak.init()" metodu ile initialize ediliyor.
    • Initialize metodu bir promise döndürüyor ve "onLoad" parametresi ile nasıl davranacağı belirleniyor.
    • "check-sso" ve "login-required" olmak üzere iki seçenek kullanılabilir.
    59:36Login ve Token İşlemleri
    • "check-sso" kullanıldığında, eğer lokalde bir token varsa metot içine girer, yoksa hiçbir işlem yapmaz.
    • "login-required" kullanıldığında, token yoksa otomatik olarak login sayfasına yönlendirir.
    • Login işlemi tamamlandıktan sonra token bilgileri store'a set edilebilir.
    1:03:13Token Kullanımı ve Logout
    • Alınan token, app içerisinde authorization olarak kullanılabilir.
    • Logout işlemi için "keycloak.logout()" metodu çağrılabilir.
    • Logout metodu asenkron olduğu için beklenmesi gerekiyor.
    1:04:34Login ve Logout İşlemleri
    • Logout butonuna basıldığında, kullanıcı sayfasından çıkarılıp clock işlemi gerçekleştirilir.
    • Logout işlemi yapıldığında, kullanıcı otomatik olarak belirli bir sayfaya yönlendirilir, ancak logout metoduna parametre vererek yönlendirme sayfasını kendimiz belirleyebiliriz.
    • Login ve logout işlemleri yapılabildiği gibi, sayfanın CSS görünümünü de kişisel tercihlerimize göre değiştirebiliriz.
    1:06:28Token Refresh İşlemi
    • Token'ın süresi dolmadan önce otomatik olarak yenilenmesi için key clock'un refresh update token metodu kullanılır.
    • Interval tanımlayarak belirli aralıklarla (örneğin 10 saniyede bir) token'ın süresi kontrol edilir ve 70 saniyeden az kaldığında refresh işlemi gerçekleştirilir.
    • Token'ın süresi dolmadan önce yenilenmesi sayesinde kullanıcıya herhangi bir engel olmadan uygulamayı kullanma imkanı sağlanır.
    1:09:49Session Management
    • Key clock ile session management yapılabilir, kullanıcıların kimin içeride kimin dışarıda olduğu gibi bilgileri görüntülenebilir.
    • Token refresh işlemi sırasında bir sorun oluşursa, kullanıcı otomatik olarak login sayfasına yönlendirilir.
    • Key clock'un login metodu da ekstra olarak kullanılabilir, özellikle cookie kullanımda.
    1:13:54Soru ve Cevap
    • Taner adlı katılımcı, yüksek yük alan uygulamalarda ve mikro servis mimarisinde key clock'un kullanımını sordu.
    • Key clock sadece bir noktaya kadar kullanılabilir, daha sonra Redis gibi sistemlerle session management yapılabilir.
    • Key clock token'ına ek bilgiler eklenebilir ve arka tarafta Redis üzerinden kullanıcı bilgileri tutulabilir.
    1:16:55Kerberos Authentication Kullanımı
    • Windows authentication için Kerberos authentication kullanılabilmektedir.
    • Kerberos, MIT tarafından geliştirilen, dağıtık yapıda çalışan ve Windows domain oturumlarının da desteklendiği güvenli bir protokoldür.
    • Kerberos authentication için LDAP sistemlerinde KDC (Kerberos Ticket Distribution Server) bileşeni bulunmaktadır.
    1:18:30Kerberos Authentication Kurulumu
    • Kerberos authentication için etc klasöründeki krb5.conf gibi dosyaların düzenlenmesi gerekmektedir.
    • User federation modülünde Kerberos integration açılarak, server principi ve realm bilgileri girilmelidir.
    • Authentication kısmında Kerberos alternatif olarak veya tek başına seçilebilir, böylece cookie, Kerberos veya form gibi farklı oturum açma akışları uygulanabilir.
    1:20:36Toplantının Kapanışı
    • Toplantıda hem frontend projesindeki çalışmalar hem de Keycloak tarafındaki çalışmalar takip edilmiştir.
    • Kayıt linki MIT grubunda paylaşılacak ve baştan izlenebilecektir.
    • Toplantı 24:00 saatte kapanmıştır.

    Yanıtı değerlendir

  • Yazeka sinir ağı makaleleri veya videoları özetliyor