Реализовать политику безопасности Java, используя имя хоста вместо IP-адреса?

В настоящее время мне нужно сделать следующее, чтобы разрешить отправку почты в нашей политике безопасности Java.

permission java.net.SocketPermission "smtp.example.com", "resolve";
permission java.net.SocketPermission "10.0.0.1:25", "connect,resolve";
permission java.net.SocketPermission "10.0.0.2:25", "connect,resolve";
permission java.net.SocketPermission "10.0.0.3:25", "connect,resolve";

Однако время от времени IP-адрес может меняться, и я должен убедиться, что наши приложения не сломаются, если кто-то добавит новый SMTP-сервер.

Можно ли пойти на компромисс, чтобы разрешить соединения на основе имени хоста, а не IP-адреса?

1 ответ

Решение

Со страницы java документа SocketPermission:

SocketPermission состоит из спецификации хоста и набора "действий", определяющих способы подключения к этому хосту. Хост указан как

host = (hostname | IPv4address | iPv6reference) [:portrange]

Пример создания и значения SocketPermissions:

new SocketPermission("puffin.eng.sun.com:7777", "connect,accept");
Другие вопросы по тегам