我正在爲jboss的jaas實現開發自定義登錄模塊。我希望能夠訪問我的登錄模塊中的HttpServletRequest對象。有沒有人知道這樣做的最佳方式,如果可能的話?我一直在研究這一點,到目前爲止,我認爲我需要使用某種回調,但我不確定。我發現一些WebSphere文檔顯示它們有一個WSServletRequestCallback,似乎可以執行此操作。請建議一個簡單的例子或文檔,如果jboss的jaas實現有這樣的事情。自定義登錄模塊訪問JBOSS中的httpservletrequest EAP
更新:
@kwart:根據你的建議,我編碼以下。請建議,如果這是正確的方式:
protected CallbackHandler _callbackHandler;
HttpServletRequest request = null;
ObjectCallback objectCallback = null;
Callback[] callbacks = new Callback[1];
callbacks[0] = objectCallback = new ObjectCallback("HttpServletRequest: ");
try
{
_callbackHandler.handle(callbacks);
}
catch (Exception e)
{
logger.logp(Level.SEVERE, CLASSNAME, METHOD_NAME, "Error handling callbacks", e);
}
try
{
if (objectCallback != null)
{
request = (HttpServletRequest) PolicyContext.getContext("javax.servlet.http.HttpServletRequest");
}
}
catch (PolicyContextException e) {
logger.logp(Level.SEVERE, CLASSNAME, METHOD_NAME, "Error getting request", e);
}
catch (Exception e)
{
logger.logp(Level.SEVERE, CLASSNAME, METHOD_NAME, "Exception occured augmenting JbossSubject", e);
}
你基本上正在重新設計JASPI(C)的ServerAuthModule。除非由於某種原因被迫使用專有API,否則考慮利用已經包含在Java EE中的內容。 – Uux
爲什麼使用ObjectCallback的魔法?你不需要它。 PolicyContext行足以檢索HttpServletRequest實例。 – kwart
「jboss'jaas的實現」? Jboss沒有實現jaas!它鬆散地重新使用JDK中的一些JAAS類... –