gpt4 book ai didi

java - 如何处理spring-security-oauth2的版本升级?

转载 作者:行者123 更新时间:2023-12-03 03:40:19 25 4
gpt4 key购买 nike

spring-security-oauth2 将 Authentication 对象作为访问 token 条目的一部分保存在数据库中作为序列化 java 对象 (ByteArrayOutputStream.writeObject(authentication))。

如何处理 spring-security(可能会更改 SpringSecurityCoreVersion.SERIAL_VERSION_UID)和 spring-security-oauth(可能会更改 OAuth2Authentication 的serialVersionUID)的版本升级?如果serialVersionUID发生变化,则持久化的Authentication对象无法再反序列化。

我们得出的结论是,在升级框架版本时,删除包含序列化身份验证对象的访问 token 将是最干净、最简单的解决方案。有什么想法可以更优雅地处理这个问题吗?

最佳答案

我认为最好的解决方案是扔掉代币。 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 年中似乎没有发生变化。

关于java - 如何处理spring-security-oauth2的版本升级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27399615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com