gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 22:08:29 25 4
gpt4 key购买 nike

我创建了一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com