Spring Security Framework Harezmi Bilişim Çözümleri

Benzer belgeler
Spring için Acegi Güvenlik Sistemi. Hazırlayan : Akif Burak Tosun Hacettepe Universitesi İletişim: thunder_burak@hotmail.

Spring Ekosisteminde Kurumsal Yazılım Geliştirme. Kenan Sevindik Harezmi Bilişim Çözümleri A.Ş.

Spring Framework Eğitimi

Intercepting Filter Tasarım Şablonu KurumsalJava.com

Nesne Oluşturma Sırasının Tanımlanması Otomatik Veri Tipi Dönüşümü Tekil Nesneler ve Bean Scope Scope Bazlı Nesnelerin Enjeksiyonu Tanımlanabilir

BioAffix Ones Technology nin tescilli markasıdır.

BioAffix Ones Technology nin tescilli markasıdır.

Üst Düzey Programlama

Üst Düzey Programlama

Üst Düzey Programlama

State Yönetimi. Bir web sayfası ile sunucu arasındaki etkileşim ;

PAKET TRANSFER SİSTEMİ

Kurumsal Bilgi Sistemleri ve Güvenlik 1/ 36

ORM & Hibernate. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4 ahmetdemirelli@sabanciuniv.edu

Nordic Edge ile kurumsal kimlik yöne4mi

Kurumsal Kimlik Yönetimi ve Güçlü Kimlik Doğrulama. Yılmaz Çankaya

BioAffix Ones Technology nin tescilli markasıdır.

BioAffix Ones Technology nin tescilli markasıdır.

Java EE web uygulamaları geliştirmek için kullanılan açık kaynak web uygulama framework üdür.

T.C.SOSYAL GÜVENLİK KURUMU. Genel Sağlık Sigortası Medula Optik E-rapor Web Servisleri Kullanım Kılavuzu

FortiGate & FortiAP WiFi Controller

Spring Application Framework e Giriş

Medula Eczane Stok Bilgileri Web Servisleri Kullanım Kılavuzu

HTTP. (Hyper Text Transfer Protocol)

Web Application Penetration Test Report

Bir 802.1x Kimlik Kanıtlama Uygulaması: EDUROAM

Exchange Server Kurulumu

Basit bir web uygulaması

T.C.SOSYAL GÜVENLİK KURUMU. Genel Sağlık Sigortası Medula Optik E-rapor Web Servisleri Kullanım Kılavuzu

Spring Application Framework Harezmi Bilişim Çözümleri

T.C.SOSYAL GÜVENLİK KURUMU. Genel Sağlık Sigortası Medula Optik E-rapor Web Servisleri Kullanım Kılavuzu

FINDIK Herkese Açık Filtre

Spring Framework Eğitimi

Üst Düzey Programlama

Medula Eczane E-Reçete Web Servislerinin Kullanım Kılavuzu (Test amaçlıdır, ödemeye esas teşkil etmeyecektir)

WEB UYGULAMA GÜVENLİĞİ HAKKINDA. Mesut Güngör İzmir Yüksek Teknoloji Enstitüsü Bilgi İşlem Daire Başkanlığı

HP PROCURVE SWITCHLERDE 802.1X KİMLİK DOĞRULAMA KONFİGÜRASYONU. Levent Gönenç GÜLSOY

ULAKAAI Kimlik Federasyonu. Serdar Yiğit ULAKNETÇE 2011

Veri Tabanı-I 1.Hafta

Web Uygulama Güvenliği Kontrol Listesi 2010

ÖZGÜR YAZILIMLAR İLE J2EE

AĞ KULLANIM KILAVUZU. Yazdırma Günlüğünü Ağa Kaydetme. Sürüm 0 TUR

TÜRKİYE ELEKTRONİK FON ALIM SATIM PLATFORMU WEB SERVİS İŞLEMLERİ

MVC Kul anıcı Doğrulama ve Yetkilendirme MVC Filtreler Action Filter FilterAttribute IActionFilter FilterAttribute IActionFilter

T.C.SOSYAL GÜVENLİK KURUMU. Genel Sağlık Sigortası Medula Optik E-reçete Web Servisleri Kullanım Kılavuzu

JBoss Seam. Melih Sakarya

ĐSTEMCĐ SUNUCU SĐSTEMLER DERSĐ FĐNAL ÇALIŞMASI SORULAR YANITLAR

MOKA ÖDEME SERVİSİ ORTAK ÖDEME SAYFASI ENTEGRASYON DOKÜMANI V

PAKET TRANSFER SİSTEMİ

JavaServerFaces. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4

MOKA ÖDEME SERVİSİ IFRAME ENTEGRASYON DOKÜMANI

19 Şubat 2016 Cuma

Medula Eczane E-Reçete Web Servislerinin Kullanım Kılavuzu (Test amaçlıdır, ödemeye esas teşkil etmeyecektir)


Java EE 5 Teknolojileri Jboss Seam

PAKET TRANSFER SİSTEMİ

ELEKTRONİK SAĞLIK KAYITLARI GÜVENLİĞİNDE IEEE 802.1x STANDARDININ KULLANILMASI

Web 2.0 Örnek Eğitim Notu

Üst Düzey Programlama

KÜTÜPHANE TEK KULLANIMLIK ŞİFRE YETKİLENDİRMELİ ÖNBELLEKLEME SERVİSİ

KÜTÜPHANE YETKİLENDİRMELİ ÖNBELLEKLEME SERVİSİ

FortiGate (Terminal Server) Terminal Sunucu Üzerinden Gelen Kullanıcılar

Üst Düzey Programlama

Öğr. Gör. Serkan AKSU 1

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

HTML isteklerini anlayarak HTML sonucu üreten ve yaygın olarak kullanılan temel Servlet sınıfı HttpServlet tir.

ICE BİLİŞİM TEKNOLOJİLERİ WEB SERVİS KILAVUZU. SERVİS LİNK: DÜZENLEME TABLOSU

Kütüphane Tek Kullanımlık Şifre Yetkilendirmeli Önbellekleme Servisi

Cyberoam Single Sing On İle

RoamAbout Wireless Access Points

9. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

Yeni Nesil Ağ Güvenliği

Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 1

Cybersoft Bilişim Teknolojileri Sunucu Tarafı Programlaması Kursu Final soruları. Tarih: 27 Kasım 2010 Saat: 13:30 Süre: 3 saat

Algorithm of Your Life. AJAX ve...

Rahman USTA Editör Altuğ B. ALTINTAŞ Papatya Yayıncılık Eğitim

SAKAI Öğrenme Yönetim Sisteminde Tek Şifre Yönetimi

Spring ve Hibernate Entegrasyonu

.com. Özcan Acar 2009 Kurumsal Java.com

ORT3167 İnternet Programcılığı 1 Ders1-2. Öğr. Grv. Aybike ŞİMŞEK

OTURUM AÇMA ADLARI. Tavsiye Edilen Önhazırlık Enterprise Manager'i kullanabilmek.

JAVA RMI ve Hibernate teknolojileri kullanılarak çok amaçlı bir yazılım altyapısı hazırlanması

Business Delegate Tasarım Şablonu KurumsalJava.com

Fiery Command WorkStation 5.8 ile Fiery Extended Applications 4.4

1 WINDOWS SERVER 2012 GENEL BAKIŞ 1 Giriş 1 Bu Kitapta 5 Çıkış Hikâyesi 6 Sürümler 7

MVP, Observer ve Mediator Örüntüleri ile Yeniden Kullanılabilir Uygulama Bileşenleri Geliştirme

REQUEST QUERY STRING. Sayfalar: default.aspx ve sorgu_sayfasi.aspx. default.aspx sayfası: sorgu_sayfasi.aspx sayfası:

8. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

BitTorrent İstemci Kullanımı

HSE RADAR. İş Sağlığı ve Güvenliği Yönetimi Uygulama, Denetim, Eğitim ve Takip HSE GLOBAL YAZILIM A.Ş. 11 Mart 2016

LDAP ile Güvenli Kullanıcı Kontrol Sistemi

Messenger Sunucularının Kurulum Dokümanı

W3af ile Web Uygulama Güvenlik Testleri

Üst Düzey Programlama

Güniçi Piyasası Web Servis Metotları

SQLMap ile CSRF Bypass İbrahim BALİÇ

TÜBİTAK UEKAE ULUSAL ELEKTRONİK ve KRİPTOLOJİ ARAŞTIRMA ENSTİTÜSÜ

MapCodeX Cloud Server. Kullanım Kılavuzu

Transkript:

Spring Security Framework Harezmi Bilişim Çözümleri www.java-egitimleri.com 1

Ajanda Güvenlik İhtiyaçlarına Genel Bakış Spring Security Nedir? & Özellikleri Neden Spring Security? Spring Security Yapıtaşları Spring Security Filter Zinciri Kimliklendirme & Kimliklendirme Modeli Başarılı ve Başarısız Login Akış Örnekleri www.java-egitimleri.com 2

Ajanda Yetkilendirme Yetkilendirme Akışı & Yetkilendirme Modeli Namespace Konfigürasyonu Namespace ile Spring Security Kullanımı www.java-egitimleri.com 3

Güvenlik İhtiyaçlarına Genel Bakış Kurumsal uygulamaların 2 temel güvenlik ihtiyacı söz konusudur 1.Kimliklendirme (Authentication) 2.Yetkilendirme (Authorization) Web isteklerinin yetkilendirilmesi Servis metodlarının yetkilendirilmesi Domain nesnelerine yetki bazında erişim sağlanması Nesnelerin attribute'ları düzeyinde erişim www.java-egitimleri.com 4

Spring Security Nedir? Kurumsal Java uygulamaları için authentication ve authorization servisleri sağlayan bir framework 2004 yılında Spring üzerine kurulu Acegi Security Framework adı ile ortaya çıkmıştır 2007 yılına gelindiğinde Spring ürün portföyünde yer almıştır www.java-egitimleri.com 5

Özellikleri Pek çok değişik kimliklendirme (authentication) yöntemini desteklemektedir Form tabanlı, basic, digest, NTLM, Kerberos, JAAS... CAS, OpenID, Siteminder gibi SSO çözümleri ile entegre çalışabilmektedir Kullanıcı bilgisinin değişik realm lerdan (Memory, LDAP, JDBC...) alınmasını sağlar www.java-egitimleri.com 6

Özellikleri Çalışma zamanında dinamik olarak kullanıcı bilgisinin değiştirilmesini sağlar Aynı kullanıcının sisteme erişim sayısını yönetir Otomatik olarak remember me desteği sunar URL, metod ve domain nesneleri düzeyinde yetkilendirme sağlar www.java-egitimleri.com 7

Özellikleri RMI ve HttpInvoker gibi remote method çağrılarında kimlik bilgisinin istemciden sunucuya taşınmasını sağlar Web Container ları ile entegre çalışabilir Güvenlikli bir HTTP iletişimi kurmaya yardımcı olur Güvenlikle ilgili HTTP response header'larını yönetebilir www.java-egitimleri.com 8

Neden Spring Security? Neden web.xml security değil? Neden JAAS değil? www.java-egitimleri.com 9

Neden web.xml security değil? Web container a bağımlı bir kimliklendirme altyapısı ortaya çıkar Web kaynaklarını(url) yetkilendirmek için sınırlı bir model mevcuttur Uygulamada metod ve domain nesneleri düzeyinde yetkilendirme yapmak mümkün değildir www.java-egitimleri.com 10

Neden JAAS değil? JRE düzeyinde karmaşık tanımlar yapılmaktadır Yine container düzeyinde bağımlılık ortaya çıkmaktadır Kimliklendirme tarafı istenirse JAAS a havale edilebilir www.java-egitimleri.com 11

Temel Yapıtaşları: Kullanıcı Rol İlişkisi Onay Personeli Rolü Sorgulama Personeli Rolü Giriş Personeli Rolü Secure Resource Secure resource, Bir web sayfası, Servis metodu veya Domain nesnesi olabilir Kullanıcı www.java-egitimleri.com 12

Temel Yapıtaşları : Rol Grubu Rol İlişkisi Onay Personeli Rolü Sorgulama Personeli Rolü Giriş Personeli Rolü Sistem Admin Rolü Kullanıcı www.java-egitimleri.com 13

Temel Yapıtaşları: Domain Sınıfları Uygulamanın security context bilgisinin tutulduğu yerdir Default olarak bu bilgi ThreadLocal bir yapıda tutulur Kullanıcıların yetkileri GrantedAuthority ile ifade edilir Başarılı bir kimliklendirme sonucunda UserDetails Authentication'a, o da SecurityContext'e Yerleştirilir Uygulamaya o anda erişen kullanıcı bilgisi principal olarak ifade edilir username bilgisini kullanarak UserDetails ilgili realm'den yüklenir Security Context Bilgisini Request aralıklarında HttpSession'da saklar Principals bilgisi (çoğu zaman) UserDetails tipinde bir nesnedir, uygulamaların User sınıfları bu arayüzü implement eder www.java-egitimleri.com 14

Spring Security Filter Zinciri HTTP Request Kullanıcının oturum sayısını kontrol eder ChannelProcessing Filter ConcurrentSession Filter Web isteğinin HTTPS den gelmesini garanti eder SecurityContext Persistence Filter Web isteğinin sonunda SecurityContext i HttpSession da saklar www.java-egitimleri.com 15

Spring Security Filter Zinciri Logout işlemini gerçekleştirir LogoutFilter Web isteğinin getremoteuser(), isuserinrole() metodlarında SecurityContext i kullanmasını sağlar UsernamePassword Authentication Filter SecurityContext HolderAware RequestFilter RememberMe Authentication Filter Authentication işlemini gerçekleştirir Web isteğinde remember-me cookie mevcutsa, değerini SecurityContextH older a set eder www.java-egitimleri.com 16

Spring Security Filter Zinciri FilterSecurityInt erceptor'de meydana gelen AuthenticationEx ception ve AccessDeniedExc eption'ların uygun sayfalara yönlendirilmesini sağlar Anonymous AuthenticationFilter ExceptionTranslation Filter FilterSecurity Interceptor securewebpage.jsp SecurityContext Holder a anonymous Authentication token ı koyar Hedef URL e yetkiye göre erişilmesini sağlar. AuthenticationE xception veya AccessDeniedEx ception fırlatabilir www.java-egitimleri.com 17

Spring Security Konfigürasyonu <filter> <filter-name> springsecurityfilterchain </filter-name> <filter-class> org.springframework.web.filter.delegatingfilterproxy </filter-class> </filter> <filter-mapping> <filter-name> springsecurityfilterchain </filter-name> <url-pattern>/*</url-pattern> </filter-mapping> web.xml içerisinde DelegatingFilterProxy ile Bir Servlet Filter tanımı yapılır www.java-egitimleri.com 18

Spring Security Konfigürasyonu DelegatingFilterProxy sınıfı, web.xml içerisindeki tanım ile ApplicationContext içinde tanımlı Filter bean'ları arasında köprü vazifesi görür Delegating FilterProxy Servlet Container Web Resource Web client ApplicationContext springsecurityfilterchain FilterChainProxy'de web.xml içerisinde tek bir filter ile bütün security filter zincirinin tanımlanmasını sağlar Filter 1 Filter 2 Filter n www.java-egitimleri.com 19

Kimliklendirme Modeli Kimliklendirmenin başladığı yer AbstractAuthentication ProcessingFilter'dır. Her auth yönteminin kendine özel bir sub class'ı mevcuttur Başarılı kimliklendirme sonucu Authentication nesnesi oluşur Farklı auth yöntemlerinin kendine özel token impl mevcuttur Kimliklendirmeyi AuthenticationManager koordine eder. İşi AuthenticationProvider nesnelerine delege eder Asıl işlem Auth Provider'da gerçekleşir Her auth yönteminin kendine özel www.java-egitimleri.com bir impl mevcuttur 20

Başarısız Bir Login Akışı 1:HTTP request to editor.jsp FilterSecurity Interceptor 2:ExceptionTranlationFilter Redirect to authentication entry point: login.jsp 3:Submit form to: /j_spring_security_check ksevindik ********** Throws Authentication Exception ROLE_EDITOR editor.jsp UsernamePassword Authentication Filter 4:try to authenticate user Giriş hatası 6:Redirect to authentication failure url: login.jsp?hata=true Authentication Manager 5:throws Authentication Exception www.java-egitimleri.com 21

Başarılı Bir Login Akışı 1:HTTP request to editor.jsp FilterSecurity Interceptor 2:ExceptionTranlationFilter Redirect to authentication entry point: login.jsp 3:Submit form ksevindik ********** to:/j_spring_security_ch eck ROLE_EDITOR editor.jsp UsernamePassword Authentication Filter 7:Redirect to targeturl if found 4:Try to authenticate user index.jsp 7:Redirect to defaulttargeturl 6:Store Authentication token SecurityContextHolder Authentication Manager 5:Return Authentication token www.java-egitimleri.com 22

Yetkilendirme Yetkilendirme işlemine tabi tutulan herhangi bir nesneye secure object denir Aşağıdakilerden herhangi birisi secure object olabilir Web istekleri Metot çağrıları Domain nesneleri www.java-egitimleri.com 23

Yetkilendirme Spring Security, yetkilendirme için AOP around advice yöntemini kullanır Her bir secure nesne tipine göre farklı interceptor'ler devreye girer Web istekleri FilterSecurityInterceptor Metot çağrıları MethodSecurityInterceptor Domain nesneleri AspectJ veya ACL www.java-egitimleri.com 24

Yetkilendirmenin İşleyişi Secured object tipine göre farklı İnterceptor'ler vardır SecuritytInterceptor AccessDecisionManager, erişim yetkisi için Voter nesnelerine danışır Secured object'e erişim Secured object'e erişim interceptor tarafından yakalanır Her bir secured object İçin tanımlanmış erişim kuralları (ConfigAttribute) vardır Secured Object Config Attribute AccessDecisionManager SecurityContext Authentication Access Decision Voter Interceptor Authentication, ConfigAttributes, ve secured object üçlüsünü AccessDecisionManager'a iletir * www.java-egitimleri.com 25

Yetkisiz Erişim Örneği 1:HTTP request from User with ROLE_READER to editor.jsp SecurityContext PersistenceFilter Throws AccessDenied Exception FilterSecurity Interceptor ROLE_EDITOR editor.jsp Authentication nesnesi HttpSession'dan alınıp ThreadLocal Security Context'e yerleştirilir 3:ExceptionTranlationFilter Redirect to accessdenied page accessdenied.jsp www.java-egitimleri.com 26

Namespace Konfigürasyonu Acegi Security deki en büyük problem bean ların ugun biçimde ve sırada tanımlanması idi Spring Security 2.0 ile birlikte gelmiştir Basit bir XML tanımı ile bir grup bean konfigürasyonu ile yapılmak istenen tanımlama yapılabilmektedir www.java-egitimleri.com 27

Namespace Konfigürasyonu <security:ldap-server/> tanımı uygulama içinde LDAP ayarlarının yapılması ve test amaçlı embedded LDAP server ın çalıştırılması için yeterli olmaktadır Geliştiriciler LDAP kabiliyetini kullanmak için hangi bean tanımlarının yapılması, hangi property değerlerinin set edilmesi gerektiğini bilmek zorunda değildirler www.java-egitimleri.com 28

Namespace ile Spring Security Kullanımı Form login konfigürasyonu Logout işlemi Kriptolu şifrelerin kullanılması Beni hatırla kabiliyeti Oturum yönetimi Web kaynaklarının yetkilendirilmesi Metot düzeyinde yetkilendirme www.java-egitimleri.com 29

İletişim Harezmi Bilişim Çözümleri Kurumsal Java Eğitimleri http://www.java-egitimleri.com info@java-egitimleri.com www.java-egitimleri.com 30