Son Yazılar

Ücretsiz SVN Hosting Geliştirmekte olduğunuz projeler için ücretsiz olarak size SVN hizmeti sunan bir site var. Projelerinizi oluşturduktan sonra, yapacaklarınızı, buglarınızı kaydedip...

Readmore

Sitem hacklendi ne yapmalıyım Merhaba, Son günlerde, web sitenizin adresini girdiğinizde, web siteniz yerine aşağıdaki gibi hata mesajları alıyorsanız, Parse error: syntax error, unexpected...

Readmore

Ücretsiz Web Hosting Geliştirmekte olduğunuz web siteleri için ücretsiz hosting arıyorsanız aşağıdaki adres tam size göre. http://www.000webhost.com adresine girerek bu servisten faydalanabilirsiniz....

Readmore

www.SevgiKorkmaz.com Rss

apache-realm

Posted on : 10-12-2008 | By : admin | In : Java, Yazılım

1


Realm yetkili kullanıcıları tesbit etmek amacıyla kullanıcı adları ve şifrelerinin barındırıldığı ayrıca kullanıcı ve rol eşleştirmelerinin tutulduğu bir veritabanıdır.
– Kullanıcı adı
– Şifreler
– Kullanıcı – Rol Eşleştirmeleri


• Tomcat 5, plug-in bileşenleri tarafından gerçeklenmesi için org.apache.catalina.Realm arabirimi geliştirmiştir.
• 5 çeşit standart realm plug-in’i bulunmaktadır.
– JDBCRealm
– DataSourceRealm
– JNDIRealm
– MemoryRealm
– JAASReaml

Realm apache konfigürasyon dosyaları içerisinde bulunan server.xml de tanımlanır.
– < Realm > tanimi < engine >,< context > ve ya < host > elemanlarının içinde yapilabilir.
– < Engine > elemani olarak tanimlanirsa tüm web uygulamaları tarafından paylaşılır.
– < Host > elemanı olarak tanımlanırsa tanımlandığı host altında bulunan tüm web uygulamaları tarafından paylaşılır.
– < Context > elemanı olarak yazılmışsa sadece o contextde bulunan web uygulaması tarafından kullanılır.
– Realm tanımları ezilebilir.


Şifre güvenliği
• Sisteminizde ya da veritabanında kullanıcıların şifrelerinin açık durması güvenli değildir.
• Realm ile şifrelerin sindirilmesi desteklenir.
• Şifrelerin sindirilmesi java.security.MessageDigest sınıfının desteklediği (SHA, MD2, ya da MD5) algoritmaları ile yapılabilir.
• Realm tanımı yapılırken sindirim algoritması digest özelliği ile tanımlanır.



Uygulama sırasında Realm’ın authenticate() metodu çağrıldığında şifre digest özelliği ile belirtilen şekilde sindirilir ve Realm’de tutulan şifre ile karşılaştırılır.

• Düz metin şifreler iki şekilde sindirilir.
– Uygulama içinden yazılıyorsa
org.apache.catalina.realm.RealmBase sınıfının Digest() methodu çağrılır.
– Komut satırında aşağıdaki komut çalıştırılır.
java org.apache.catalina.realm.RealmBase -a {sindirim algoritması} {düzmetin-şifre}


Realm tarafından basılan debug ve hata mesajları realmın
barındırıcısı ile ilişkili log konfigürasyonu tarafından saklanır.
– Context
– Host
– Engine


JDBC Realm
• JDBCRealm kullanıcıları JDBC sürücüsü ile erişilen bir ilişkisel veritabanında tutar.
• Kullanıcı adları, şifreler ve rollerle ilgili tabloların bulunduğu herhangi bir veritabanı Realm tarafından kullanılabilir.
• Kullanıcı tablosu en az kullanıcı adını ve şifresini barındıran iki kolondan oluşmalıdır.
• Kullanıcı adlarının ve rollerinin bulunduğu bir Rol tablosu tanımlanmalıdır.
• Bir kullanıcının bir ya da birden fazla rolu olabilir.
• Bir kullanıcının hiç rolü olmayabilir.


JDBC Realm kullanmak için aşağıdaki adımlar izlenmelidir.
– Veritabanında ilgili tablolar oluşturulmalıdır.
– Tomcat için bu tabloları okumaya yetkili kullanıcı oluşturulmalıdır.
– $CATALINA_HOME/server/lib yada $CATALINA_HOME/common/lib
dizini altına ilgili JDBC sürücüsü kütüphanesi konulmalıdır.
– $CATALINA_HOME/conf/server.xml dosyasında tanımı
yapılmalıdır.
– Tomcat yeniden başlatılmalıdır.

JDBC Realm için tablo yaratalım

create table KULLANICI (
KULLANICI_ADI varchar(15) not null primary key,
KULLANICI_SIFRESI varchar(15) not null
);
create table KULLANICI_ROLU (
KULLANICI_ADI varchar(15) not null,
ROL_ADI varchar(15) not null,
primary key (KULLANICI_ADI, ROL_ADI)
);

Server.xml deki tanım aşağıdaki gibi olmalıdır.

< Realm className="org.apache.catalina.realm.JDBCRealm"

debug=”99″
driverName=”org.gjt.mm.mysql.Driver”
connectionURL=”jdbc:mysql://localhost/authority?user=vtyskull
anicisi&password=vtyssifresi”
userTable=”KULLANICI”
userNameCol=”KULLANICI_ADI”
userCredCol=”KULLANICI_SIFRESI”
userRoleTable=”KULLANICI_ROLU”
roleNameCol=”ROL_ADI”/>

• Kullanıcı korunan bir kaynağa ulaşmak istediğinde Tomcat Realm’ın authenticate() methodunu çağırır. Yani veritabanında yapılan değişiklikler anında geçerli olur.
• Kullanıcı bir kere sisteme girdikten sonra bilgileri kullanıcının sistemde olduğu sürece Tomcatde cachelenir.Log-in olan kullanıcı için Veritabanında yapılan değişiklikler kullanıcı tekrar login olana kadar geçerli olmaz.
• Tomcat’de veritabanındaki kullanıcı tanımlarını yönetme özelliği bulunmamaktadır. Bu web uygulamalarının özelliğidir.

Data Source Realm

• DataSourceRealm kullanıcıları JDBC Verikaynağı olarak adlandırılan bir JNDI üzerinden erişilen bir ilişkisel veritabanında tutar.
• Kullanıcı adları, şifreler ve rollerle ilgili tabloların bulunduğu herhangi bir veritabanı Realm tarafından kullanılabilir.

DataSourceRealm kullanmak için aşağıdaki adımlar izlenmelidir.
– Veritabanında ilgili tablolar oluşturulmalıdır.
– Tomcat için bu tabloları okumaya yetkili kullanıcı oluşturulmalıdır.
– JDBC VeriKaynağı tanımlanmalıdır.
– DataSource f$CATALINA_HOME/conf/server.xml dosyasında
tanımı yapılmalıdır.
– Tomcat yeniden başlatılmalıdır.


Server.xml deki tanım aşağıdaki gibi olmalıdır.

< Realm className="org.apache.catalina.realm.DataSourceRealm"

debug=”99″

dataSourceName=”jdbc/authority”

userTable=”KULLANICI” userNameCol=”KULLANICI_ADI”

userCredCol=”KULLANICI_SIFRESI”

userRoleTable=”KULLANICI_ROLU” roleNameCol=”ROL_ADI”/>

• Kullanıcı korunan bir kaynağa ulaşmak istediğinde Tomcat Realm’ın authenticate() methodunu çağırır. Yani veritabanında yapılan değişiklikler anında geçerli olur.
• Kullanıcı bir kere sisteme girdikten sonra bilgileri kullanıcının sistemde olduğu sürece Tomcatde cachelenir.Log-in olan kullanıcı için Veritabanında yapılan değişiklikler kullanıcı tekrar login olana kadar geçerli olmaz.
• Tomcat’de veritabanındaki kullanıcı tanımlarını yönetme özelliği bulunmamaktadır. Bu web uygulamalarının özelliğidir.

JNDI REALM

• DataSourceRealm kullanıcıları JNDI üzerinden erişilen bir LDAP dizin sunucusunda tutar.
• Realm’in LDAP ile arasındaki bağlantı connectionURL konfigürasyonu ile kurulur.
• Kullanıcının bilgilerini almak için bağlantı kurulduğunda realm kendisini verilen kullanıcı adı ve şifresi ile tanıtır. Eğer bu bilgiler
yoksa bağlantı anonim bağlantı olur.
• Doğrulanabilen her kullanıcı connectionURL de LDAP da bağlantı cümleciğinde de belirtilen ayrı bir kayıt ile tanıtılabilmelidirler.
• Bu kullanıcı kaydı doğrulanmak için gereken kullanıcı adını barındırmalıdır.
• Realm’in LDAP ile arasındaki bağlantı connectionURL konfigürasyonu ile kurulur.

memory realm
• MemoryRealm’de kullanıcı adları şifreler ve roller $CATALINA_HOME/conf/tomcat-users.xml dosyasinda tutulur.
• MemoryRealm kullanıldığında Tomcat ayağa kalkarken bu dosyadaki verileri okur.
• Bu dosya yapılan değişiklikler Tomcat yeniden başlatılana kadar geçerli olmaz.

• Kullanici dosyasi kök elemanı elemani olan bir
dosyadır.
• < tomcat-users> elemanı içinde her kullanıcı için aşağıdaki
bilgileri barındıran elemanı bulunur:
– name – Kullanıcı adı
– password – Şifre
– roles – virgülle ayrılmış roller listesi.

< tomcat-users>
< user name="tomcat" password="tomcat" roles="tomcat" />
< user name="role1" password="tomcat" roles="role1" />
< user name="ikisi" password="tomcat" roles="tomcat,role1" />

JAAS REALM
• JAASRealm kullanıcıları Java Authentication & Authorization
Service (JAAS) çatısı ile doğrular.
• JAAS SDK 1.4 de bulunmaktadır.
• JAAS Java 2 SDK 1.3 de seçeneğe bağlı olarak bulunmaktadır

Sonraki konu : Apache Guvenlik Yöneticisi

Comments (1)

[...] Kurulum ve Konfigurasyonu Apache Realm ve Yetkilendirme Apache Guvenlik [...]

Write a comment

Advertise Here