为了账号安全,请及时绑定邮箱和手机立即绑定

在 Spring Boot 应用程序的 com.ibm.ws.security.jaspi

在 Spring Boot 应用程序的 com.ibm.ws.security.jaspi

慕无忌1623718 2022-06-15 15:06:23
我正在使用带有 tomcat 作为容器的 Spring Boot 应用程序。在某些机器上它正在工作,而在其他机器上我得到:java.lang.SecurityException: AuthConfigFactory error: java.lang.ClassNotFoundException: com.ibm.ws.security.jaspi.ProviderRegistry        at javax.security.auth.message.config.AuthConfigFactory.getFactory(AuthConfigFactory.java:85) ~[tomcat-embed-core-8.5.20.jar!/:8.5.20]        at org.apache.catalina.authenticator.AuthenticatorBase.findJaspicProvider(AuthenticatorBase.java:1205) ~[tomcat-embed-core-8.5.20.jar!/:8.5.20]        at org.apache.catalina.authenticator.AuthenticatorBase.getJaspicProvider(AuthenticatorBase.java:1195) ~[tomcat-embed-core-8.5.20.jar!/:8.5.20]        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:469) ~[tomcat-embed-core-8.5.20.jar!/:8.5.20]        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) ~[tomcat-embed-core-8.5.20.jar!/:8.5.20]        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) [tomcat-embed-core-8.5.20.jar!/:8.5.20]        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [tomcat-embed-core-8.5.20.jar!/:8.5.20]        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) [tomcat-embed-core-8.5.20.jar!/:8.5.20]        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799) [tomcat-embed-core-8.5.20.jar!/:8.5.20]        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-8.5.20.jar!/:8.5.20]        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) [tomcat-embed-core-8.5.20.jar!/:8.5.20]        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1457) [tomcat-embed-core-8.5.20.jar!/:8.5.20]该类com.ibm.ws.security.jaspi.ProviderRegistry看起来像一个 WebSphere 类,它与我的应用程序无关,因为我使用的是 tomcat。
查看完整描述

1 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

问题是 java 安全试图在AuthConfigFactory::getFactory(). 它首先检查安全属性是否authconfigprovider.factory存在。

如果该属性authconfigprovider.factory不存在,它将创建为类的默认实例org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl,这可能没问题。

问题是当您尝试在已在 java.security 文件中定义该安全属性的机器上运行时authconfigprovider.factorycom.ibm.ws.security.jaspi.ProviderRegistry可能该机器用于 WebSphere)。

所以当然你没有课程com.ibm.ws.security.jaspi.ProviderRegistry,你会得到ClassNotFoundException

要解决它,请尝试创建您自己的 java.security 文件并将其定位在您的应用程序下,在该文件内 - 覆盖属性,如authconfigprovider.factory=org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl.

要使您的新 java.security 文件处于活动状态,请添加 jvm 参数-Djava.security.properties=java.security


查看完整回答
反对 回复 2022-06-15
  • 1 回答
  • 0 关注
  • 258 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信