java Springboot Cassandra -使用SSL的CqlSessionFactoryBean

0g0grzrc  于 2023-04-04  发布在  Java
关注(0)|答案(2)|浏览(134)

关于如何连接到启用SSL的Cassandra集群的小问题。
目前,我正在连接到一个Cassandra集群,该集群通过执行以下操作启用SSL,并且它工作得非常好。

@Configuration
public class BaseCassandraConfiguration extends AbstractReactiveCassandraConfiguration {

    @Value("${spring.data.cassandra.username}")
    private String username;
    @Value("${spring.data.cassandra.password}")
    private String passPhrase;
    @Value("${spring.data.cassandra.keyspace-name}")
    private String keyspace;
    @Value("${spring.data.cassandra.local-datacenter}")
    private String datacenter;
    @Value("${spring.data.cassandra.contact-points}")
    private String contactPoints;
    @Value("${spring.data.cassandra.port}")
    private int    port;
    
    @Bean
    @NonNull
    @Override
    public CqlSessionFactoryBean cassandraSession() {
        final CqlSessionFactoryBean cqlSessionFactoryBean = new CqlSessionFactoryBean();
        cqlSessionFactoryBean.setContactPoints(contactPoints);
        cqlSessionFactoryBean.setKeyspaceName(keyspace);
        cqlSessionFactoryBean.setLocalDatacenter(datacenter);
        cqlSessionFactoryBean.setPort(port);
        cqlSessionFactoryBean.setUsername(username);
        cqlSessionFactoryBean.setPassword(passPhrase);
        return cqlSessionFactoryBean;
    }

我有另一个Cassandra集群,它启用了SSL。
我本来期待看到像cqlSessionFactoryBean.setSSLEnabled(true)这样的东西,类似的东西。不幸的是,似乎没有这样的东西。
我可以问什么是正确的方式来设置这个bean,以便连接到一个Cassandra与SSL请?
谢谢大家。

yvt65v4c

yvt65v4c1#

CqlSessionFactoryBean没有用于SSL连接的方法,因此您可能必须更改它并使用CqlSession

SSLContext sslContext = ...
CqlSession session = CqlSession.builder()
    .withSslContext(sslContext)
    .build();

SslEngineFactory yourFactory = ...
CqlSession session = CqlSession.builder()
    .withSslEngineFactory(yourFactory)
    .build();
pvcm50d1

pvcm50d12#

CqlSessionFactoryBean没有你要找的方法,但是你可以使用setSessionBuilderConfigurer。它返回一个引用,指向用于构造会话的CqlSessionBuilder示例,你可以任意配置它。

bean.setSessionBuilderConfigurer(
    sessionBuilder -> sessionBuilder.withSslContext(createSSLContext())
);

相关问题