我的要求是如下:如何使用自定義java類/自定義spring框架類的Spring安全性?
在我們的應用程序的用戶的憑據對數據庫驗證(不使用彈簧安全性,因爲它是一個遺留應用程序)的第一次。如果用戶是有效的用戶,他將登錄到應用程序中。一旦用戶登錄到應用程序,他可以進行幾次休息電話。現在,我想在進行任何休息呼叫之前通過使用彈簧安全性再次驗證用戶的憑證。在這裏,挑戰是我們不應該重新設計數據庫模式。我們需要使用驗證用戶的存儲過程。如果認證失敗,此特定存儲過程將返回錯誤消息,否則不會返回任何內容。在這種情況下沒有定義任何角色。只需使用存儲過程進行簡單認證。現在,我想通過春季安全來完成這件事。可能會編寫一個java類/自定義spring框架的類,並在其中調用存儲過程,並在spring安全性配置文件中使用該類。任何人都可以提出關於如何啓動的想法嗎?
我已經實現了AuthenticationProvider。以下是* security.xml。
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/rest/*" access="permitAll"></intercept-url>
</http>
<authentication-manager >
<authentication-provider ref="csAuthenticationProvider" />
</authentication-manager>
但是,安全框架正在尋找的角色。在我的情況下,沒有定義任何角色。正如我前面所說的,用戶第一次沒有使用spring框架進行身份驗證。如果用戶想要進行任何休息呼叫,則彈簧安全需要重新認證用戶。這並不意味着用戶需要重新輸入憑據。由於他已經通過身份驗證,因此用戶的憑證可在剩餘呼叫/請求中使用。唯一需要做的是我需要通過使用請求使用憑據並使用存儲過程重新驗證。當然,使用AuthenticationProvider可能是一個好主意,但驗證(身份驗證身份驗證)方法的參數「身份驗證身份驗證」對我無用,因爲我需要再次調用自己的存儲過程調用。暫時,我沒有使用Authentication對象,而是使用authenticate()方法中的存儲過程調用代碼。但奇怪的是,authenticate()方法沒有被調用。我感到驚訝和困惑。有沒有任何機構對我做錯的地方有任何想法?
這將是偉大的,如果任何人都可以分享我的問題的僞代碼。 –
請詳細描述你正在做什麼。你說「安全框架正在尋找角色」。那是什麼意思?什麼代碼實際上被稱爲?同時解釋如果Spring Security沒有可用的憑據並且您不希望用戶提供任何憑據,您希望Spring Security如何對用戶進行身份驗證。如果您希望僅使用與登錄時相同的HTTP會話,那麼當您對用戶進行身份驗證時,您需要創建一個安全上下文,Spring Security可以將其用於將來的請求。 –
Luke,謝謝!「安全框架正在尋找角色」:這意味着根據我的要求,不需要驗證角色。用戶輸入的憑證在用戶第一次登錄時存儲在請求對象中。我需要使用這些憑證並使用spring安全性(通過存儲過程調用)重新進行身份驗證。當用戶登錄時,我可以使用相同的HTTP會話。請你指導我如何獲得相同的http會話,創建Spring Security上下文並根據上述要求重新進行身份驗證。如果你能分享一些僞代碼,那將是非常好的。 –