Socket, Securité IE [Java] - Programmation
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
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 ?
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.
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());
}
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.
Marsh Posté le 03-07-2001 à 15:41:01
up please une réponse !!!
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
Marsh Posté le 03-07-2001 à 16:00:51
Tu as quoi comme paramètres de sécurité dans IE
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.
Marsh Posté le 03-07-2001 à 16:12:44
tout est fait le NETIO et l'applet est singet !
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
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>
Marsh Posté le 03-07-2001 à 16:25:39
le port 12 de ta machine est ouvert ???
Marsh Posté le 03-07-2001 à 16:30:08
Oui je port 12 est ouvert !
Marsh Posté le 03-07-2001 à 16:42:18
regarde tes messages privées
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
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
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
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.