我遇到了一個Java的安全問題。我有一個代理使用pdfbox-1.7.1.jar來解密我知道的密碼的PDF。罐子已經擺在/ JVM/lib/ext目錄服務器和我的客戶機上,我得到一個堆棧跟蹤的這個小美女:Domino代理使用第三方罐子Java安全奮力/ JVM/lib/ext目錄
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)
客戶端和服務器使用的是8.5.3。 代理的安全級別設置爲3 把罐子在代理本身並不能幫助。 代理的簽名者是服務器上的完整的管理。 安全異常,似乎在「insertProviderAt」
指出這是我的嘗試:
把
grant {
permission java.security.AllPermission;
}
解決我的問題,但我絕不會得到這個過去我眼尖的管理。
我試圖降低許可的範圍僅僅是數據庫,但這裏的文檔:http://docs.oracle.com/javase/7/docs/technotes/guides/security/PolicyFiles.html並沒有真正告訴我如何輸入Notes數據庫。
我看着斯蒂芬使用Wissel的文章中使用XPages Java安全位置:http://www.wissel.net/blog/d6plinks/SHWL-8JYAT5並插入以下到我的/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;
};
,但沒有任何工作,我假設是因爲我的codeBase語法對nsf數據庫無效,但僅對網頁有效。
我也在努力減少權限到這是真正需要,並着眼於文檔的位置:http://docs.oracle.com/javase/1.4.2/docs/guide/security/permissions.html
意味着我必須做一些像
java.security.SecurityPermission "insertProvider.{name}"
但我沒有了解{name}應該是什麼。
文章,但我的大腦在大約頁面的中間炒。特別是,我不確定如何實際執行此方法。你能握住我的手,讓我走開嗎?
雖然我吧,我是對的假設,每當我提出了新的jar包/ JVM/lib/ext目錄,所有我需要做的是一個
tell http restart
有JVM重裝?我假設的Domino是使用XPages中,代理單個JVM和HTTP任務,這是正確的。
而且,我是正確的,我需要重新啓動在的java.policy任何新政策,該服務器是有效的?
任何想法?
什麼是實際的安全異常失敗?你的代理有什麼安全級別?在最後的xspnsf部分,你是否嘗試將瓶子移入NSF?什麼版本的Domino? –
重申您的最後一個假設:Web代理(即執行的webQueryOpen,webQueryOpen或?OpenAgent)在HTTP任務的JVM中運行。計劃和觸發的代理在AMGR任務的單獨JVM中運行。我還沒有完成xpages工作,所以我不確定他們是否與Web代理共享相同的JVM。 –
@理查德 - 這對我來說是新的,謝謝。那麼至少有2個,也許3個JVM在運行,並且安全設置適用於所有這些JVM?另外,當告訴http重新啓動JVM(s)時,對於小我來說更令人困惑。 –