-
통합로그인에서는 SSO 토큰 발행 후 토큰을 쿠키에 저장합니다.
쿠키에 저장된 토큰은 같은 도메인의 다른 서비스에 전달할 수 있습니다.import com.google.gson.Gson; import com.rivest.sso.api.SSO; // SSO 객체 생성 SSO sso = new SSO(); // 사용자의 기본 인적사항 [필수] sso.setUserId("HonGilDong"); sso.setClientIp("192.168.0.122"); // 일반적으로 request.getRemoteAddr() // 사용자의 부가적인 인적사항 [옵션] sso.setProfile("userName", "홍길동"); sso.setProfile("deptCode", "A1000"); sso.setProfile("deptName", "조선시대 의적"); sso.setProfile("handphone", "010-0000-0000"); sso.setProfile("email", "rivestsoft@gmail.com"); sso.setProfile("age", "20"); sso.setProfile("birth", "19901215"); // SSO Server의 IP와 PORT 설정 [옵션] sso.setServerIp("localhost"); sso.setServerPort((short)8420); // 토큰 발행 요청 sso.issueToken(); // 에러체크 if(sso.getError() < 0) { System.out.println("에러발생"); return; } // 토큰을 쿠키에 저장 Cookie cookie = new Cookie("ssoToken", sso.getToken()); cookie.setMaxAge(24*3600); cookie.setPath("/"); response.addCookie(cookie);
토큰 발행
토큰 검증
-
각각의 서비스에서는 쿠키로 전달받은 SSO 토큰을 검증합니다.
SSO 토큰 검증을 성공하면 로그인 처리 합니다.import com.google.gson.Gson; import com.rivest.sso.api.SSO; // 쿠키에서 토큰값 조회 String ssoToken = null; Cookie[] cookies = request.getCookies(); for(int i=0; cookies != null && i < cookies.length; i++) { Cookie c = cookies[i] ; // 저장된 쿠키에서 이름을 가져온다 String cName = c.getName(); // 쿠키값을 가져온다 if(cName.equals("ssoToken")) { ssoToken = c.getValue(); } } // SSO 객체 생성 SSO sso = new SSO(); // 토큰 검증 요청시 필수값 sso.setToken(ssoToken); sso.setClientIp("192.168.0.122"); // 일반적으로 request.getRemoteAddr() // SSO Agent의 PORT 설정 [옵션] sso.setAgentPort((short)8421); // 토큰 검증 요청 sso.verifyToken(); // 에러체크 if(sso.getError() != 0) { System.out.println("에러발생"); return; } // 사용자 정보 System.out.println("userId : " + sso.getUserId()); System.out.println("userName : " + sso.getProfile("userName")); System.out.println("age : " + Integer.parseInt(sso.getProfile("age"))); // TODO : 사용자 아이디로 로그인 처리