java - 为什么我得到 AccessControlException : access denied when I add BouncyCaSTLeProvider to Security in Tomcat servlet

标签 java security tomcat servlets bouncycastle

我创建了一个 Java servlet 并在网络酒店的 Tomcat 服务器上运行它。它应该向 iOS 设备发送推送消息,因此我添加了 JavaPNS。这在我的本地 Tomcat 服务器上运行良好,但是当我将它部署到网络酒店提供的 Tomcat 服务器上时,会出现以下语句:

Security.addProvider(new BouncyCastleProvider());

给出异常:

Exception in thread "Thread-193" java.lang.InternalError: cannot create instance of org.bouncycastle.jce.provider.symmetric.AES$Mappings : java.security.AccessControlException: access denied (java.security.SecurityPermission putProviderProperty.BC) 
at org.bouncycastle.jce.provider.BouncyCastleProvider.loadAlgorithms(Unknown Source) 
at org.bouncycastle.jce.provider.BouncyCastleProvider.setup(Unknown Source) 
at org.bouncycastle.jce.provider.BouncyCastleProvider.access$000(Unknown Source) 
at org.bouncycastle.jce.provider.BouncyCastleProvider$1.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at org.bouncycastle.jce.provider.BouncyCastleProvider.(Unknown Source) 
at javapns.communication.ConnectionToAppleServer.(ConnectionToAppleServer.java:41) 
....

可能网络酒店在 Tomcat 服务器中启用了某种安全措施,而我在本地并未启用。

有谁知道这个问题是否有解决方法? 如果不是,我应该要求网络酒店的支持人员做出哪些改变才能实现这一点?

最佳答案

不要尝试将 BouncyCaSTLe 安装为提供程序。在您的应用程序中创建一个新的 BouncyCaSTLe 实例,并将该提供程序传递给 getInstance() 重载,该重载接受每个加密的 Provider 参数服务。

Security 类的修改会影响容器中的所有应用程序;它们不是您的应用程序本地的。使用不需要全局更改的更有针对性的方法。

依赖已安装的提供程序在独立应用程序中可能很方便,但从长远来看,当您需要特定的提供程序时,它会产生很多问题,而在 JCA 之上编写的库不允许您这样做指定提供者。

关于java - 为什么我得到 AccessControlException : access denied when I add BouncyCaSTLeProvider to Security in Tomcat servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22458536/

相关文章:

java - Camel Splitters 执行后会保留交换主体吗?

java - 在eclipse中安装GIT插件

Java - 无法通过 url 读取图像

eclipse - 如何在 Eclipse 中为 Servlet API 添加 Javadoc

java - 一个类的清理代码

java - 驱动程序无法使用 SSL 与 SQL Server 建立安全连接

java - Spring RefreshableKeycloakSecurityContext 内存泄漏

php - 与 LDAP 服务器的安全连接

java - 如何将带有gradle的源代码热部署到tomcat7中?

windows - 使用多个具有 80 端口的 tomcat 实例