spring - oauth2 身份验证数据 blob 持久性方法的优缺点

标签 spring oauth spring-security

我计划使用“Spring Security OAuth”框架作为具有访问 token 、刷新 token 和代码功能的 OAUTH2 授权服务器的基础。

默认情况下,框架使用 java 序列化在数据库表 oauth_code、oauth_access_token 和 oauth_refresh_token 中存储额外的身份验证数据(“身份验证”列)。

我想开始讨论以找出这种方法的利弊,我很想知道是否有计划改变这种情况。

缺点:

  • 如果新版本无法反序列化先前版本的数据,则无法进行框架版本升级
  • 不需要的数据:blob 可能包含根本不需要的数据(例如原始请求)
  • 敏感数据:blob 可能包含敏感数据,如用户凭据
  • 数据冗余:上面列出的表的数据存储了3次
  • 数据分析:纯SQL语句无法选择鉴权数据

  • 优点:
  • 扩展:无需架构迁移即可轻松扩展数据(最好从头开始)

  • “blob”方法的替代方法:
  • 将身份验证数据存储在单独的表(例如 oauth_authentication)中,其中包含真正需要的每条信息(例如用户 ID、客户端 ID、范围等)的数据列以及来自 oauth_code、oauth_access_token 和 oauth_refresh_token 的外键。

  • 替代方案的负面后果是什么?

    非常感谢!

    最佳答案

    @丹尼斯:我完全同意你的看法。目前我正在解决这个 blob 持久性问题。由于 spring 升级了安全版本,它给我们带来了 n 多个问题。您的第一点缺点:如果新版本无法反序列化先前版本的数据,则无法升级框架版本。我认为这应该在 OAuth2 框架中优雅地处理。

    关于spring - oauth2 身份验证数据 blob 持久性方法的优缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31612475/

    相关文章:

    c# - Imgur OAuth2 身份验证和上传 C#

    api - 亚马逊 API 网关的 OAuth

    spring - Grails 3.3.10 urlmapping不再起作用

    java - Spring Security 在身份验证过滤器之前添加过滤器

    java - 如何在 Spring Boot oauth2 中允许来自特定主机的特定端点

    spring - 基于 @AspectJ 的 Spring 3.1 AOP

    java - 即使通过 Spring Boot 在架构中指定,H2 数据库也无法在列中设置默认值

    swift - 如何使用 JWT for Google firebase 生成授权 token ?

    java - 如何在Spring-Security中创建条件AuthenticationProvider?

    java - spring集成-逐行读取远程文件