【问题标题】:Spring Security OAuth2 - stored authentication objectSpring Security OAuth2 - 存储的身份验证对象
【发布时间】:2015-11-20 01:41:08
【问题描述】:

我目前正在使用带有JdbcTokenStore 的 Spring Security Oauth2 版本 2.0.7.RELEASE 的相当普通的设置,最近遇到了一个有趣的问题。

我了解,在创建和存储访问令牌时,Authentication 对象会被序列化并持久化到数据库中。我知道这是必要的,并且在稍后在请求中使用访问令牌时使用。问题是我的Authentication 对象(Spring Security 的 UserDetails 接口的自定义实现)与我的应用程序域中的其他对象相关联。 (示例对象图可能类似于 Authentication -> com.myapp.User -> com.myapp.PhoneNumber)

我不得不对上述对象的实现进行一些更改,并注意到Authentication 对象在我的更改之前序列化并存储到数据库中不再反序列化,这是有道理的,因为我的对象模型已更改。

管理此场景的推荐方法是什么?有没有办法让Authentication 对象序列化为 JSON 而不是二进制?我倾向于从我的 Authentication 对象中删除我的自定义信息,但我想知道是否有更好的方法?

【问题讨论】:

  • 请提供代码sn-ps。
  • Arg 没关系,这个问题可以无效。在仔细考虑之后,我意识到一旦模型发生更改,您就可以简单地删除 OAUTH_ACCESS_TOKEN 表的内容。哦!

标签: spring spring-security spring-security-oauth2


【解决方案1】:

结束循环 - 我最终使用的方法是扩展 JdbcTokenStore 并覆盖方法 serializeAuthenticationdeserializeAuthentication 以使用 Jackson 执行序列化/反序列化。然后在我的对象模型中,我@JsonIgnore'd 验证用户时并不真正需要的实体。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-28
    • 2017-10-28
    • 2015-04-27
    • 1970-01-01
    • 2014-09-15
    • 2017-06-14
    • 2019-10-02
    • 2016-06-18
    相关资源
    最近更新 更多