Agent Domino walczy z bezpieczeństwem Java przy użyciu słoika innej firmy w / jvm / lib / ext
Mam problem z zabezpieczeniami Java. Mam agenta, który używa pdfbox-1.7.1.jar do odszyfrowania pliku PDF, którego hasło znam. Jar został umieszczony w / jvm / lib / ext zarówno na serwerze, jak i na moim kliencie, i dostaję to małe piękno śledzenia stosu:
java.lang.SecurityException
at java.lang.SecurityManager.checkPermission(SecurityManager.java:582)
at COM.ibm.JEmpower.applet.AppletSecurity.checkSecurityPermission(AppletSecurity.java:1332)
at COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1613)
at COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1464)
at java.lang.SecurityManager.checkSecurityAccess(SecurityManager.java:1725)
at java.security.Security.insertProviderAt(Security.java:190)
at java.security.Security.addProvider(Security.java:210)
at org.apache.pdfbox.pdmodel.encryption.SecurityHandlersManager.getInstance(SecurityHandlersManager.java:146)
at org.apache.pdfbox.pdmodel.PDDocument.openProtection(PDDocument.java:1365)
at org.apache.pdfbox.pdmodel.PDDocument.decrypt(PDDocument.java:798)
at com.magerman.hremail.prep1docc.PDFDecryptor.decrypt(Unknown Source)
at com.magerman.hremail.prep1docc.MetaAttachment.decrypt(Unknown Source)
at com.magerman.hremail.prep1docc.MetaDocContainingAttachments.removePasswordOfPDFAttachments(Unknown Source)
at com.magerman.hremail.prep1docc.EPDFPreparerFactory.generateAttachmentsTriggerDocs(Unknown Source)
at com.magerman.hremail.prep1docc.EPDFPreparerFactory.run(Unknown Source)
at com.magerman.hremail.prep1docc.BaseClass.NotesMain(Unknown Source)
at lotus.domino.AgentBase.runNotes(Unknown Source)
at lotus.domino.NotesThread.run(Unknown Source)
Zarówno klient, jak i serwer używają 8.5.3. Poziom zabezpieczeń agenta jest ustawiony na 3. Umieszczenie słoików w samym agencie nie pomaga. Sygnatariusz agenta jest pełnym administratorem na serwerze. Wydaje się, że wyjątek bezpieczeństwa wskazuje na „insertProviderAt”
To właśnie próbowałem:
kładzenie
grant {
permission java.security.AllPermission;
}
rozwiązuje mój problem, ale nigdy nie dostanę tego przez mojego orła.
Próbuję ograniczyć zakres uprawnień tylko do bazy danych, ale tutaj do dokumentacji:http://docs.oracle.com/javase/7/docs/technotes/guides/security/PolicyFiles.html tak naprawdę nie powiedział mi, jak wprowadzić bazę danych notatek.
Przejrzałem artykuł Stephana Wissela na temat bezpieczeństwa Xpages Java tutaj:http://www.wissel.net/blog/d6plinks/SHWL-8JYAT5 i wstawiłem następujące elementy do mojego pliku /jvm/lib/security/java.policy:
grant codeBase "xspnsf://server:0/development/hre-mail/hre-mail2_0/hre-mail_(2_0)_dev.nsf/-" {
permission java.security.AllPermission;
};
ale to też nie zadziałało, przypuszczam, ponieważ moja składnia codeBase nie jest poprawna dla bazy danych nsf, ale tylko dla stron internetowych.
Staram się także ograniczyć uprawnienia do tego, co jest naprawdę potrzebne, i patrząc na dokumentację tutaj:http://docs.oracle.com/javase/1.4.2/docs/guide/security/permissions.html
sugeruje, że muszę coś zrobić
java.security.SecurityPermission "insertProvider.{name}"
ale nie mam pojęcia, jakie powinno być {imię}.
Przeczytałem też artykuł Mikkela na temathttp://lekkimworld.com/2013/06/20/java_in_notes_domino_explained_on_java_security_and_how_it_relates_to_notes_domino.html
ale mój mózg smażył się w połowie strony. W szczególności nie jestem pewien, jak faktycznie wdrożyć tę metodę. Czy możesz trzymać mnie za rękę i poprowadzić, proszę?
Kiedy już to robię, czy mam rację zakładając, że za każdym razem, gdy umieszczam nowe słoiki w / jvm / lib / ext, wszystko, co muszę zrobić, to
tell http restart
aby przeładować maszynę JVM? Zakładam, że Domino używa pojedynczej maszyny JVM dla Xpages, Agenci, a zadanie HTTP, jest właściwe.
Czy mam rację, że muszę zrestartować serwer, aby nowe zasady w java.policy były skuteczne?
Jakieś pomysły?