UYAP jnlp Dosyası Web Tarayıcıya Yönlendirmiyor

Merhabalar,

Pardus 19 Gnome ortamı kurulu olan bilgisayarda oracle-java-8 ve icedtea-netx kurdum. Sonrasında UYAP girişi için kullanılan UYAPGiris.jnlp dosyasını indirip çalıştırdım. Akıllı kartı okuma ile ilgili bir sorun olmadığı ve resimde gözüktüğü üzere doğrulama aşamasını sorunsuz tamamladığı halde javaws web tarayıcıyı başlatmıyor.

Yüklü olan java ve alternatif çıktıları şu şekilde:

$ java -version
java version “1.8.0_241”
Java™ SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot™ 64-Bit Server VM (build 25.241-b07, mixed mode)

$ javaws -version
selected jre: /usr/lib/jvm/default-java
WARNING: package javax.jnlp not in java.desktop
icedtea-web 1.8 (1.8)

Son olarak terminal üzerinden javaws ile UYAPGiris.jnlp dosyasını çalıştırdığımda şu şekilde bir hata verip program burada takılı kalıyor.

Bu hata ile ilgili midir bilemiyorum fakat olması gereken şu şekilde; doğrulama aşamasından sonra web tarayıcı üzerinde uyap sitesine yönlendirilip kullanıcı girişi yapılmış yeni bir sayfanın açılması gerekiyor.

2020-02-13 00:01:51 FINE   tr.gov.tubitak.uekae.esya.api.cmssignature.CMSSignatureUtil addDigestAlgIfNotExist Signer's digest algorithm is added to SignedData:tr.gov.tubitak.uekae.esya.api.asn.x509.EAlgorithmIdentifier@51
2020-02-13 00:01:51 INFO   tr.gov.tubitak.uekae.esya.api.cmssignature.signature.BaseSignedData addSigner Add signer : 1727 ms. 
2020-02-13 00:01:51 SEVERE tr.gov.uyap.system.login.esign.ui.MainFrame$5 propertyChange jsessionId: JSESSIONID=0000iVPwWOA-uDBeSr0R7bc_CDn:18irdbbd7
Exception in thread "AWT-EventQueue-1" java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
	at tr.gov.uyap.system.login.esign.ui.MainFrame$5.propertyChange(MainFrame.java:432)
	at java.desktop/java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:341)
	at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:333)
	at java.desktop/javax.swing.SwingWorker$SwingWorkerPropertyChangeSupport.firePropertyChange(SwingWorker.java:870)
	at java.desktop/javax.swing.SwingWorker$SwingWorkerPropertyChangeSupport$1.run(SwingWorker.java:876)
	at java.desktop/javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(SwingWorker.java:847)
	at java.desktop/sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:112)
	at java.desktop/javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(SwingWorker.java:857)
	at java.desktop/javax.swing.Timer.fireActionPerformed(Timer.java:317)
	at java.desktop/javax.swing.Timer$DoPostEvent.run(Timer.java:249)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
	at net.sourceforge.jnlp.runtime.JNLPClassLoader.loadClass(JNLPClassLoader.java:1640)
	... 23 more

Yardımcı olabilirseniz sevinirim düzeltmek için pek çok şey denedim fakat başarılı olamadım.

Daha önce benzer bir sorun benim de başıma gelmişti. Java alternatiflerinden OpenJDK’ yi seçin. Oracle Java seçiliyken UYAP çalışmıyor.

Openjdk ile de denedim fakat openjdk üzerinden javaws çalıştırınca jnlp üzerinden açılan uygulama akıllı kartı görmüyor, (akia sorunsuz bir şekilde kartı okuyabilmesine rağmen openjdk karta erişemiyor) bundan dolayı tarayıcıya yönlendirme yapılan aşamaya gelinemiyor.

Pardus 19 dys kurulumunu diye arama yapın. Sonra tekrar deneyin bunları

meb.jnlp dosyasını kaydedin sakla diyorsa sakla deyin.

İndirilenler klasörünü açarak meb.jnlp dosyasını bulun.

Sağ tıklayarak açılan pencereden birlikte aç/ diğer uygulama ile aç/ özel bir komut kullan / görüntüle / lib/jvm/oracle-java8-jre-amd64 java/bin/javaws adımları uygulanır javaws seçildikten sonra aç denir.

1 Beğeni

Yanıtlarınız için teşekkürler, Jnlp dosyasını çalıştırmada bir sorun yaşamıyorum, oracle-jre kullandığım zaman akıllı kartı görmüyor icedtea kullandığımda ise web tarayıcıya yönlendirme yapmıyor.

Özetle iki farkli java için iki farklı problem var ve forumlarda yazan bir çok öneriyi denememe rağmen çözemedim. Daha doğrusu bu şekilde bir hatanın olduğu paylaşım bulamadım.

Oracle jre ile biz akis kartı çalıştırabiliyoruz.
şu sitedeki isoyu kurup bir deneybilirmisiniz.

Malesef söylediğiniz sürüm üzerinden sıfır kurulum yaptıktan sonra yüklü gelen java ile de denedim aynı hata burada da geçerli. Akia komutu ile akıllı kartı sorunsuz gördüğü halde oracle-java8 ve java-8-openjdk ile denediğimde akıllı kartı görmedi.

Sorunun bilgisayardan kaynaklı olduğunu düşüneceğim fakat iki farklı model bilgisayarda da aynı hata olduğundan bu seçenek de zayıf kalıyor.

Benzeri bir sorunla karşılaşan veya bu soruna çözüm getirebilecek olanlar varsa lütfen buradan yazınız.

Hocam birde verdiğim isoya pale-moon internet tarayıcıyı kurup onun üzerinden işlemleri yapmayı bir dener misiniz?
https://www.palemoon.org/#

Yardımınız için teşekkürler, yazıda belirtildiği şekilde kurulum yaptığımda bu kez icedtea ile çalıştırdığım javaws dahi akıllı kartı görmedi. Bir başka deyişle JVM Settings kısmında path olarak belirtilen javayı tanımlayınca jnlp dosyası "akia"yı çalıştıramıyor. İlgili path’i silince icedtea ile kartı okuyor.

Anladığım kadarıyla

  • icedtea-netx openjdk-11’e bağımlı,

  • oracle-java-8 veya diğer java sürümleri akia’yı desteklemiyor (akia sadece icedtea üzerinde çalışıyor)

  • icedtea ile jnlp’yi çalıştırınca ilngiç bir şekilde web starter çalışmıyor (temel sorun bu)

  • openjdk veya oracle-java üzerinden akia’nın neden çalışmadığı veya nasıl çalıştırılabileceğini bulabilirsek de çalışacak gibi.

Farklı denemeler yapmaya devam edeceğim, yardımlarınız için teşekkürler, çözüm bulabilirsem belirteceğim.

Hocam imzaer kurmanız gerekiyor.

https://yazilim.kamusm.gov.tr/?q=/node/5

wget https://yazilim.kamusm.gov.tr/sites/default/files/public/esya-imzager-2.5.3-unix.zip

unzip esya-imzager-2.5.3-unix.zip

chmod 777 esya-imzager-2.5.3-unix.sh

sudo ./esya-imzager-2.5.3-unix.sh

Akis kurulumu

sudo echo "deb https://depo.anadolupanteri.net/debian/ buster main" | sudo tee /etc/apt/sources.list.d/anadolupanteri.list

sudo wget -qO - https://depo.anadolupanteri.net/debian/aplinux.key | sudo apt-key add -


`sudo apt install akis`

Tarayıcıya yönlendirmeme sorunu ile alakalı,

Sorunun çözümü için adalet bakanlığına çözüm ile dün mail attım.

Bu sorun direk UYAP’dan çözülene kadar böyle bir “workaround” ürettim:

  • Depo’dan openjdk-8-jre'yi ve icedtea-netx'i kurun (# apt install openjdk-8-jre).
  • Bu linkteki dosyayı indirin (direk açmayın) https://avukat.uyap.gov.tr/uyap-giris/uyap-giris.jnlp
  • uyap-giris.jnlp’nin olduğu klasörde bu komutu çalıştırın: JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/" javaws uyap-giris.jnlp. İsterseniz bunun için bir masaüstü kısayolu vs de oluşturabilirsiniz.

Alternatif olarak temelli bir çözüm için /usr/share/icedtea-web/bin/javaws.sh'ın içindeki JRE= ile başlayan satırı diyezleyip altına JRE=/usr/lib/jvm/java-8-openjdk-amd64 ekleyebilirsiniz. JNLP yazılımların hepsi artık java 8 ile açılacak. JNLP Java 8 sonrası deprecate edildiğinden sorun çıkmamalı.

2 Beğeni

Bunun sebebi web starter’ın çalışmaması değil.

UYAP jnlp dosyası token’i aldıktan sonra Base64 ile encode ediyor, sonra da bunu linke dahil edip tarayıcıda açıyor.

Yani kod şuna benziyor:

token = URLEncoder.encode(DatatypeConverter.printBase64Binary(jsessionId.getBytes(Charset.forName("utf-8"))), "utf-8");

final String url = String.valueOf(application.getLoginEndpoint()) + "&token=" + token;

BrowserUtil.openWebpage(url);
MainFrame.this.dispose();
System.exit(1);

Burada göreceğiniz üzere Base64 encode için kullanılan fonksiyon DatatypeConverter.printBase64Binary. Zaten hata da bunu diyor (Exception in thread "AWT-EventQueue-1" java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter).

Bunu sağlayan kütüphale Java 9’dan itibaren deprecated, 11’den itibaren silinmiş durumda. Yerine Base64.encodeBase64String kullanmaları lazım, bu hem Java 8’de var, hem de 8’den sonrasında.

2 Beğeni

Çok teşekkür ederim, belirttiğiniz adımları uygulayınca sorun çözüldü.

Bu konu son cevaptan 30 gün sonra otomatik olarak kapatıldı. Yeni cevap girilmesine izin verilmiyor.

© 2020 TÜBİTAK