RedisCommandExecutionException: NOAUTH Authentication required.

chrkb1569·2022년 10월 9일
2

오류 해결 일지

목록 보기
2/11
post-thumbnail

로그인 기능을 구현하면서 재발급 토큰을 따로 관리하기 위하여 Redis를 Spring과 연동하였는데, 다음처럼 오류가 발생하였습니다.

구글링을 통하여 검색을 해보니, 로직의 문제는 아니였으며, Redis와 관련된 설정을 하는 부분에서 문제가 발생하였습니다.

@Configuration
@EnableRedisRepositories
public class RedisConfig {
    @Value("${spring.redis.host}")
    private String host;

    @Value("${spring.redis.port}")
    private int port;

    @Bean
    public RedisConnectionFactory 
        return new LettuceConnectionFactory(host, port);
    }

    @Bean
    public RedisTemplate<String, String> redisTemplate() {
        RedisTemplate<String, String> redisTemplate = new RedisTemplate<>();
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new StringRedisSerializer());
        redisTemplate.setConnectionFactory(redisConnectionFactory());
        return redisTemplate;
    }
}

일단 다음의 코드가 수정하기 전 코드입니다.

우리가 직면한 코드를 자세히 살펴보면,

"NOAUTH Authentication required."

라는 오류 메세지가 존재하는 것을 확인할 수 있습니다.

해당 오류는 Redis 서버에 비밀번호가 설정되어 있어서 발생하는 오류로, 비밀번호를 통하여 인증을 해주어야합니다.

따라서, 기존의 코드를 다음과 같이 수정하였습니다.

@Configuration
@EnableRedisRepositories
public class RedisConfig {
    @Value("${spring.redis.host}")
    private String host;

    @Value("${spring.redis.port}")
    private int port;

    @Value("${spring.redis.password}")
    private String password;

    @Bean
    public RedisConnectionFactory redisConnectionFactory() {
        RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
        redisStandaloneConfiguration.setHostName(host);
        redisStandaloneConfiguration.setPort(port);
        redisStandaloneConfiguration.setPassword(password);
        LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(redisStandaloneConfiguration);
        return lettuceConnectionFactory;

    }

    @Bean 
    public RedisTemplate<String, String> redisTemplate() {
        RedisTemplate<String, String> redisTemplate = new RedisTemplate<>();
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new StringRedisSerializer());
        redisTemplate.setConnectionFactory(redisConnectionFactory());
        return redisTemplate;
    }
}

처음에 Redis 다운받고 이것저것 해보다가 비밀번호 설정을 해놨었는데, 이게 발목을 잡을 줄은 몰랐습니다 ㅋㅋ

그래도 잘 해결해서 다행입니다.

0개의 댓글