Spring Security OAuth2 - 存储的身份验证对象

时间:2015-11-15 02:34:33

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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