2017-05-04 69 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