네이버 로그인 과정

🔔 네이버 로그인 검증 과정 네이버 로그인하기까지 어떤 과정을 거치는가? 1. 세션 유지 및 위조 방지용 상태 토큰 생성 // CSRF 방지를 위한 상태 토큰 생성 코드 // 상태 토큰은 추후 검증을 위해 세션에 저장되어야 한다. public String generateState() { SecureRandom random = new SecureRandom(); return new BigInteger(130, random).toString(32); } // 상태 토큰으로 사용할 랜덤 문자열 생성 String state = generateState(); // 세션 또는 별도의 저장 공간에 상태 토큰을 저장 request.session().attribute("state", state); return state; CSRF 공격을 방지하기 위해 애플리케이션과 사용자 간의 상태를 보유하는 고유한 세션 토큰을 만들어야 한다. 이 세션 토큰을 상태 토큰(state token) 이라 하며, 상태 토큰의 값은 사용자가 네이버 로그인을 진행하는 동안 유지되어야 하며 고유한 값이어야 한다. 생성한 상태 토큰은 세션이나 별도의 저장 공간에 저장해야 한다. ...

December 24, 2024 17:56 · 3 min · 448 words · nakji

4D4cat) 네이버 로그인 연동을 위한 MVC 테스트 1

🔔 MVC Test 코드 작성 네이버 연동 페이지에 접근이 잘 되는가? LoginController.java @Controller @RequiredArgsConstructor @RequestMapping("/login") public class LoginController { private final NaverLoginService naverLoginService; @GetMapping("/naver") public void naverLogin(HttpServletResponse response) throws IOException { response.sendRedirect(naverLoginService.getNaverOauth2LoginUrl()); } } naverLogin {URL}/login/naver로 접근하면 Naver 로그인 인증을 위한 페이지로 이동된다. 리다이렉트 URL은 naverLoginService에서 받는다. NaverLoginService.java @Service @RequiredArgsConstructor public class NaverLoginService { private static final String BASE_URL = "https://nid.naver.com/oauth2.0"; private final AppProperties app; private final ThirdPartyProperties secrets; public String getNaverOauth2LoginUrl() { String authorizeUrl = BASE_URL+"/authorize"; String callbackUrl = getServiceUrl()+"/login/naver/callback"; return UriComponentsBuilder .fromHttpUrl(authorizeUrl) .queryParam("response_type", "code") .queryParam("client_id", secrets.naver().naverId()) .queryParam("redirect_uri", callbackUrl) .queryParam("state", "random") .toUriString(); } public String getServiceUrl() { return app.serviceUrl(); } } AppProperties 현재는 도메인 URL만 세팅되어 있다. ...

December 23, 2024 22:33 · 2 min · 303 words · nakji