[Java] Socket, Securité IE

Socket, Securité IE [Java] - Programmation

Marsh Posté le 27-06-2001 à 15:59:34    

Je souhaite tout simplement en voyer une String vers une IP. Quand je lance l'action, j'obtiens avec Internet Explorer le message 'Exception' suivant :
 
com.ms.security.SecurityExceptionEx[ListenerBouton.actionPerformed]: cannot access "127.0.0.1":1050
 
j'ai fais un  
try {envoi des données}
catch{exception}
 
Il fait l'exception et n'envoie rien.
Merci de votre aide.

Reply

Marsh Posté le 27-06-2001 à 15:59:34   

Reply

Marsh Posté le 27-06-2001 à 17:45:54    

IE a son propre SecurityManager pour gérer la sécurité avec les applets Java.
 
Tu dois insérer dans ton code (avant l'envoi de ta String) cette ligne pour autoriser les accès réseau :
PolicyEngine.assertPermission(PermissionID.NETIO);
 
PolicyEngine est une classe Microsoft du package com.ms.security, tu dois donc ajouter dans ton classpath le fichier Ljnxb5bl.zip qui se trouve chez moi dans le répertoire winnt\Java\Packages.
 
Pour plus d'infos
http://support.microsoft.com/suppo [...] 5/6/22.ASP

Reply

Marsh Posté le 27-06-2001 à 20:26:18    

Merci beaucoup, mais je n'ai nulle part sur mon disque (notemment dans windows\java\packages) le fichier Ljnxb5bl.zip.
Comment faire ?

Reply

Marsh Posté le 27-06-2001 à 22:22:24    

Tu dois trouver une archive zip qui contient les classes Java de Microsoft dont les classes du package com.ms.security. Apparement le fichier n'a pas tjs le même nom mais il doit faire 5mo.

Reply

Marsh Posté le 28-06-2001 à 11:17:43    

J'ai trouvé le .zip. Ca compile sans erreur, mais le résultat est toujours le même.
Voici le bout de code :
 
PolicyEngine.assertPermission(PermissionID.NETIO);
 
try
{
 Socket s = new Socket("127.0.0.1",1050);
 DataOutputStream fout = new DataOutputStream(s.getOutputStream());
 fout.writeChars("Si ca marche, c'est top !" );
   
 s.close();
 source.setText("Data sent" );
}
catch(Exception except)
{
 source.setText(except.toString());
}

Reply

Marsh Posté le 28-06-2001 à 13:07:41    

Tu dois signer ton applet

Reply

Marsh Posté le 28-06-2001 à 13:27:21    

Avant il faut que ton applet soit dans une archive jar ou cab
 
Je te donne un exemple avec une applet archivée dans un cab
 
Tu dois d'abord downloader le sdk de microsoft:
http://www.microsoft.com/java/sdk/default.htm
 
// Création d'un cab
cabarc -p -r n monApplet.cab monApplet.class
 
// Création d'un certificat pour la signature de l'archive cab
makecert -sk cle -n "CN=BLABLA" certificat.cer
cert2spc certificat.cer certificat.spc
 
// Signature du cab
signcode -j javasign.dll -jp LOW -spc certificat.spc -k cle monApplet.cab
 
pour plus d'infos
http://www.microsoft.com/Java/security/default.htm
 
Le mieux serait de signer ton applet(dans une archive jar) avec les outils de Sun mais ca déconnait chez moi à cause d'IE et son système de sécurité à la con. Si jamais tu utilise la méthode de Sun et que ca marche ca m'intéresse.

Reply

Marsh Posté le 03-07-2001 à 15:11:09    

Ca marche toujours pas !

Reply

Marsh Posté le 03-07-2001 à 15:41:01    

up please une réponse !!!


---------------
Virtual 3D WorlD
Reply

Marsh Posté le 03-07-2001 à 15:53:36    

Tu as quoi comme erreur !

Reply

Marsh Posté le 03-07-2001 à 15:53:36   

Reply

Marsh Posté le 03-07-2001 à 15:56:00    

tjr la meme !
com.ms.security.SecurityExceptionEx[ListenerBouton.actionPerformed]: cannot access "127.0.0.1":12
 
L'applet est signé avec sdk


---------------
Virtual 3D WorlD
Reply

Marsh Posté le 03-07-2001 à 16:00:51    

Tu as quoi comme paramètres de sécurité dans IE


---------------
En théorie, il n'y a pas de différence entre la théorie et la pratique. Mais en pratique, il y en a.
Reply

Marsh Posté le 03-07-2001 à 16:03:39    

par defaut


---------------
Virtual 3D WorlD
Reply

Marsh Posté le 03-07-2001 à 16:10:34    

ton pb peut venir de pas mal de choses
 
Modifie la permission NETIO en SYSTEM pour avoir tout les droits
PermissionID.SYSTEM
 
Est-ce que tu utilises d'autres archives que celle qui contient ton applet, si oui tu dois les signer aussi.


---------------
En théorie, il n'y a pas de différence entre la théorie et la pratique. Mais en pratique, il y en a.
Reply

Marsh Posté le 03-07-2001 à 16:12:44    

tout est fait le NETIO  et l'applet est singet !  :eek2:


---------------
Virtual 3D WorlD
Reply

Marsh Posté le 03-07-2001 à 16:19:25    

tu as mis ton applet dans un cab ou un jar ?
 
c quoi le code de la page html


---------------
En théorie, il n'y a pas de différence entre la théorie et la pratique. Mais en pratique, il y en a.
Reply

Marsh Posté le 03-07-2001 à 16:21:42    

cab
 
<HTML>
<HEAD>
<TITLE>Java Socket</TITLE>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="localhost" CONTENT="no-cache">
</HEAD>
<BODY>
 
<APPLET ARCHIVE="sock.cab" CODE="sock.class" WIDTH=300 HEIGHT=200 ALT="Vous ne pouvez lire les applets Java" BORDER=0>
</APPLET>
</BODY>
</HTML>


---------------
Virtual 3D WorlD
Reply

Marsh Posté le 03-07-2001 à 16:25:39    

le port 12 de ta machine est ouvert ???


---------------
En théorie, il n'y a pas de différence entre la théorie et la pratique. Mais en pratique, il y en a.
Reply

Marsh Posté le 03-07-2001 à 16:30:08    

Oui je port 12 est ouvert ! :)


---------------
Virtual 3D WorlD
Reply

Marsh Posté le 03-07-2001 à 16:42:18    

regarde tes messages privées


---------------
En théorie, il n'y a pas de différence entre la théorie et la pratique. Mais en pratique, il y en a.
Reply

Marsh Posté le 03-07-2001 à 16:48:10    

voila envoyer mais le code est bon c le certificat micro$oft ki plante enfin il plante pas mais ca marche po


---------------
Virtual 3D WorlD
Reply

Marsh Posté le 03-07-2001 à 17:14:49    

Remplace ca:
Socket s = new Socket("127.0.0.1",useport);
PolicyEngine.assertPermission(PermissionID.NETIO);
...
 
par ca:
PolicyEngine.assertPermission(PermissionID.NETIO);
Socket s = new Socket("127.0.0.1",useport);
...
 
Les permissions doivent être définies avant les accès IO
 
 
Je te donne 2 fichiers bat pour la creation et la signature du cab
 
creerCAB.bat
------------
@echo off
 
echo -----------------------------------
echo Creation de l'archive sock.cab
echo -----------------------------------
cabarc -p -r n sock.cab *.class
 
 
signerCAB.bat
-------------
@echo off
 
echo -----------------------------------
echo Signature du fichier sock.cab
echo -----------------------------------
setreg 1 true
 
IF NOT EXIST certificat.cer makecert -sk cle -n "CN=CtHuLhU50" certificat.cer
IF NOT EXIST certificat.spc cert2spc certificat.cer certificat.spc
 
signcode -j javasign.dll -jp LOW -spc certificat.spc -k cle sock.cab


---------------
En théorie, il n'y a pas de différence entre la théorie et la pratique. Mais en pratique, il y en a.
Reply

Marsh Posté le 04-07-2001 à 01:26:36    

Normalement, une applet non signée ne peut ouvrir de connection réseau QUE vers la machine d'où elle a été téléchargée...Si ton applet doit être utilisée par d'autres que toi, je te déconseille les solutions à base d'install de packages MS :  
1 - les gens qui utilisent IE les ont pas forcément,  
2 - les gens qui utilisent pas IE seront baisés

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed