0

我的休息Web服務由Spring Security保護。我通過各種處理程序返回相應的響應(失敗401,失敗200,等等)。客戶端不希望將憑證存儲在設備上,所以我無法通過在每個請求的標頭中傳遞信任來進行真正的寧靜的每請求認證。所以,我試圖用Remember-me設置持久令牌方法。Spring Security Remember-Me REST Web服務 - 如何使用持續令牌方法在200響應中返回令牌

我有數據庫表,所有設置和能夠登錄。該登錄在包含&系列標記值的數據庫的persistent_logins表中創建一行。

我的問題是雙重的:

  1. 我需要什麼,以在返回 200響應用戶也返回令牌我successHandler類添加(我需要 系列價值呢? )?
  2. 當通過curl測試時,如何在標頭中設置該令牌?

這裏是我的successHandler類:

public class RestAuthenticationSuccessHandler extends SimpleUrlAuthenticationSuccessHandler{ 

@Override 
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, 
            Authentication authentication) throws ServletException, IOException { 
    response.setStatus(HttpServletResponse.SC_OK); 
    clearAuthenticationAttributes(request); 
} 
} 

預先感謝任何及所有的幫助!

回答

2

PersistentTokenBasedRememberMeServices將確保在響應中(默認爲SPRING_SECURITY_REMEMBER_ME_COOKIE)設置一個包含已編碼的序列和標記值的cookie,因此您不需要爲認證成功處理程序添加任何額外的代碼。當使用curl進行測試時,您只需要將該cookie發回。

如果你沒有看到在響應這個cookie,檢查登錄請求中包含_spring_security_remember_me=true參數,它表示該客戶端實際請求的記得,我的功能或配置PersistentTokenBasedRememberMeServicesalwaysRemember財產哪個是假的默認。

+0

感謝您的迴應!我將_spring_security_remember_me值設置爲true。但是,我不知道alwaysRemember值,所以非常感謝。雖然 - 雖然clearAuthenticationAttributes正在殺死cookie返回。所以刪除了。 – SBerg413 2013-02-22 15:31:39

+1

'clearAuthenticationAttributes()'如何清除Cookie?你覆蓋它嗎?默認情況下,它只會刪除會話屬性'SPRING_SECURITY_LAST_EXCEPTION'。 – zagyi 2013-02-22 15:35:19

+0

我沒有重寫clearAuthenticationAttributes。嗯......不知道爲什麼它將其刪除。我將不得不玩耍,看看。 – SBerg413 2013-02-22 15:41:18