2013-02-07 25 views
0

我有一個遺留的web應用程序,目前在servlet中驗證用戶。也就是說,它從servlet中調用LoginContext.login()。oc4j如何從主題設置用戶主體?

作爲我升級的一部分,我希望通過web.xml文件添加使用聲明式身份驗證的新網頁。我希望舊的網頁繼續使用servlet認證。最終,我會重做舊網頁以使用新的身份驗證。

但是,新頁面不會繼承從servlet完成的驗證。它們是未經驗證的,在請求中沒有userPrincipal。

對於現有的servlet,我最終得到了一個Subject。我有什麼辦法可以調用一些東西,以便OC4J從Subject的一個主體中設置用戶主體?

+0

我在這裏嘗試不同的東西。在其中一箇舊頁面上,我將菜單欄更改爲指向新頁面之一。我將JSESSIONID添加到希望使用現有會話的url中。但是,它看起來像一個新的會話正在創建。 因此,作爲一個例子,在/jobs.app上,菜單欄有一個鏈接到/secure/spsas.jsp?JSESSIONID = ... 沒有運氣。 –

+0

舊頁面在Spring MVC控件下,而新頁面在Struts控件下,如果這有所作爲。沒關係爲什麼不同。 –

+0

更多信息。舊的東西在上下文的頂層(如/myapp/jobs.app),新的東西是一層(像/myapp/secure/spsas.jsp)。我希望新的東西能夠通過web.xml中的內容來保護,而不是使用LoginContext。 –

回答

0

發現:

// http://docs.oracle.com/html/E13977_01/authoriz.htm#BABHJJCJ 
    // oc4jclient.jar, oc4j-unsupported-api.jar 
    oracle.oc4j.security.Security.setSubject(subject, Longevity.SESSION);