Реализовать политику безопасности 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");