【问题标题】:migrate spring oauth db from inmemory to jdbc将spring oauth db从内存迁移到jdbc
【发布时间】:2015-07-02 08:19:32
【问题描述】:

我正在尝试将 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)

谢谢

【问题讨论】:

    标签: java spring jdbc oauth


    【解决方案1】:

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

    我认为您想要的是将令牌保存在数据库中,因此如果您重新启动服务器,客户端将不会丢失会话。

    这可以使用以下代码进行:

    @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

    【讨论】:

    • 我也想将令牌放入数据库中,但这将是下一步,将它们都放入会更好
    猜你喜欢
    • 2022-11-03
    • 2021-06-24
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 2011-08-09
    • 2014-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多