2013-02-11 22 views
0

我們需要對現有外部數據庫中的WSO2 Application Server中部署的Web應用程序的用戶進行身份驗證。我們正在嘗試爲此使用WSO2 Identity Server。擴展WSO2身份服務器JDBCUserStoreManager以適應外部用戶數據庫

我們的數據庫表中包含用戶有兩列,使用戶名唯一,clientid和用戶代碼。即用戶代碼本身不是唯一的,但clientid +用戶代碼是唯一的。我們的密碼也被PBKDF2醃製。所以我擴展了JDBCUserStoreManager來與我們的數據庫交談,並能夠在PBKDF2中存儲和檢索密碼。

但我無法弄清楚如何從登錄頁面獲取客戶端ID到我們的擴展JDBCUserStoreManager。即如何從我們自定義的JDBCUserStoreManager中訪問存儲在用戶會話中的clientid?如果我可以從會話中獲得clientid,那麼我可以在sql查詢中使用它來做必要的事情。

在搞清楚了這一點任何幫助深表感謝..

回答

1

您可以輸入相結合「的clientid +用戶代碼」爲在登錄頁面的用戶名。然後,身份驗證者會將該組合作爲用戶名傳遞給自定義用戶管理器的doAuthenticate()方法。在那裏你可以從用戶名中分離客戶端ID和用戶代碼。

+0

嗨感謝您的答案。是的,這將用於身份驗證。但是由於我們需要幾乎所有其他與角色和主張等相關的方法,想知道是否有更好的方法來做到這一點?也許延長認證者?目前我不知道是哪個類以及導致調用StoreManager方法的調用鏈。任何進一步的信息將是非常好的。 – kmkale 2013-02-12 04:42:29

+0

嗨,你也可以創建你自己的驗證器和插件。但即使使用默認的身份驗證程序,您也可以用較少的工作完成此任務,因爲身份驗證成功後,已將身份驗證的用戶用戶名放入會話中。所以在你的情況下,會話中的用戶名是「clientid + usercode」。所以在UserManager的其他操作中,比如getRoles,getClaims等,你會得到「clienid + usercode」作爲用戶名。因此,在這些方法中,您總是知道如何從用戶名中獲取用戶標識。 – SureshAtt 2013-02-12 05:05:38

+0

嘿,這會讓生活變得更簡單。 會試試這個。 謝謝一堆.. – kmkale 2013-02-12 06:36:11