[英]Multiple java servlet authentication methods
是。
但是,我建議使用servlet過濾器而不是servlet本身。
http://brendangraetz.wordpress.com/2010/06/17/use-servlet-filters-for-user-authentication/
按照該帖子中的步驟操作,並覆蓋isAuth()
方法,以便它以您希望的多種模式執行身份驗證。 在(非常粗糙,未經測試)代碼中:
@Override protected boolean isAuth()
{
String authMode = (String)(getSession(true).getAttribute("authMode"));
if (authMode == null) { return false; }
if (authMode.equals("open id") {
//do open id authentication steps here
//return true if authentication passes
}
else if (authMode.equals("some other authentication") {
//do some other authentication steps here
//return true if authentication passes
}
...
return false;
}
我當然假設你已經知道如何分別在每種模式下實現身份驗證步驟。
“技巧”是在HTTP會話中,在用戶執行身份驗證日志之后立即在HTTP會話中存儲值。 基於此值,過濾器將在加載servlet之前知道應該檢查或查詢您指定的內容。
執行多重身份驗證的另一種方法是使用JAAS,即Java身份驗證和授權服務。 使用JAAS,您可以將各種身份驗證模塊堆疊在一起,並且可以配置要運行哪個身份驗證模塊以及不運行哪個身份驗證模塊。 這稱為PAM(可插拔認證模塊)。 在Google上搜索“J2SE JAAS”或查看http://server.pramati.com/docstore/1270002/index.htm 。 如果你決定走這條路,這些應該可以幫助你開始。
是的,這是可能的,但實施起來往往有點棘手。
例如,開箱即用的SpringSecurity支持本地身份驗證,OpenId,X509和其他方案,但是將它們組合在一起以便用戶有其他登錄方式需要自定義類和自定義連接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.