质量推广提醒 - JDK23:重新指定的 Subject.getSubject API

💡 原文英文,约600词,阅读约需2分钟。
📝

内容提要

OpenJDK Quality Group鼓励使用OpenJDK构建的FOSS项目进行测试,以提高发布质量。JDK 17弃用了Security Manager,影响了Subject::doAs和Subject::getSubject等API。从JDK 23开始,主题授权和Subject API的行为取决于允许Security Manager。建议使用新的JAAS API作为替代方案。可以使用jdeprscan工具来识别弃用的API。存储Subject在AccessControlContext中的代码应进行迁移。有关更多详细信息,请参阅JDK 23发布说明。

🎯

关键要点

  • OpenJDK Quality Group鼓励使用OpenJDK构建的FOSS项目进行测试,以提高发布质量。

  • JDK 17弃用了Security Manager,影响了Subject::doAs和Subject::getSubject等API。

  • 从JDK 23开始,主题授权和Subject API的行为取决于允许Security Manager。

  • 建议使用新的JAAS API作为替代方案,Subject::callAs替代Subject::doAs,Subject::current替代Subject::getSubject。

  • 使用jdeprscan工具可以识别弃用的API,建议尽快迁移相关代码。

  • 存储Subject在AccessControlContext中的代码应尽快迁移,以免在Security Manager被移除后失效。

  • 有关更多详细信息,请参阅JDK 23发布说明。

延伸问答

JDK 23中Subject.getSubject API的行为有什么变化?

在JDK 23中,Subject.getSubject API的行为取决于是否允许Security Manager,如果未设置或设置为disallow,将抛出UnsupportedOperationException。

如何迁移到新的JAAS API?

可以使用Subject.callAs替代Subject.doAs,使用Subject.current替代Subject.getSubject,尽快迁移相关代码。

为什么JDK 17弃用了Security Manager?

JDK 17弃用了Security Manager是为了简化安全管理,相关的API也被弃用以准备将来的移除。

如何使用jdeprscan工具?

jdeprscan工具可以扫描JAR文件以识别使用了弃用API的代码,帮助开发者进行迁移。

在JDK 23中,如何保持旧代码的兼容性?

可以通过在命令行中设置-Djava.security.manager=allow来临时允许Security Manager,以保持旧代码的兼容性。

存储Subject在AccessControlContext中的代码需要做什么?

存储Subject在AccessControlContext中的代码应尽快迁移,以免在Security Manager被移除后失效。

🏷️

标签

➡️

继续阅读