[英]How to handle version upgrades of spring-security-oauth2?
spring-security-oauth2將Authentication
對象作為序列化java對象( ByteArrayOutputStream.writeObject(authentication)
)保存為數據庫中訪問令牌條目的一部分。
如何處理spring-security(可能更改SpringSecurityCoreVersion.SERIAL_VERSION_UID)和spring-security-oauth(可能會更改OAuth2Authentication
的serialVersionUID)的版本升級? 如果serialVersionUID發生更改,則無法再對反序列化持久化的Authentication對象。
我們得出的結論是,在升級框架版本時,刪除包含序列化身份驗證對象的訪問令牌將是最干凈,最簡單的解決方案。 任何想法如何更優雅地處理這個?
我認為最好的解決方案是拋棄令牌。 SpringSecurityCoreVersion.SERIAL_VERSION_UID
聲明旁邊有一條很重要的評論說:
/**
* Global Serialization value for Spring Security classes.
*
* N.B. Classes are not intended to be serializable between different versions. See
* SEC-1709 for why we still need a serial version.
*/
實際上,他們故意在每個次要版本上碰到SERIAL_VERSION_UID
(至少)。
( SEC-1709的問題評論解釋了他們如何找到這個解決方案。)
我從評論中得到的是,如果你確實試圖透明地處理版本升級,你可能會導致事情破裂,帶來不可預測的后果。
另一方面, OAuth2Authentication.serialVersionUID
在過去9年中似乎沒有變化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.