Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Права на коннект к сокету


Автор: knave 16.12.2003, 22:07
Пытаюсь создать сокет так:
sock = new Socket("chat.iFriends.net", 8086);

В результате получаю это:
access denied (java.net.SocketPermission chat.iFriends.net resolve)
access denied (java.net.SocketPermission chat.iFriends.net resolve)

Кто нить может сказать вчем проблемаconfused.gif

Автор: AntonSaburov 17.12.2003, 09:57
А подробнее можно ? И больше кода привести

Это у тебя обычное приложение ? Или апплет ? И каков класс эксепшена ?
И полное сообщение об ошибке тоже надо.

Автор: knave 17.12.2003, 10:26
Это аплет. Эта строчка заключена в try catch. Название класса исключения я непомню сейчас. Вообще это готовый аплет уже кем то сделанный ранее и он говорит что у него работает. А у меня вот нет. Там еще есть каталог Meta-inf или чтото в этом духе. внем файл в котором названием результирующего файла и какие то закриптованные строчки, короткие. Может в нем все дело

Автор: AntonSaburov 17.12.2003, 11:29
Если апплет, то такое действительно вполне понятно.
Закриптованные строчки - это подпись апплета, которая подтверждается сторонними провайдерами. Подпись апплета говорит о том, что этот апплет сделан тем-то и тем-то и если какие-то вредности он будет делать, то можно бить по голове производителя апплета. Но сам понимаешь, что производитель не заинтересован в таком.

Но вот по поводу подписей апплета более подробно с примерами - я с ними не работал. Только теория.
Можно конечно посмотреть, но это уже не прямо сейчас.

Автор: knave 17.12.2003, 14:34
вот код того мета которое выдает ошибку выполнения

Socket sock;

...

try
{
sock = new Socket("chat.iFriends.net", 8086);
}
catch(Exception exception)
{
System.out.println(exception.getMessage());
sock = null;
}

Автор: AntonSaburov 17.12.2003, 14:40
Цитата
вот код того мета которое выдает ошибку выполнения


Да вообщем-то теперь это совсем необязательно. Явно дело в секьюрити, но более подробно на данный момент ответить не могу - не знаю. Но посмотрю. Может что-то накопаю.

Автор: Alone 17.12.2003, 14:43
Я на эту тему тоже пока однозначного решения не нашел, но как workarround сгодится прописывание в java.policy строки:
grant {
permission java.security.AllPermission;
};

Автор: knave 17.12.2003, 14:50
а где должен быть этот java.policy

Автор: Alone 17.12.2003, 14:57
Linux: $HOME/.java.policy
Win: c:\windows\System\Java\lib\security\java.policy

Автор: AntonSaburov 17.12.2003, 15:59
Цитата
Win: c:\windows\System\Java\lib\security\java.policy


Скорее там где JRE установлен - это обычно Program Files\Java\j2re<версия>\lib\security\java.policy

Автор: knave 17.12.2003, 16:04
Спасибо, попробую и там и там

Автор: Alone 17.12.2003, 17:54
Насчет винды могу и ошибиться, так как уже 5 лет её в глаза не видел smile.gif

Автор: daniel (yerevan| javaxp@ya 18.12.2003, 11:37
esli eto applet

to socket moget podkluchitsya tolko k serveru s kotorogo on zagruzilsya

applet. getCodeBase() // v etom rode


Автор: AntonSaburov 18.12.2003, 13:11
Цитата
esli eto applet

to socket moget podkluchitsya tolko k serveru s kotorogo on zagruzilsya

applet. getCodeBase() // v etom rode


Не совсем так. Такое поведение было организовано в самой первой JAVA - 1.1.
При выходе JAVA 2 неудобство таких ограничений было учтено. Теперь каждый клиент может сам решать, кому можно, а кому нельзя.

В случае с подписанными апплетами алгоритм работы такой:
Клиент при получении апплета проверяет подлинность подписи в каком-либо хранилище ключей. В интеренет несколько таких сайтов, где вы можете проверить подлинность подписи. Алгоритм основан на том, что подпись + характеристики документа (файла) дают уникальную комбинацию и исправить (подправить) подписанный файл уже практически невозможно. Таким образом гарантируется целостность подписанного файла. Кроме этого на самом клиенте в файле java.policy прописывается кому можно доверять, а кому нельзя.

Кстати делать так, как посоветовал Alone реально опасно. Чужим апплетам можно все.

Автор: Alone 18.12.2003, 14:50
Я в курсе. Это я предложил как временное решение проблемы, дабы разрешить апплету работать. А реально, я и сам хотел бы уточнить как эта вся процедура подписи апплета делается.

Автор: Unregistered 21.12.2003, 19:49
Вариант с java.policy прошел

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)