2016-03-14 69 views
1

我們有好幾個用戶類型多個用戶類型 - 春季安全配置

  • 內部用戶
  • 外部用戶/客戶端(存儲在DB1)
  • 外部用戶/供應商(使用Active Directory身份驗證)(存儲在DB2)

我們計劃使用Spring Security的OAuth2產生,然後可以用來調用Web服務設置

的GWT令牌

我可以使用多個AuthenticationProviders(LDAPAuthenticationProvider和兩個DAOAuthenticationProviders),但是我們將失去使用戶成爲例如客戶和供應商的能力(如果他們使用SAME電子郵件進行身份驗證)。由於認證成功後它將停止輪詢提供程序。

我也可以使用profiles @ Profile =「vendor/client」配置文件,並專門爲客戶端或供應商認證啓動auth服務器 - 但這意味着兩個不同的進程=更多的維護。

還有其他想法嗎?有人碰到類似的東西嗎?

回答

0

有我能想到的幾個選項:

1 - 當你加載它們。如果每個不同類型的用戶使用不同的客戶端ID,然後設置在客戶端的細節的東西呈現怎樣的用戶應爲客戶進行身份驗證。有一個關於ClientDetails一個getAdditionalInformation()方法返回一個地圖,你可以用它來存儲這些信息

/** 
* Additional information for this client, not needed by the vanilla OAuth protocol but might be useful, for example, 
* for storing descriptive information. 
* 
* @return a map of additional information 
*/ 
Map<String, Object> getAdditionalInformation(); 

2 - 通過在頁眉或請求PARAM的AuthenticationProvider的可以再使用,以確定如何在用戶進行身份驗證。您需要配置您自己的WebAuthenticationDetails實現以從請求中檢索此信息。

然後,通過調用傳遞給AuthenticationProvider的authenticate()方法的Authentication對象上的getDetails(),可以獲得該值。