Spring Boot
[OAuth] OAuth ์์กด์ฑ ์ถ๊ฐ, ์ฟ ํค ๊ด๋ฆฌ ํด๋์ค ๊ตฌํํ๊ธฐ
์ฐ์ฃผ๋ฌผ๊ณ ๊ธฐ
2025. 5. 8. 12:21
๋ฐ์ํ
์ฐ์ ์ง๋๋ฒ์ ๋ฐ์๋
๊ตฌ๊ธ ํด๋ผ์ด์ธํธID๋ ์ํฌ๋ฆฟํค, DB ์ค์ ๋น๋ฒ ๋ชจ๋
.env ํ์ผ๋ก ๋นผ๋๊ณ gitignore์ ์ค์ ๊น์ง ํด๋ .
์ด์ ์ฟ ํค ๊ด๋ฆฌ ํด๋์ค ๊ตฌํํ๊ณ ,
OAuth์์ ์ ๊ณต๋ฐ์ ์ฌ์ฉ์ ์ ๋ณด ๊ฐ์ ธ์ค๋ ์ญํ ํ๋ ์๋น์ค ๋ง๋ค๊ฒ ใ ใ
build.gradle์ oauth2-client ์์กด์ฑ ์ถ๊ฐ

implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
์ฟ ํค ๊ด๋ฆฌ ํด๋์ค ๊ตฌํํ๊ธฐ
public class CookieUtil {
// ์์ฒญ๊ฐ(์ด๋ฆ, ๊ฐ, ๋ง๋ฃ ๊ธฐ๊ฐ)์ ๋ฐํ์ผ๋ก ์ฟ ํค ์ถ๊ฐํ๋ ๋ฉ์๋
public static void addCookie(HttpServletResponse response, String name, String value, int maxAge) {
Cookie cookie = new Cookie(name, value);
cookie.setPath("/");
cookie.setMaxAge(maxAge);
response.addCookie(cookie);
}
// ์ฟ ํค ์ด๋ฆ ์
๋ ฅ ๋ฐ์์, ํด๋น ์ฟ ํค ์ญ์
public static void deleteCookie(HttpServletRequest request, HttpServletResponse response, String name) {
Cookie[] cookies = request.getCookies();
if (cookies == null) {
return;
}
for(Cookie cookie : cookies) {
if(name.equals(cookie.getName())) {
cookie.setValue("");
cookie.setMaxAge(0);
cookie.setPath("");
response.addCookie(cookie);
}
}
}
// ๊ฐ์ฒด๋ฅผ ์ง๋ ฌํํด์ ์ฟ ํค์ ๊ฐ์ผ๋ก ๋ณํ
public static String serialize(Object obj) {
return Base64.getUrlEncoder()
.encodeToString(SerializationUtils.serialize(obj));
}
// ์ฟ ํค๋ฅผ ์ญ์ง๋ ฌํํด์ ๊ฐ์ฒด๋ก ๋ณํ
public static <T> T deserialize(Cookie cookie, Class<T> cls) {
return cls.cast(
SerializationUtils.deserialize(
Base64.getUrlDecoder().decode(cookie.getValue())
)
);
}
}
deleteCookie() :
์ค์ ๋ก ์ฟ ํค๋ฅผ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ์์ด์
ํ๋ผ๋ฏธํฐ๋ก ๋์ด์จ ์ฟ ํค๋ฅผ ๋น๊ฐ์ผ๋ก ๋ฐ๊พธ๊ณ
๋ง๋ฃ์๊ฐ์ 0์ผ๋ก ๋ฐ๊ฟ์
์ฟ ํค๊ฐ ์ฌ์ค์ ๋์๋ง์ ๋ง๋ฃ์ฒ๋ฆฌ๋๊ฒ ํจ.
๋ฐ์ํ