• Contribution
    • 5.0
    • Archive

  • 시작하기
  • 실행환경
  • 개발환경
  • 공통컴포넌트
시작하기 실행환경 개발환경 공통컴포넌트
  • 공통컴포넌트 개요
  • 사용자디렉토리/통합인증
  • 보안
  • 통계/리포팅
  • 협업
  • 사용자지원
  • 시스템관리
  • 시스템/서비스연계
  • 디지털 자산관리
  • 요소기술
공통컴포넌트 개요
  • 공통컴포넌트 시작하기
  • 공통컴포넌트 환경설정
  • 공통컴포넌트 배포 파일의 구성
  • 공통컴포넌트 테이블 구성 정보
  • 패키지 간 참조 관계
사용자디렉토리/통합인증
    일반 로그인
    • SSO 연계서비스
  • 인증서로그인
  • 로그인정책관리
보안
    권한관리
    • 권한관리 기능
    • 권한별 롤관리
  • 권한그룹관리
  • 그룹관리
  • 롤관리
  • 부서권한관리
  • 암호화 복호화
  • 로그인 시간관리
  • 비밀번호 만료기간 관리
통계/리포팅
  • 게시물 통계
  • 사용자 통계
  • 접속 통계
  • 화면 통계
  • 보고서 통계
  • 자료이용현황 통계
협업
    게시판
    • 블로그관리
    • 게시판관리
    • 게시판(방명록)
    • 게시판(통합게시판)
    • 템플릿관리
    • 댓글관리
    • 스크랩관리
    • 만족도조사
    커뮤니티
    • 커뮤니티생성관리
    • 커뮤니티사용관리
    • 커뮤니티회원관리
    문자메세지
    • 문자메시지서비스
    일정관리
    • 부서일정관리
    • 일정관리
    • 일지관리
    • 전체일정
    • 간부일정관리
    • 부서업무함관리
    • 주간/월간보고관리
    • 메모할일관리
    • 메모보고
    전자우편
    • 메일솔루션 연동 인터페이스
    주소록/명함록
    • 명함관리
    • 주소록관리
    전자결재
    • 약식결재
사용자지원
    사용자관리
    • 기업 회원 관리
    • 사용자 관리
    • 회원 관리
    개인화
    • 마이페이지
    약관관리
    • 약관관리
    • 저작권보호정책
    • 개인정보보호정책확인
    온라인헬프
    • 도움말
    • 용어사전
    • FAQ관리
    • Q&A관리
    • 행정전문용어사전관리
    • 온라인매뉴얼
    온라인참여
    • 상담관리
    • 설문관리
    • 설문조사
    • 설문템플릿관리
    • 설문응답자관리
    • 설문질문관리
    • 설문항목관리
    • 회의관리
    • 온라인POLL관리
    정보제공/알림
    • 뉴스관리
    • 사이트관리
    • 사이트맵
    • 추천사이트관리
    • 행사/이벤트/캠페인
    • 팝업창관리
    • 정보알림이
    • 배너관리
    • 로그인화면이미지관리
    • 최근검색어조회
    • 메인이미지관리
    • 통합링크관리
    • 사용자부재관리
    • 인터넷서비스안내및관리
    • 회의실관리
    • 회의실예약관리
    • Wiki기능
    • RSS태그관리
    • Twitter연동
    • 쪽지관리
    • 받은쪽지함관리
    • 보낸쪽지함관리
    • 직원경조사관리
    • 휴가관리
    • 당직관리
    • 포상관리
    • 기념일관리
    • 행사신청관리
    • 행사접수관리
    • 약도관리
    • 개인연차관리
    • Facebook 연동
시스템관리
    공통코드관리
    • 공통분류코드
    • 공통상세코드
    • 공통코드
    • 우편번호관리
    • 행정코드관리
    • 기관코드수신
    • 기관코드
    • 법정동코드
    • 도로명주소연계
    로그관리
    • 로그관리
    • 사용로그관리
    • 송/수신 로그관리
    • 시스템 이력관리
    • 웹로그관리
    • 접속로그관리
    • 개인정보조회로그관리
    메뉴관리
    • 메뉴관리
    • 메뉴생성관리
    • 바로가기메뉴관리
    프로그램관리
    • 프로그램관리
    배치관리
    • 배치작업관리
    • 배치결과관리
    • 스케줄처리
    시스템관리
    • 백업관리
    • 네트워크관리
    • 서버정보관리
    장애관리
    • 장애신청관리
    • 장애처리결과관리
시스템/서비스연계
  • 시스템연계관리
  • 연계현황관리
  • 연계메시지관리
  • 연계기관관리
디지털 자산관리
  • 개인지식관리
  • 지식맵
    • 지식맵관리(조직)
    • 지식맵관리(유형)
    • 지식정보제공
  • 지식전문가관리
  • 지식정보관리
  • 지식평가관리
요소기술
    신규 컴포넌트(v3.2)
    • 이중등록(Double Submit) 방지
    • Http Request 정보 취득
    • 숫자 지역화 처리
    • 날짜 지역화 처리
    • showModalDialog 대체 기능
    • HTTPS UrlRewrite filter
    • 중복 로그인 방지 기능
    • 출퇴근 관리
    • Resource close 처리
    • Basic 로그
    외부 추가 컴포넌트
    • EasyBatch(v3.2 신규)
    • Social Login(Naver, Google, KAKAO)
    • LDAP조직도관리(v3.2 신규)
    • 웹소켓메신저(v3.2 신규)
    메시지 처리
    • 경고메시지
    • 에러메시지
    • 정보메시지
    • 확인메시지
    인쇄/출력
    • 화면인쇄
    • 프린터상태확인
    • 전자관인출력
    쿠키/세션
    • 세션처리
    • 쿠키처리
    달력
    • 공휴일관리(달력)
    인터페이스/화면
    • 메인메뉴
    • 트리메뉴
    웹에디터
    • 웹에디터(공통컴포넌트 2.0 매뉴얼 참조)
    • WYSIWYG Editor(v3.2 신규)
    포맷/계산/변환
    • 날짜/시간/요일 계산
    • 날짜/시간/요일 변환
    • 날짜/시간/요일 유효성체크
    • 날짜/시간/요일 포맷변경
    • 랜덤날짜구하기
    • 랜덤문자열구하기
    • 랜덤숫자구하기
    • 문자열검색
    • 문자열변환
    • 문자열유효성체크
    • 문자열치환
    • 번호유효성체크
    • 단위계산
    • 숫자검색
    • 숫자변환
    • 숫자유효성체크
    • 숫자치환
    • 포멧유효성체크
    • 실수/정수/음수체크
    • 양력/음력변환
    • 인코딩/디코딩
    • 특수문자열처리
    • 환율계산
    • TIMESTAMP값구하기
    시스템
    • 네트워크상태체크
    • 네트워크정보확인
    • 디렉토리감시
    • 디렉토리권한체크
    • 디렉토리복사
    • 디렉토리삭제
    • 디렉토리생성
    • 디렉토리속성정보체크
    • 디렉토리 압축/해제
    • 디렉토리이동
    • 송수신모니터링
    • DB서비스모니터링
    • 로그패턴검사
    • 디렉토리일자체크
    • 디렉토리존재체크
    • 디스크속성정보체크
    • 디스크유효용량체크
    • 디스크존재체크
    • 서버정보확인
    • 시스템정보확인
    • 유효메모리체크
    • 클라이언트정보확인
    • 파일권한체크
    • 프로세스모니터링
    • 네트워크서비스모니터링
    • 파일시스템모니터링
    • 파일다운로드
    • 파일변환
    • 파일보안
    • 파일복사
    • 파일비교
    • 파일삭제
    • 파일생성
    • 파일속성정보체크
    • 파일송/수신
    • 파일압축/해제
    • 프록시서비스
    • 파일동기화
    • 로그인세션정보체크
    • 파일업로드
    • 파일이동
    • 파일일자체크
    • 파일존재체크
    • 파일파싱
    • 프로세스ID확인
    • 프로퍼티
    • XML 데이터조립
    • XML 데이터파싱
    • 서버자원모니터링
    • 웹표준검사
    • HTTP서비스모니터링
페이지보기 페이지편집 문서에 이슈 생성 프로젝트에 이슈 생성

공통컴포넌트

    • 공통컴포넌트 시작하기
    • 공통컴포넌트 환경설정
    • 공통컴포넌트 배포 파일의 구성
    • 공통컴포넌트 테이블 구성 정보
    • 패키지 간 참조 관계
      • SSO 연계서비스
    • 인증서로그인
    • 로그인정책관리
      • 권한관리 기능
      • 권한별 롤관리
    • 권한그룹관리
    • 그룹관리
    • 롤관리
    • 부서권한관리
    • 암호화 복호화
    • 로그인 시간관리
    • 비밀번호 만료기간 관리
    • 게시물 통계
    • 사용자 통계
    • 접속 통계
    • 화면 통계
    • 보고서 통계
    • 자료이용현황 통계
      • 블로그관리
      • 게시판관리
      • 게시판(방명록)
      • 게시판(통합게시판)
      • 템플릿관리
      • 댓글관리
      • 스크랩관리
      • 만족도조사
      • 커뮤니티생성관리
      • 커뮤니티사용관리
      • 커뮤니티회원관리
      • 문자메시지서비스
      • 부서일정관리
      • 일정관리
      • 일지관리
      • 전체일정
      • 간부일정관리
      • 부서업무함관리
      • 주간/월간보고관리
      • 메모할일관리
      • 메모보고
      • 메일솔루션 연동 인터페이스
      • 명함관리
      • 주소록관리
      • 약식결재
      • 기업 회원 관리
      • 사용자 관리
      • 회원 관리
      • 마이페이지
      • 약관관리
      • 저작권보호정책
      • 개인정보보호정책확인
      • 도움말
      • 용어사전
      • FAQ관리
      • Q&A관리
      • 행정전문용어사전관리
      • 온라인매뉴얼
      • 상담관리
      • 설문관리
      • 설문조사
      • 설문템플릿관리
      • 설문응답자관리
      • 설문질문관리
      • 설문항목관리
      • 회의관리
      • 온라인POLL관리
      • 뉴스관리
      • 사이트관리
      • 사이트맵
      • 추천사이트관리
      • 행사/이벤트/캠페인
      • 팝업창관리
      • 정보알림이
      • 배너관리
      • 로그인화면이미지관리
      • 최근검색어조회
      • 메인이미지관리
      • 통합링크관리
      • 사용자부재관리
      • 인터넷서비스안내및관리
      • 회의실관리
      • 회의실예약관리
      • Wiki기능
      • RSS태그관리
      • Twitter연동
      • 쪽지관리
      • 받은쪽지함관리
      • 보낸쪽지함관리
      • 직원경조사관리
      • 휴가관리
      • 당직관리
      • 포상관리
      • 기념일관리
      • 행사신청관리
      • 행사접수관리
      • 약도관리
      • 개인연차관리
      • Facebook 연동
      • 공통분류코드
      • 공통상세코드
      • 공통코드
      • 우편번호관리
      • 행정코드관리
      • 기관코드수신
      • 기관코드
      • 법정동코드
      • 도로명주소연계
      • 로그관리
      • 사용로그관리
      • 송/수신 로그관리
      • 시스템 이력관리
      • 웹로그관리
      • 접속로그관리
      • 개인정보조회로그관리
      • 메뉴관리
      • 메뉴생성관리
      • 바로가기메뉴관리
      • 프로그램관리
      • 배치작업관리
      • 배치결과관리
      • 스케줄처리
      • 백업관리
      • 네트워크관리
      • 서버정보관리
      • 장애신청관리
      • 장애처리결과관리
    • 시스템연계관리
    • 연계현황관리
    • 연계메시지관리
    • 연계기관관리
    • 개인지식관리
      • 지식맵관리(조직)
      • 지식맵관리(유형)
      • 지식정보제공
    • 지식전문가관리
    • 지식정보관리
    • 지식평가관리
      • 이중등록(Double Submit) 방지
      • Http Request 정보 취득
      • 숫자 지역화 처리
      • 날짜 지역화 처리
      • showModalDialog 대체 기능
      • HTTPS UrlRewrite filter
      • 중복 로그인 방지 기능
      • 출퇴근 관리
      • Resource close 처리
      • Basic 로그
      • EasyBatch(v3.2 신규)
      • Social Login(Naver, Google, KAKAO)
      • LDAP조직도관리(v3.2 신규)
      • 웹소켓메신저(v3.2 신규)
      • 경고메시지
      • 에러메시지
      • 정보메시지
      • 확인메시지
      • 화면인쇄
      • 프린터상태확인
      • 전자관인출력
      • 세션처리
      • 쿠키처리
      • 공휴일관리(달력)
      • 메인메뉴
      • 트리메뉴
      • 웹에디터(공통컴포넌트 2.0 매뉴얼 참조)
      • WYSIWYG Editor(v3.2 신규)
      • 날짜/시간/요일 계산
      • 날짜/시간/요일 변환
      • 날짜/시간/요일 유효성체크
      • 날짜/시간/요일 포맷변경
      • 랜덤날짜구하기
      • 랜덤문자열구하기
      • 랜덤숫자구하기
      • 문자열검색
      • 문자열변환
      • 문자열유효성체크
      • 문자열치환
      • 번호유효성체크
      • 단위계산
      • 숫자검색
      • 숫자변환
      • 숫자유효성체크
      • 숫자치환
      • 포멧유효성체크
      • 실수/정수/음수체크
      • 양력/음력변환
      • 인코딩/디코딩
      • 특수문자열처리
      • 환율계산
      • TIMESTAMP값구하기
      • 네트워크상태체크
      • 네트워크정보확인
      • 디렉토리감시
      • 디렉토리권한체크
      • 디렉토리복사
      • 디렉토리삭제
      • 디렉토리생성
      • 디렉토리속성정보체크
      • 디렉토리 압축/해제
      • 디렉토리이동
      • 송수신모니터링
      • DB서비스모니터링
      • 로그패턴검사
      • 디렉토리일자체크
      • 디렉토리존재체크
      • 디스크속성정보체크
      • 디스크유효용량체크
      • 디스크존재체크
      • 서버정보확인
      • 시스템정보확인
      • 유효메모리체크
      • 클라이언트정보확인
      • 파일권한체크
      • 프로세스모니터링
      • 네트워크서비스모니터링
      • 파일시스템모니터링
      • 파일다운로드
      • 파일변환
      • 파일보안
      • 파일복사
      • 파일비교
      • 파일삭제
      • 파일생성
      • 파일속성정보체크
      • 파일송/수신
      • 파일압축/해제
      • 프록시서비스
      • 파일동기화
      • 로그인세션정보체크
      • 파일업로드
      • 파일이동
      • 파일일자체크
      • 파일존재체크
      • 파일파싱
      • 프로세스ID확인
      • 프로퍼티
      • XML 데이터조립
      • XML 데이터파싱
      • 서버자원모니터링
      • 웹표준검사
      • HTTP서비스모니터링
  1. Home
  2. 공통컴포넌트
  3. 요소기술
  4. 외부 추가 컴포넌트
  • 페이지 보기
  • 페이지 편집
  • 문서에 이슈 생성
  • 프로젝트에 이슈 생성

이 페이지의 구성

Social Login(Naver, Google, KAKAO)

  • 개요
  • 특징
  • 설정방법
  • 사용방법
  • 참고자료

개요

Social Login은 네이버, 구글, 카카오의 로그인API를 이용해 로그인을 진행하는 연계로그인 기능을 제공합니다.

특징

Social Login 연동은 다음과 같은 특징을 제공합니다.

  • 네이버(Naver), 구글(Google), 카카오(KaKao) 계정으로 로그인
관련소스
유형대상소스설명비고
Controlleregovframework.com.ext.oauth.web.EgovSignupController.java소셜 로그인을 처리하는 컨트롤러 클래스
Serviceegovframework.com.ext.oauth.service.NAVERAPI20.java네이버 로그인을 돕는 서비스
Serviceegovframework.com.ext.oauth.service.OAuthConfig.java소셜 로그인 인증과 토큰 관련 URL이 있는 서비스
Serviceegovframework.com.ext.oauth.service.OAuthLogin.java소셜 로그인 인증 및 로그인 정보를 처리하는 서비스
VOegovframework.com.ext.oauth.service.OAuthUniversalUser.java소셜 로그인 계정에 대한 VO
VOegovframework.com.ext.oauth.service.OAuthVO.java소셜 로그인 인증을 받기 위한 VO
JSPWEB_INF/jsp/egovframework/com/uat/uia/EgovLoginUsr.jsp소셜 로그인을 연동하는 페이지
JSPWEB_INF/jsp/egovframework/com/uat/uia/EgovLoginUsrOauth.jsp소셜 로그인을 처리하는 페이지
JSPWEB_INF/jsp/egovframework/com/uat/uia/EgovLoginUsrOauthResult.jsp소셜 로그인 결과를 출력하는 페이지
XMLresources/egovframework/spring/com/context-oauth.xml소셜 로그인의 ID, Secret 등 인증값을 설정하는 XML

설정방법

소셜 로그인 API 생성 방법

각 소셜에서 로그인API를 등록해 ClientID / ClientSecret 를 발급받고 RedirectURl을 지정해야합니다.

<로그인 API 등록 URL>

  • 구글(Google) : https://console.cloud.google.com/apis/dashboard?hl=ko
  • 네이버(Naver) : https://developers.naver.com/products/login/api/api
  • 카카오(Kakao) : https://developers.kakao.com/docs/latest/ko/kakaologin/common

소셜 Oauth 인증값 설정(context-oauth.xml)

각 소셜페이지에서 로그인API를 생성하고 받은 ClientID와 ClientSecret을 xml에 설정해야합니다.

  • 구글 로그인 인증 설정
<bean id="googleAuthVO" class="egovframework.com.ext.oauth.service.OAuthVO">
	<constructor-arg value="google" /> <!-- Service Name -->
	<constructor-arg value="googleClientID" /> <!-- googleClientID -->
	<constructor-arg value="googleClientSecret" /> <!-- googleClientSecret -->
	<constructor-arg value="http://localhost:8080/auth/google/callback" /> <!-- googleRedirectUrl -->
	<constructor-arg value="profile email" /> <!-- GoogleScope -->
</bean>
  • 네이버 로그인 인증 설정
<bean id="naverAuthVO" class="egovframework.com.ext.oauth.service.OAuthVO">
	<constructor-arg value="naver" /> <!-- Service Name -->
	<constructor-arg value="naverClientID" /> <!-- naverClientID -->
	<constructor-arg value="naverClientSecret" /> <!-- naverClientSecret -->
	<constructor-arg value="http://127.0.0.1:8080/auth/naver/callback" /> <!-- naverRedirectUrl -->
	<constructor-arg value="profile" /> <!-- naverScope -->
</bean>
  • 카카오 로그인 인증 설정
<bean id="kakaoAuthVO" class="egovframework.com.ext.oauth.service.OAuthVO">
	<constructor-arg value="kakao" /> <!-- Service Name -->
	<constructor-arg value="kakaoClientID" /> <!-- kakaoClientID -->
	<constructor-arg value="kakaoClientSecret" /> <!-- kakaoClientSecret -->
	<constructor-arg value="http://localhost:8080/auth/kakao/callback" /> <!-- kakaoRedirectUrl -->
	<constructor-arg value="profile_nickname account_email" /> <!-- kakaoScope -->
</bean>

사용자 인증 처리

비즈니스 규칙

소셜 로그인 버튼이 있는 로그인 화면으로 이동한다.

관련코드

@RequestMapping(value = "/uat/uia/oauthLoginUsr", method = RequestMethod.GET)
public String login(Model model) throws Exception {
	LOGGER.debug("===>>> OAuth Login .....");
 
	OAuthLogin naverLogin = new OAuthLogin(naverAuthVO);
	LOGGER.debug("naverLogin.getOAuthURL() = "+naverLogin.getOAuthURL());
	model.addAttribute("naver_url", naverLogin.getOAuthURL());
 
	OAuthLogin googleLogin = new OAuthLogin(googleAuthVO);
	LOGGER.debug("googleLogin.getOAuthURL() = "+googleLogin.getOAuthURL());
	model.addAttribute("google_url", googleLogin.getOAuthURL());
 
	OAuthLogin kakaoLogin = new OAuthLogin(kakaoAuthVO);
	LOGGER.debug("kakaoLogin.getOAuthURL() = "+kakaoLogin.getOAuthURL());
	model.addAttribute("kakao_url", kakaoLogin.getOAuthURL());
 
	return "egovframework/com/uat/uia/EgovLoginUsrOauth";
}

인증 완료 후 응답 처리

비즈니스 규칙

로그인API 인증 완료 후 응답받는 callback 메소드로 인증된 사용자 정보를 처리한다.

관련코드

@RequestMapping(value = "/auth/{oauthService}/callback", method = { RequestMethod.GET, RequestMethod.POST })
public String oauthLoginCallback(@PathVariable String oauthService, Model model, @RequestParam String code) throws Exception {
 
	LOGGER.debug("oauthLoginCallback: service={}", oauthService);
	LOGGER.debug("===>>> code = "+ code);
 
	OAuthVO oauthVO = null;
	if (StringUtils.equals(OAuthConfig.GOOGLE_SERVICE_NAME, oauthService))
		oauthVO = googleAuthVO;
	else if (StringUtils.equals(OAuthConfig.NAVER_SERVICE_NAME, oauthService))
		oauthVO = naverAuthVO;
	else
		oauthVO = kakaoAuthVO;
 
	// 1. code를 이용해서 Access Token 받기
	// 2. Access Token을 이용해서 사용자 제공정보 가져오기
	OAuthLogin oauthLogin = new OAuthLogin(oauthVO);
 
	OAuthUniversalUser oauthUser = oauthLogin.getUserProfile(code); // 1,2번 동시
	LOGGER.debug("Profile ===>>" + oauthUser);
 
	// ========================================================================
	// 다음 부분은 업무의 목적에 맞게 커스텀 코드를 작성한다.
	// 3. 해당 유저가 DB에 존재하는지 체크 (google, naver, kakao에서 전달받은 ID가 존재하는지 체크)
    // String resultDBInfo = ""; // DB 체크 결과
 
	if (oauthUser == null) {
		model.addAttribute("message", "This user does not exist. Please sign up.");
	} else {
		model.addAttribute("message", "OAuth Sign-in succeeded.");
	}
 
	return "egovframework/com/uat/uia/EgovLoginUsrOauthResult";
}

소셜 로그인 버튼 구현(EgovLoginUsrOauth.jsp)

<a href="${ naver_url }"><img width="300" src="<c:url value='/images/egovframework/com/uat/uia/naver-login.png'/>" alt="Naver Login" /></a>
<a href="${ google_url }"><img width="300" src="<c:url value='/images/egovframework/com/uat/uia/google-login.png'/>" alt="Google Login" /></a>
<a href="${ kakao_url }"><img width="300" src="<c:url value='/images/egovframework/com/uat/uia/kakao-login.png'/>" alt="Kakao Login" /></a>

사용방법

  • {contextPath}/uat/uia/oauthLoginUsr 로 이동하여 소셜로그인을 진행합니다.

image

사용예시

  • 소셜 로그인을 진행할 계정으로 로그인합니다.

image

  • 선택된 계정으로 계정 인증을 시도합니다

image

  • 소셜 로그인이 성공한 경우 결과창

image

※ 소셜 로그인 인증 성공 시 Console에 로그인 정보가 출력됩니다. (소셜별 상이)

{
  "name": "전자정부 표준프레임워크 센터",
  "given_name": "전자정부 표준프레임워크 센터",
  "picture": "https://lh3.googleusercontent.com/a/ACg8ocJtuOXmgP2tukDz_UrlNT1lND9m_Npfiuea3EqfrUroumV-SrBBu003ds96-c",
  "email": "egovframesupport@gmail.com",
  "email_verified": true,
  "locale": "ko"
}

참고자료

Spring Social

  • 대표전화  1566-3598 (070-4448-2678)
  • 대표문의메일  egovframesupport@gmail.com
전자정부 표준프레임워크 Git
이용 안내 라이센스

COPYRIGHT (C) 2024 eGovFramework. ALL RIGHTS RESERVED.