2017-05-04 67 views
2

虽然类似的自定义JASPIC,具体问题我还没有在Use JASPIC auth module on WebSphere 8.5WebSphere上的错误消息

解决我收到以下错误消息:

SECJ8027E:JASPI其中文件的路径和名称存储的持久性注册必须使用属性com.ibm.websphere.jaspi.configuration指定。

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

注意我特别使用“嵌入式应用”的方式,而不是服务器上安装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错误

+2

这可能是一个小规格vio因为我不记得规范暗示工厂可能需要任何种类的专有配置来提供商注册,无论是否持久。您是否尝试过更受欢迎的内存替代方案,即'#registerConfigProvider(AuthConfigProvider,String,String,String)'而不是?当然,如果您绝对需要执行完全可移植的永久注册(包括实际的持久性机制/表示)的能力,那么您可以提供自己的“AuthConfigFactory”实现。 – Uux

+0

哦,我看到了差异...花了一点。那么在一个实例中推动。 –

+0

那么解决了一个问题,我不再收到错误信息,但它也不会被触发。我会在另一个问题上提出这个问题。 –

回答

2

从@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 全球安全需要与

  • 启用应用程序安全性配置
  • 启用Java认证SPI(JASPI)

enter image description here