WebSphere 错误消息上的自定义 JASPIC

Custom JASPIC on WebSphere error message

虽然类似,但我遇到的具体问题没有在Use JASPIC auth module on WebSphere 8.5

中解决

我收到以下错误消息:

SECJ8027E: The path and name of file where JASPI persistent registrations are stored must be specified using property com.ibm.websphere.jaspi.configuration.

我可以将管理中的自定义设置 属性 设置为某个现有文件夹,但我想确保这是正确的方法,或者我是否遗漏了某些步骤。

请注意,我专门使用 "embedded in application" 方法而不是服务器安装的 JASPIC 模块,所以我有这样的东西

@WebListener
public class JaspicInitializer implements
    ServletContextListener {

    @Override
    public void contextInitialized(final ServletContextEvent sce) {

        final Map<String, String> options = new HashMap<>();
        AuthConfigFactory.getFactory()
            .registerConfigProvider(AuthModuleConfigProvider.class.getName(), options, "HttpServlet", null, null);
    }
}

我在 WebSphere 8.5.5.11 和 9.0.0.3 上都遇到了错误

根据@Uux 的评论,我更改了注册方式,因此不再报错。

@WebListener
public class JaspicInitializer implements
    ServletContextListener {

    private String registrationID;

    @Override
    public void contextDestroyed(final ServletContextEvent sce) {

        AuthConfigFactory.getFactory().removeRegistration(registrationID);
    }

    @Override
    public void contextInitialized(final ServletContextEvent sce) {

        final ServletContext context = sce.getServletContext();
        registrationID = AuthConfigFactory.getFactory()
            .registerConfigProvider(new AuthModuleConfigProvider(), "HttpServlet", 
              context.getVirtualServerName() + " " + context.getContextPath(), "JEE Sample");
    }
}

WebSphere Global Security 也需要配置

  • 启用应用程序安全
  • 启用Java 身份验证 SPI (JASPI)