Buradasın
Spring Security ile Yetkilendirme ve Kimlik Doğrulaması Eğitimi
youtube.com/watch?v=6VDJ9St0MkIYapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir konuşmacının Spring Security kullanarak web uygulamalarında yetkilendirme ve kimlik doğrulama işlemlerini anlattığı bir eğitim içeriğidir.
- Video, Spring Security için gerekli bağımlılıkların tanıtımıyla başlayıp, Spring Security XML dosyasının detaylı incelemesine geçiyor. Konuşmacı, security.intercept-url, security.form-login, security.authentication-manager gibi XML etiketlerinin işlevlerini açıklıyor, veritabanından kullanıcı bilgilerini çekme, yetkilendirme ve giriş yapma sürecini adım adım anlatıyor. Ayrıca, giriş denetleme sınıfındaki kontrol metotlarını, oturum açma ve çıkış yapma işlemlerini de detaylı şekilde gösteriyor.
- Eğitim, Apache Tomcat üzerinde çalışan bir blog projesi üzerinden pratik uygulamalar içermekte ve oluşturulan projeyi çalıştırarak admin ve gas kullanıcılarının yetkilerini test etmektedir. Spring Security'nin MD5 şifreleme algoritması kullanarak kullanıcı parolalarını nasıl test ettiği ve veritabanından kullanıcı rollerini nasıl çektiği de videoda gösterilen konular arasındadır.
- 00:01Spring Security Bağımlılıkları
- Bu videoda Spring Framework'ün güvenlik çatısı olan Spring Security ile yetkilendirme ve kimlik doğrulaması işlemlerinin CSF projesi içerisinde nasıl yapıldığı anlatılacak.
- Proje için kullanılacak bağımlılıklar: Spring Security Web Artifact ID, Spring Security Config ve Spring Security Taglib.
- Spring Security Config, Spring Security için yapılmış olan configurationları barındıran kütüphane; Taglib ise Spring Security için yazılacak XML dosyasındaki tagleri sağlayan kütüphane.
- 01:32Spring Configuration XML Dosyası
- Spring Configuration XML dosyasında Security tag'i içerisinde hangi sayfaların erişime kısıtlanacağı, hangi sayfaların herkese erişime açık olacak ve login sayfası kimlik doğrulamanın nasıl yapılacağı gibi tanımlamalar yapılır.
- SecurityInterceptUrl tag'i ile hangi sayfaların erişime kısıtlanacağı ve hangi sayfaların herkese açık olacağını tanımlamak için pattern özelliğine ilgili sayfanın atanması yapılır.
- SecurityFormLogin tag'i ile login işlemlerinin yapılacağı sayfa ve başarısız olması durumunda yapılacak işlemlerin tanımlanması yapılır.
- 06:01Yetkilendirme ve Kimlik Doğrulama İşlemleri
- SecurityAuthenticationManager içinde SecurityAuthenticationProvider ve SecurityPasswordEncoder (MD5) tanımlanır, böylece kullanıcı parolaları MD5 ile şifrelenip veritabanındaki ilgili kullanıcı adının parola kısmıyla karşılaştırılır.
- SecurityGdbcUserService tanımlaması ile hangi veritabanının tablolarının kullanılacağı belirlenir.
- UsersByUsernameQuery ile girilen kullanıcı adı ve şifrenin doğru olup olmadığının tespiti yapılır, ardından AuthoritiesByUsernameQuery ile kullanıcının yetkisi tespit edilir.
- 09:08Veritabanı Bağlantısı ve Hata Mesajları
- Veritabanı bağlantısı için org.spring.framework.gdbc.DataSourceDriverManager sınıfı kullanılır ve driver class name, URL, username ve password bilgileri tanımlanır.
- Spring Security, hatalı işlemler durumunda hata mesajları üretir ve bu mesajlar MessageSource sınıfı üzerinden kullanıcıya döndürülür.
- Giriş yap sayfasında EventType.PREVIEW ile sayfa yüklenmeden hemen önce user kontrol metodu çağrılır ve oturum açılıp açılmadığı kontrol edilir.
- 11:51Giriş Denetleme Sınıfı ve Oturum Kontrolü
- Giriş denetleme sınıfında kontrol metodu, öncelikle SecurityContextHolder.getContext().getAuthentication() ile bir authentication nesnesi elde eder.
- Anonim user, Spring Security için oturum açmamış kullanıcı adıdır; oturum açılmamışsa anonim user, açılmışsa oturum açan kişinin kullanıcı adı kullanılır.
- Oturum açılmışsa login sayfası devre dışı kalır ve indekse yönlendirilir, açılmamışsa login sayfası erişimine açık kalır.
- 14:30Giriş Yapma İşlemi
- Spring Security içerisinde oturum açma denemesi yaparken, kullanıcı adı için "j_username", şifre için "j_password" id'leri kullanılır.
- "Remember me" seçeneği için "spring-security-remember-me" id'si atanır ve Spring Security bu id'den kendisi yakalayıp karar verir.
- Login metodu içerisinde ExternalContext elde edilir ve request dispatcher ile girilen id'lerin işlenmesi sağlanır.
- 19:01XML Yapılandırması
- XML'de context param ile Spring Configuration XML dosyası kayda geçirilir.
- ContextLoaderListener ve RequestContextListener listeleri, Spring Security'nin düzgün çalışabilmesi için gerekli sınırlardır.
- Filter SpringSecurityFilterChain adındaki filter delegate, filter proxy sınıfını filter class olarak tanıtıyor ve chain filter mapping'de her yerde etkin olacağı belirtiliyor.
- 21:03Proje Çalıştırma ve Test
- Projenin ana sayfasında admin ve gas için yetkilendirilmiş olduğu belirtiliyor.
- Giriş yapıldığında sağ kısımda "Giriş ve Çıkış Yapmak İçin Tıklayın" yazısı görünür.
- "Remember me" özelliği aktif olduğunda, tarayıcıdan çıkış yapıldığında tekrar giriş sayfasına yönlendirilmez.
- 22:14Yetkilendirme ve Çıkış İşlemi
- Admin sayfasına erişim yetkisi, veritabanındaki user tablosundan çekilen rol yetkisine göre belirlenir.
- Yetkisiz erişim denemesi yapıldığında "Bu sayfaya erişim yetkiniz yoktur" mesajı görüntülenir.
- Çıkış yapmak için içerik ekle sayfasında sağ üst kısımda "Çıkış Yap" seçeneği kullanılır ve logout işlemi için projenin yolunu elde edip "/spring-security/logout" eklenir.