2010-07-20 5 views
1

Je crée une connexion socket avec un applet non signé à un autre hôte et je reçois java.security.AccessControlException: accès refuséSigné applet java

Si je signe cette applet soit « auto-cert » ou "CA cert" l'applet obtient-elle les autorisations pour créer une connexion socket vers un hôte différent (pas le même hôte que celui à partir duquel elle a été téléchargée) et fait-elle un message de sécurité si cela a été certifié par une autorité de certification?

Merci

Répondre

4

Si vous ne signez pas l'applet, le code qui accède à des ressources locales ne seront pas exécutées en aucune façon.

Si vous signez l'applet avec un auto-certificat, l'utilisateur final recevra uniquement un message d'avertissement demandant l'autorisation. Cependant, vous devez toujours envelopper l'appel à l'intérieur d'un AccessController#doPrivileged(). Si vous signez l'applet avec un $$$-cert, l'utilisateur final n'obtiendra pas de message d'avertissement.

+0

Il ne devrait pas être nécessaire d'utiliser 'doPrivileged' s'il n'y a pas de code non approuvé sur la pile. La boîte de dialogue d'avertissement est sensiblement la même, que le certificat soit valide ou auto-signé. –

+0

Je suppose qu'une connexion de socket de domaine croisé n'est pas approuvée cependant? – Adam

0

Vous devriez voir un dialogue approprié pour le certificat, sauf s'il est désactivé ou si ce certificat est toujours accepté. Ce n'est que si l'utilisateur est d'accord que le code reçoit tous les privilèges.

Une meilleure approche consisterait à s'en tenir uniquement à l'hôte de même origine.