gpt4 book ai didi

java - 将 spring oauth db 从内存迁移到 jdbc

转载 作者:搜寻专家 更新时间:2023-11-01 02:42:54 25 4
gpt4 key购买 nike

我正在尝试将 oauth2 支持添加到我的 java rest 服务中,

我设法让它在内存中工作:

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");
}
...
}

问题,每次服务器重新启动时,数据库都会丢失。所以我想将它和现有的独立 SQL 数据库连接起来,有什么想法或指导如何完成吗?

我发现有一个 jdbc 选项,但我找不到让它工作的方法

clients.jdbc(dataSource)

谢谢

最佳答案

您确定要将客户端配置放入数据库吗?这将只允许您动态配置新客户端。

我想你想要的是将你的 token 保存在数据库中,这样如果你重新启动你的服务器,客户端就不会丢失他们的 session 。

这可以用下面的代码来实现:

@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
);

来源:https://github.com/spring-projects/spring-security-oauth/blob/master/spring-security-oauth2/src/test/resources/schema.sql

关于java - 将 spring oauth db 从内存迁移到 jdbc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29835444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com