我正在尝试为我的java rest服务添加oauth2支持,
我已经做好了让它在内存中运行:
protected static class MyAuthorizationServerConfigurerAdapter extends
AuthorizationServerConfigurerAdapter {
...
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients
.inMemory()
.withClient("myapp")
.authorizedGrantTypes("password", "refresh_token")
.authorities("USER")
.scopes("read", "write")
.resourceIds(RESOURCE_ID)
.secret("mysecret");
}
...
}
问题是,每次服务器重启db都会丢失.
所以我想连接它和现有的独立sql数据库,任何想法或指导如何做到这一点?
clients.jdbc(dataSource)
谢谢
解决方法:
您确定要将客户端配置放在数据库中吗?这只允许您动态配置新客户端.
我认为您想要的是将您的令牌保存在数据库中,这样如果您重新启动服务器,客户端将不会丢失其会话.
这可以使用以下代码:
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception }
endpoints.tokenStore(new JdbcTokenStore(dataSource)).userApprovalHandler(userApprovalHandler)
.authenticationManager(authenticationManager);
}
CREATE TABLE `oauth_access_token` (
`token_id` varchar(255) DEFAULT NULL,
`token` blob,
`authentication_id` varchar(255) DEFAULT NULL,
`user_name` varchar(255) DEFAULT NULL,
`client_id` varchar(255) DEFAULT NULL,
`authentication` blob,
`refresh_token` varchar(255) DEFAULT NULL
);
CREATE TABLE `oauth_refresh_token` (
`token_id` varchar(256) DEFAULT NULL,
`token` blob,
`authentication` blob
);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。