我正在尝试在Websphere上设置Kerberos Web身份验证(8.5.5)。我已经完成了我的设置但是当我尝试访问登录URL时,我得到以下NPE
com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E: [Servlet Error]-[Initializer]: java.lang.NullPointerException
at net.sourceforge.spnego.SpnegoFilterConfig.doClientModule(SpnegoFilterConfig.java:179)
at net.sourceforge.spnego.SpnegoFilterConfig.<init>(SpnegoFilterConfig.java:138)
at net.sourceforge.spnego.SpnegoFilterConfig.getInstance(SpnegoFilterConfig.java:314)
at net.sourceforge.spnego.SpnegoHttpFilter.init(SpnegoHttpFilter.java:193)
我不明白错误或如何解决它。 感谢
更新
<?xml version="1.0" encoding="UTF-8"?><web-app id="WebApp_1431678248278" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>warname_war</display-name>
<description>ApplicationDescription</description>
<!--Servlets-->
<servlet>
<servlet-name>Initializer</servlet-name>
<servlet-class>com.package.subpackage.Initializer</servlet-class>
<init-param>
<param-name>initFile</param-name>
<param-value>/WEB-INF/conf/init.xml</param-value>
</init-param>
<init-param>
<param-name>initModule</param-name>
<param-value>/WEB-INF/conf/init-module.xml</param-value>
</init-param>
<init-param>
<param-name>initAuthentication</param-name>
<param-value>/WEB-INF/conf/init-authentication.xml</param-value>
</init-param>
<init-param>
<param-name>WindowOnSuccessCloseTimeout</param-name>
<param-value>500</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>CreateSecurityDb</servlet-name>
<servlet-class>com.package.subpackage.CreateSecurityDatabaseServlet</servlet-class>
<init-param>
<param-name>initFile</param-name>
<param-value>/WEB-INF/conf/init.xml</param-value>
</init-param>
<init-param>
<param-name>initAuthentication</param-name>
<param-value>/WEB-INF/conf/init-authentication.xml</param-value>
</init-param>
<init-param>
<param-name>sqlScriptsFolder</param-name>
<param-value>/sql</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<servlet-name>Data Service</servlet-name>
<servlet-class>com.package.subpackage.web.webmethod.DataServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<servlet-name>Logger</servlet-name>
<servlet-class>com.package.subpackage.context.DataServletImpl</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<servlet-name>Status</servlet-name>
<servlet-class>com.package.subpackage.healthcheck.HealthCheckServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<!--Servlet mappings-->
<servlet-mapping>
<servlet-name>Data Service</servlet-name>
<url-pattern>/dataService/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Initializer</servlet-name>
<url-pattern>/main</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Logger</servlet-name>
<url-pattern>/logger</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Status</servlet-name>
<url-pattern>/status</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>CreateSecurityDb</servlet-name>
<url-pattern>/createSecurityDatabase</url-pattern>
</servlet-mapping>
<!--Filters-->
<filter>
<filter-name>LoginFormFilter</filter-name>
<filter-class>com.package.otherpackage.authentication.UnifiedLoginFilter</filter-class>
<init-param>
<param-name>factoryName</param-name>
<param-value>SSOAuthenticator</param-value>
</init-param>
<init-param>
<param-name>servletType</param-name>
<param-value>webHtml</param-value>
</init-param>
<init-param>
<param-name>useCaching</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter>
<filter-name>LogoutFilter</filter-name>
<filter-class>com.package.otherpackage.authentication.impl.logic.filter.UnifiedLogoutFilter</filter-class>
<init-param>
<param-name>factoryName</param-name>
<param-value>SSOAuthenticator</param-value>
</init-param>
</filter>
<filter>
<filter-name>ResourceFilter</filter-name>
<filter-class>com.package.subpackage.utils.ResourceFilter</filter-class>
</filter>
<filter>
<filter-name>InitDbConFilter</filter-name>
<filter-class>com.package.subpackage.webmethod.InitDbConnectionFilter</filter-class>
</filter>
<!--Filter Mappings-->
<filter-mapping>
<filter-name>InitDbConFilter</filter-name>
<servlet-name>Initializer</servlet-name>
</filter-mapping>
<filter-mapping>
<filter-name>LoginFormFilter</filter-name>
<servlet-name>Initializer</servlet-name>
</filter-mapping>
<filter-mapping>
<filter-name>InitDbConFilter</filter-name>
<servlet-name>Data Service</servlet-name>
</filter-mapping>
<filter-mapping>
<filter-name>LoginFormFilter</filter-name>
<servlet-name>Data Service</servlet-name>
</filter-mapping>
<filter-mapping>
<filter-name>LoginFormFilter</filter-name>
<url-pattern>/index.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>LogoutFilter</filter-name>
<servlet-name>Initializer</servlet-name>
</filter-mapping>
<filter-mapping>
<filter-name>ResourceFilter</filter-name>
<url-pattern>/plugins/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>ResourceFilter</filter-name>
<url-pattern>/lib/atf/*</url-pattern>
</filter-mapping>
<!--location to prevent users from listing some resources-->
<welcome-file-list>
<welcome-file>/main</welcome-file>
</welcome-file-list>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<listener>
<listener-class>com.package.subpackage.context.TCSessionListener</listener-class>
</listener>
<application-policy name="spnego-client">
这是我的web.xml文件
答案 0 :(得分:0)
我获得NPE的原因是默认情况下websphere使用wsjaas.conf文件。您可以通过编辑系统启动属性文件/AppServer/properties/systemlaunch/base/.systemlaunch.properties来更改此项。
您已经配置了java.security.auth.login.config 在默认的wsjaas.conf中,spnego API需要一个缺少的条目(&#34; spnego-client&#34;)。