2012-06-07 3 views
0

Я хочу сделать простой аутентификации HTTP в апплет Java, который я пытаюсь так:Java-апплет не поддерживает Authenticator.setDefault

static class MyAuthenticator extends Authenticator 
     { 
      public PasswordAuthentication getPasswordAuthentication() 
       { 
      // I haven't checked getRequestingScheme() here, since for NTLM 
      // and Negotiate, the usrname and password are all the same. 
      System.err.println("Feeding username and password for " + getRequestingScheme()); 
      return (new PasswordAuthentication(kuser, kpass.toCharArray())); 
      } 
     } 
    public void paint(Graphics g) { 
     try 
     { 
     // String authenticate=Authenticator.getPasswordAuthentication(); 
      Authenticator.setDefault(new MyAuthenticator()); 
      URL url = new URL("http://Ip_address/jpg/image.jpg"); 
      InputStream ins = url.openConnection().getInputStream(); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(ins)); 
      String str; 
       while((str = reader.readLine()) != null) 
        System.out.println(str); 

      //int s=2+2; 

      g.drawString("hello world", 50, 60); 
     } 
     catch (Exception e) 
     { 
      System.out.println("Exception : "+ e); 
     } 
    } 

Но я получаю ошибку на этой линии

Authenticator.setDefault(new MyAuthenticator()); 

исключение:

Exception : java.security.AccessControlException: access denied 
    (java.net.NetPermission setDefaultAuthenticator) 

Может кто-нибудь сказать мне, что теперь делать, или как проверить подлинность веб-сайта внутри из Java-апплета?

ответ

1

Вы столкнулись с ограничениями изолированной программной среды. По-видимому, проблема безопасности для ненадежного апплета заключается в изменении аутентификатора по умолчанию. (Я предполагаю, что это связано с тем, что неприятный апплет мог использовать это, чтобы украсть данные аутентификации, предоставленные пользователем.)

Независимо от причины ограничения, одним из решений является подписание JAR-файла для вашего апплета. См. this page учебных пособий Oracle.

+0

Нет ли команды/метода/класса, которые могут изменять параметры безопасности для конкретного апплета? –

+0

Не изнутри апплета. Это приведет к победе в целях безопасности песочниц. (Q: что будет первым, что неприятный апплет делает? A: отключите проверки безопасности, которые мешают ему делать неприятные вещи!) –

+0

Так есть ли какой-либо другой метод, который может выполнять базовую аутентификацию Http в java-апплете? –

 Смежные вопросы

  • Нет связанных вопросов^_^