토큰 발행

  • 통합로그인에서는 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 : 사용자 아이디로 로그인 처리