From 375b5847092a66d977151fea1c9bd78bb2c08725 Mon Sep 17 00:00:00 2001 From: huhdy32 Date: Fri, 14 Nov 2025 11:31:18 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix(oauth):=20naver=20=EC=9D=B8=EC=BD=94?= =?UTF-8?q?=EB=94=A9=20=EB=AC=B8=EC=A0=9C=EB=A1=9C=20=EC=9D=B8=ED=95=9C=20?= =?UTF-8?q?=EC=97=90=EB=9F=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 변경 전: + 문자가 url 디코딩되며 공백으로 변경됨에 따라 토큰 폐기 실패 변경 후: + 문자를 %2B로 인코딩해서 전송 --- .../domain/auth/client/NaverOAuthClient.java | 5 ++++- .../domain/auth/util/UriUtilEncodeTest.java | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 domain/mathrank-auth-domain/src/test/java/kr/co/mathrank/domain/auth/util/UriUtilEncodeTest.java diff --git a/domain/mathrank-auth-domain/src/main/java/kr/co/mathrank/domain/auth/client/NaverOAuthClient.java b/domain/mathrank-auth-domain/src/main/java/kr/co/mathrank/domain/auth/client/NaverOAuthClient.java index e6f035d7..7eaaff24 100644 --- a/domain/mathrank-auth-domain/src/main/java/kr/co/mathrank/domain/auth/client/NaverOAuthClient.java +++ b/domain/mathrank-auth-domain/src/main/java/kr/co/mathrank/domain/auth/client/NaverOAuthClient.java @@ -1,8 +1,11 @@ package kr.co.mathrank.domain.auth.client; +import java.nio.charset.Charset; + import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.web.client.RestClient; +import org.springframework.web.util.UriUtils; import kr.co.mathrank.domain.auth.dto.OAuthLoginCommand; import kr.co.mathrank.domain.auth.entity.OAuthProvider; @@ -64,7 +67,7 @@ public boolean revoke(final String refreshToken) { .uri(uriBuilder -> uriBuilder .queryParam("client_id", naverConfiguration.getClientId()) .queryParam("client_secret", naverConfiguration.getClientSecret()) - .queryParam("access_token", token.access_token()) + .queryParam("access_token", UriUtils.encode(token.access_token(), Charset.defaultCharset())) .queryParam("grant_type", "delete") .queryParam("service_provider", "NAVER") .build()) diff --git a/domain/mathrank-auth-domain/src/test/java/kr/co/mathrank/domain/auth/util/UriUtilEncodeTest.java b/domain/mathrank-auth-domain/src/test/java/kr/co/mathrank/domain/auth/util/UriUtilEncodeTest.java new file mode 100644 index 00000000..75c945d3 --- /dev/null +++ b/domain/mathrank-auth-domain/src/test/java/kr/co/mathrank/domain/auth/util/UriUtilEncodeTest.java @@ -0,0 +1,15 @@ +package kr.co.mathrank.domain.auth.util; + +import java.nio.charset.Charset; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.springframework.web.util.UriUtils; + +class UriUtilEncodeTest { + @Test + void plus_문자_인코딩_테스트() { + Assertions.assertNotEquals("+", UriUtils.encode("+", Charset.defaultCharset())); + Assertions.assertEquals("+", UriUtils.decode("+", Charset.defaultCharset())); + } +} From 685c585986e5be0274680b2b6200d5d5ff7398c5 Mon Sep 17 00:00:00 2001 From: huhdy32 Date: Fri, 14 Nov 2025 11:46:23 +0900 Subject: [PATCH 2/2] =?UTF-8?q?refactor(oauth):=20charSet=20=EB=AA=85?= =?UTF-8?q?=EC=8B=9C=20=EC=A7=80=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kr/co/mathrank/domain/auth/client/NaverOAuthClient.java | 3 ++- .../kr/co/mathrank/domain/auth/util/UriUtilEncodeTest.java | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/domain/mathrank-auth-domain/src/main/java/kr/co/mathrank/domain/auth/client/NaverOAuthClient.java b/domain/mathrank-auth-domain/src/main/java/kr/co/mathrank/domain/auth/client/NaverOAuthClient.java index 7eaaff24..f860ff99 100644 --- a/domain/mathrank-auth-domain/src/main/java/kr/co/mathrank/domain/auth/client/NaverOAuthClient.java +++ b/domain/mathrank-auth-domain/src/main/java/kr/co/mathrank/domain/auth/client/NaverOAuthClient.java @@ -1,6 +1,7 @@ package kr.co.mathrank.domain.auth.client; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; @@ -67,7 +68,7 @@ public boolean revoke(final String refreshToken) { .uri(uriBuilder -> uriBuilder .queryParam("client_id", naverConfiguration.getClientId()) .queryParam("client_secret", naverConfiguration.getClientSecret()) - .queryParam("access_token", UriUtils.encode(token.access_token(), Charset.defaultCharset())) + .queryParam("access_token", UriUtils.encode(token.access_token(), StandardCharsets.UTF_8)) .queryParam("grant_type", "delete") .queryParam("service_provider", "NAVER") .build()) diff --git a/domain/mathrank-auth-domain/src/test/java/kr/co/mathrank/domain/auth/util/UriUtilEncodeTest.java b/domain/mathrank-auth-domain/src/test/java/kr/co/mathrank/domain/auth/util/UriUtilEncodeTest.java index 75c945d3..d712437a 100644 --- a/domain/mathrank-auth-domain/src/test/java/kr/co/mathrank/domain/auth/util/UriUtilEncodeTest.java +++ b/domain/mathrank-auth-domain/src/test/java/kr/co/mathrank/domain/auth/util/UriUtilEncodeTest.java @@ -1,6 +1,7 @@ package kr.co.mathrank.domain.auth.util; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -9,7 +10,7 @@ class UriUtilEncodeTest { @Test void plus_문자_인코딩_테스트() { - Assertions.assertNotEquals("+", UriUtils.encode("+", Charset.defaultCharset())); - Assertions.assertEquals("+", UriUtils.decode("+", Charset.defaultCharset())); + Assertions.assertNotEquals("+", UriUtils.encode("+", StandardCharsets.UTF_8)); + Assertions.assertEquals("+", UriUtils.decode("+", StandardCharsets.UTF_8)); } }