Geniş Ekran Modu Otomatik Ekran Boyutu Font Boyutunu Azalt Font Boyutunu Azalt Font Boyutunu Normal Yap Yazdır

Kullanıcının Bilgisayarında İşlem Yapmaya Yetkili Güvenilir (Signed) Applet Yazmak

Applet kodlarınız kendi makinenizde sorunsuzca çalışıyor ancak webe attığınızda çalışmıyorsa sebebi appletlerin güvenlik sınırlamalarıdır. Bunu aşmak için appleti imzalamalısınız ve kullanıcılarda appletin bilgisayarlarında yapabileceklerini kabul ettiklerinde ancak applet çalışacaktır. Buna Yerel Dosya Sistemine Erişmeye Yetkili Güvenilir Applet yazmakta denebilir.

Kullanıcıların yerel dosya sistemine erişim hakları ile  güvenilir uygulamalar oluşturma, bu gün bile hayati bir konu olmaya devam etmektedir.

Java Applet yazanların  karşılacağı en önemli problemlerden birisi makinelerinde yazdıkları kodun web sayfalarında çalışmaması olacaktır.

Örneğin aşağıdaki gibi bir applet uygulaması programcının makinesinde şu şekilde çalışırken:

Kullanıcının Bilgisayarında İşlem Yapmaya Yetkili Güvenilir (Signed) Applet Yazmak

Aynı uygulama web üzerinde şöyle bir sonuç verecektir:

Kullanıcının Bilgisayarında İşlem Yapmaya Yetkili Güvenilir (Signed) Applet Yazmak

Sorunun detaylarına baktığınızda aşağıdaki gibi bir ekranla karşılaşacaksınız:

Kullanıcının Bilgisayarında İşlem Yapmaya Yetkili Güvenilir (Signed) Applet Yazmak

Detaylara indiğinizde de karşılaştığınız kod satırı aşağıdaki gibi olacaktır.

Kullanıcının Bilgisayarında İşlem Yapmaya Yetkili Güvenilir (Signed) Applet Yazmak

Bu kodlar:
 

java.lang.reflect.InvocationTargetException
    at com.sun.deploy.util.DeployAWTUtil.invokeAndWait(DeployAWTUtil.java:116)
    at sun.plugin2.applet.Plugin2Manager.runOnEDT(Plugin2Manager.java:3415)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Plugin2Manager.java:2967)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1444)
    at java.lang.Thread.run(Thread.java:619)
Caused by: java.security.AccessControlException: access denied (java.util.PropertyPermission user.home read)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
    at java.security.AccessController.checkPermission(AccessController.java:546)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
    at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1285)
    at java.lang.System.getProperty(System.java:650)
    at javax.swing.filechooser.FileSystemView.getHomeDirectory(FileSystemView.java:393)
    at javax.swing.plaf.metal.MetalFileChooserUI.installComponents(MetalFileChooserUI.java:253)
    at javax.swing.plaf.basic.BasicFileChooserUI.installUI(BasicFileChooserUI.java:136)
    at javax.swing.plaf.metal.MetalFileChooserUI.installUI(MetalFileChooserUI.java:126)
    at javax.swing.JComponent.setUI(JComponent.java:662)
    at javax.swing.JFileChooser.updateUI(JFileChooser.java:1763)
    at javax.swing.JFileChooser.setup(JFileChooser.java:360)
    at javax.swing.JFileChooser.<init>(JFileChooser.java:333)
    at javax.swing.JFileChooser.<init>(JFileChooser.java:286)
    at test.<init>(test.java:29)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at java.lang.Class.newInstance0(Class.java:355)
    at java.lang.Class.newInstance(Class.java:308)
    at sun.plugin2.applet.Plugin2Manager$12.run(Plugin2Manager.java:2955)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Exception: java.lang.reflect.InvocationTargetException

 

Kullanıcının Bilgisayarında İşlem Yapmaya Yetkili Güvenilir (Signed) Applet Yazmak

Kodlarda kısaca anlatılmak istenen Applet içerisindeki bir bölümün kullanıcı bilgisayarı üzerinde işlem yapmak istemesi ve bunun için kullanıcıdan izin alınmadığı için kodun çalıştırılamayacağı.
 
Problem bazı kodların  sadece kullanıcı (Client) tarafında çalışması gerektiğidir. Örnegin bir resim dosyasının kullanıcı bilgisayarı üzerinde küçültülmesi gibi.  Applet Java programlarının, server bilgisayarlarındaki java kodlarının kullanıcı bilgisayarına otomatik olarak (browser aracılığı ile) indirilen ve çalıştırılan versiyonudur. Yani kullanıcı browseri aracılığı ile sizin yazdığınız programı kullanır.

Bu noktada appletin güvenliği devreye girer çünkü kullanıcı kodun içeriğini bilemiyeceği için güvenlik riski olan bir durum ortaya çıkar fakat Java nın yazarları buna çare olarak security manager adlı sistemi geliştirmişlerdir,böylece koda bazı sınırlamalar koyarak kullanıcıya zarar vermesi önlenir.
Appletlerdeki bu sınırlamayı aşmanın tek yolu signed applet yaratmaktır.Signed applet yapmak için şu adımları izleyin .
 
Genel olarak programcılar Güvenilir Applet Teknolojisine (Trusted Applet veya Signed Applet) yabancıdırlar. Bu durum kullanıcı dosyalarında arama, değiştirme gibi işlemleri imkansız hale getirir.
 
Aşağıdaki işlemlerde nasıl Güvenilir Applet oluşturulacağı ile ilgili bilgiler bulunmakta. Bunun için JDK 1.3 veya yukarısı gerektiğini unutmayın.

Güvenilir Applet oluşturmak için JDK dışında bize gerekenler javac, keytool ve jarsigner adlı dosyalar olacaktır.

keytool kişisel ve özel anahtar çiftini ( private and public keys ) oluşturmak ve kontrol etmek için gereklidir. Ayrıca Anahtarların saklandığı özel dosya .keystore dosyasınıda keytool oluşturmaktadır.

jarsigner ise apllet classımıza sahip jar dosyamızı Dijital işağretleme Kimliğimizle işağretmek için kullanacağımız araçtır.

 

Şimdi yukarda çalışmayan appletimizi çalıştırmak için yapnanuz gerekenler:


Öncelikle yazdığınız kodu aşağıdaki gibi derlemelisiniz: yani .java uzantılı kodlarınız byte koda .class uzantısına çeviriyoruz

javac test.java

Kullanıcının Bilgisayarında İşlem Yapmaya Yetkili Güvenilir (Signed) Applet Yazmak

şimdi elde ettiğimiz .class uzantılı dosyamızdan .jar uzantılı java dosyamızı oluşturuyoruz:

jar cvf test.jar test.class

Kullanıcının Bilgisayarında İşlem Yapmaya Yetkili Güvenilir (Signed) Applet Yazmak

Şimdi appletimizi çalıştıracak html kodumuzu düzenliyoruz:

  Burda eklediğimiz kısım applet tagı içerisindeki archive="test.jar" şeklindeki kısımdır.

<HTML>
<HEAD>
   <TITLE>Applet HTML Page</TITLE>
</HEAD>
<BODY>

<H3><HR WIDTH="100%">Applet HTML Page<HR WIDTH="100%"></H3>

<P>
<APPLET codebase="classes" code="test.class" archive="test.jar" width=350 height=200></APPLET>
</P>

<HR WIDTH="100%"><FONT SIZE=-1><I>Generated by NetBeans IDE</I></FONT>
</BODY>
</HTML>

 

Applet bu halde çalıştığında makalenin başındaki giriş çıkış yetkisizliği mesajı vererek çalışmayacaktır. Ancak unutulmaması gereken bu durumun her applet için geçerli olmadığı sadece kullanıcı bilgisayarında işlem yapacak appletler için durumun böyle olduğudur.

Şimdi appletimiz için özel ve genel anahtarlar oluşturup bu anahtarlarla appleti imzalamak olacak:

Aşağıdaki komutla appletimiz için genel ve özel ( privative ve public ) anahtarı oluşturuyoruz.

keytool -genkey -alias test -validity 365

Kullanıcının Bilgisayarında İşlem Yapmaya Yetkili Güvenilir (Signed) Applet Yazmak

Şimdide oluşturulan bu anahtarla appletimizi işağretleyelim ( Applet Sign ):

jarsigner test.jar test

Kullanıcının Bilgisayarında İşlem Yapmaya Yetkili Güvenilir (Signed) Applet Yazmak

Şimdi hazırız, html ve class ve jar dosyalarımızı webe atıp oradan testimizi yapıyoruz:

Ekrana aşapğıdaki gibi bir onay ekranı geliyor, bu ekran kullanıcıdan "bak bu applet senin bilgisayarına format bile atabilir, buna izin veriyor ve bu appleti yazan Muhammed Zeydaga güveniyor musun? " şeklinde bir onayı bir kereliğine isteyecektir.

Kullanıcının Bilgisayarında İşlem Yapmaya Yetkili Güvenilir (Signed) Applet Yazmak

Kullanıcı şartları kabul ederse:

Kullanıcının Bilgisayarında İşlem Yapmaya Yetkili Güvenilir (Signed) Applet Yazmak

Artık appletiniz herşeyi yapmaya yetkili olacaktır.

Kullanıcının Bilgisayarında İşlem Yapmaya Yetkili Güvenilir (Signed) Applet Yazmak

 

Kaynak:

Bu içerikle ilgili Yorumunuzu eklemek için burayı tıklayınız.

Yorumlar

1 yorum
18 Mart 2011 17:42:21, Cuma
Osman
Çok güzel anlatmışsınız, gerçekten faydalı oldu Teşekkürler.

Java Applet Temelleri

Java ve Javascript
Javadan javascripte ve Javascriptten java ya aktarılan değerler
Java Applet JFileChooser
Java swing arayüzlerinden - dosya sistemine erişimi sağlayan JFileChooser sınıfının detayları
Java Aplleti imzalamak (Signed applet)
Security manager adlı sistemi sayesinde koda bazı sınırlamalar koyarak kullanıcıya zarar vermesi önl...
Java ile HTML form POST
Örnek bir kod
Java Applet ve Dosya POST işlemi
Birden fazla dosyayı sunucudaki bir dosyaya POST edebilen java uygulaması
Java Applete Resim Eklemek
Birden fazla resmi yüklemek
Japplet Projesinin Oluşturulması Japplet Standart ...
Japplet projesinin oluşturulması japplet standart metotları ve metotların görevleri
Japplet Projesinin Oluşturulması
Japplet standart metotları ve metotların görevleri
Japplet Projesinin Oluşturulması Japplet Standart ...
Japplet standart metotları ve metotların görevleri
İlk Java Jappletinin Çalıştırılması
Applet viewerın kullanılması, html applet yapısı, html olarak jappletin Çalışması için gerekenler
İlk Java Jappletinin Çalıştırılması
Applet viewerın kullanılması, html applet yapısı, html olarak jappletin Çalışması için gerekenler
İlk Java Jappletinin Çalıştırılması
Applet viewerın kullanılması, html applet yapısı, html olarak jappletin Çalışması için gerekenler
İlk Java Jappletinin Çalıştırılması
Applet viewerın kullanılması, html applet yapısı, html olarak jappletin Çalışması için gerekenler
Java Applet Nedir?
Java applet nedir?apllet Örnekleri,applet ve japplet farkı
Java Applet Nedir?
Applet örnekleri,applet ve japplet farkı
Javada Timer Kullanımı
Belirli saniye aralıklarla çalışan uygulama
Java Applet ile Veri Tabanı Bağlantısı
Uygulamanın jar dosyasına tıklarsanız ekranın bir görüntüsü önünüze gelecektir.
Java da GridLayut Kullanımı
Izgara mantığıyla çalışan Java Layoutu
Java Applet Layout Kullanımları
setLayout(null); setLayout(new FlowLayout()); setLayout(new BorderLayout()); new CardLayout(); Yerle...
Java Applet JTextArea Nesnesi ve Kullanımı
Basit bir text editör yapımı

Ödev Gönder | İncelenmeyi Bekleyen Ödevler | Uygulama Resimleri | Uygulama Resmi Gönder | İnternet Üzerinden Sınav | Test Sorusu Gönder | Sınıf Karneleri | Anketler | Linkler
www.dijitalders.com

bilgidijitalders.com
Bu sayfalar en iyi 1024 x 768 ekran çözünürlüğünde görüntülenir.
Site içerikleri, site kullanıcıları tarafından yollanan içeriklerdir. Her hangi bir içeriğin lisanslı yahut şahsınıza ait olduğunu tarafımıza iletirseniz gerekli düzenlemeyi yapacağız. Kullanılan içerikler, siteyi kullanan öğrenciler ve araştırmacılar için kolaylık sağlamak amacıyla oluşturulmuştur.
Sayfada HATA! Olduğunu Düşünüyorsanız | Sık Kullanılanlara Ekle | www.dijitalders.com'u Ana Sayfam Yap | Web Tasarımcıya e-Posta
Bu site 906,161 kişi tarafından ziyaret edilmiştir.