【发布时间】:2015-07-02 21:53:09
【问题描述】:
我正在尝试使用带有配置的 JdbcTokenStore 和具有无限生命周期访问令牌的 DefaultTokenServices 的 spring boot 和 spring security oauth 运行示例应用程序。
使用 gradle bootRun 运行这个应用程序,应用程序无法启动并抛出“Caused by: java.lang.ClassCastException: com.sun.proxy.$Proxy51 cannot be cast to org.springframework.security.oauth2.provider .token.DefaultTokenServices"
为什么在 DefaultTokenServices bean 周围有一个代理?
奇怪的是 - 使用 InMemoryTokenStore 运行应用程序...一切正常(参见内存分支)。
【问题讨论】:
-
我在为 JPA 启用事务支持时遇到了这个问题。您的
@SpringBootApplication可能正在自动配置事务数据源,是吗?我肯定在我的非 spring-boot 项目中将其追踪到<tx:annotation-driven order="10"/>。一旦我将其注释掉,我的授权服务就配置得很好。不确定确切的冲突是什么,但我相当肯定这里存在系统性错误。尝试禁用交易只是为了验证。 -
您确定要无限的终身访问令牌吗?!这几乎违背了拥有 oauth 的目的。刷新令牌的生命周期可能是无限的。
标签: spring spring-security spring-security-oauth2