簡體   English   中英

如何處理spring-security-oauth2的版本升級?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM