我正在建立自己的CAS。編寫了一個認證處理程序,用戶名/密碼通過MySQL數據庫進行認證。我還添加了註冊頁面和相關邏輯。在CAS註冊後自動登錄
現在我想讓用戶在他/她註冊爲用戶時自動登錄。如何實現這一目標?
我正在建立自己的CAS。編寫了一個認證處理程序,用戶名/密碼通過MySQL數據庫進行認證。我還添加了註冊頁面和相關邏輯。在CAS註冊後自動登錄
現在我想讓用戶在他/她註冊爲用戶時自動登錄。如何實現這一目標?
這是我的實現。這個想法是從org.jasig.cas.web.flow.AuthenticationViaFormAction類中借用的。
在我的網絡控制器處理通常來自新用戶的註冊電子郵件的解鎖請求。
String oneTimeAuthToken = this.userManager.generateOneTimeAuthToken(userEmail);
UsernamePasswordCredentials credentials = new UsernamePasswordCredentials();
credentials.setUsername(userEmail);
credentials.setPassword(oneTimeAuthToken);
String tgt = centralAuthenticationService.createTicketGrantingTicket(credentials);
ticketGrantingTicketCookieGenerator.addCookie(request, response, tgt);
log.debug("Current user was unlocked and logged in.");
這背後的基本原理是創建一個臨時密碼標記進行身份驗證。當然,一旦驗證成功,userManager應該自動清除該令牌。
希望這是明確的。如果你觀察到任何錯誤,請告訴我。
你能解釋一下userManager對象和一些更多的示例用法嗎? – nash 2011-09-02 06:30:03
上述評論是不正確 - CAS客戶做不訪問cookie的,唯一的CAS服務器那樣 - CAS是不一個共享cookie的協議。
如果您只有一個站點,您可以在客戶端上創建一個會話,使用Java,Ruby的標準機制,無論您使用的是哪種平臺。
如果你想創建一個登錄多個應用程序的SSO會話,基本上你需要:
要完成第一個,您可能需要修改CAS LoginFlow以允許您通過一次性令牌或類似機制來驗證用戶身份。
CAS認證使用cookie在已成功認證的系統上存儲故障單。 CAS客戶端查找此cookie以確定系統是否應該退回到CAS服務器,因爲無論出於何種原因,票證都是無效的;否則系統將被允許訪問。註冊我意味着註冊 - 創建帳戶,而不是帳戶驗證... – 2010-03-27 17:05:58
我明白你在說什麼,但仍不知道如何解決我的問題。 – 2010-03-28 02:18:06