• 개발환경
  • 실행환경
  • 실행환경 예제
  • 공통컴포넌트
개발환경 실행환경 실행환경 예제 공통컴포넌트
  • 공통컴포넌트 개요
  • 사용자디렉토리/통합인증
  • 보안
  • 통계/리포팅
  • 협업
  • 사용자지원
  • 시스템관리
  • 시스템/서비스연계
  • 디지털 자산관리
  • 요소기술
공통컴포넌트 개요
  • 공통컴포넌트 시작하기
  • 공통컴포넌트 환경설정
  • 공통컴포넌트 배포 파일의 구성
  • 공통컴포넌트 테이블 구성 정보
  • 패키지 간 참조 관계
사용자디렉토리/통합인증
    일반 로그인
    • SSO 연계서비스
  • 인증서로그인
  • 로그인정책관리
  • 디지털원패스
보안
    권한관리
    • 권한관리 기능
    • 권한별 롤관리
  • 권한그룹관리
  • 그룹관리
  • 롤관리
  • 부서권한관리
  • 암호화 복호화
  • 로그인 시간관리
  • 비밀번호 만료기간 관리
통계/리포팅
  • 게시물 통계
  • 사용자 통계
협업
  • 게시판
  • 커뮤니티
  • 문자메세지
  • 일정관리
  • 전자결재
  • 주소록/명함록
사용자지원
    사용자관리
    • 기업 회원 관리
    • 사용자 관리
    • 회원 관리
  • 개인화
  • 약관관리
  • 온라인헬프
  • 온라인참여
  • 정보제공/알림
시스템관리
  • 공통코드관리
  • 로그관리
  • 배치관리
  • 메뉴관리
  • 프로그램관리
  • 시스템관리
  • 장애관리
시스템/서비스연계
    디지털 자산관리
    • 지식맵
    요소기술
      신규 컴포넌트(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 신규)
      메시지 처리
      • 경고메시지
      • 에러메시지
      • 정보메시지
      • 확인메시지
      인쇄/출력
      • 화면인쇄
      • 프린터상태확인
      • 전자관인출력
      쿠키/세션
      • 세션처리
      • 쿠키처리
    • 달력
    • 인터페이스/화면
    • 웹에디터
      • WYSIWYG Editor(v3.2 신규)
      • 웹에디터(공통컴포넌트 2.0 매뉴얼 참조)
    • 포맷/계산/변환
    • 시스템
    페이지보기 페이지편집 문서에 이슈 생성 프로젝트에 이슈 생성

    공통컴포넌트

      • 공통컴포넌트 시작하기
      • 공통컴포넌트 환경설정
      • 공통컴포넌트 배포 파일의 구성
      • 공통컴포넌트 테이블 구성 정보
      • 패키지 간 참조 관계
        • SSO 연계서비스
      • 인증서로그인
      • 로그인정책관리
      • 디지털원패스
        • 권한관리 기능
        • 권한별 롤관리
      • 권한그룹관리
      • 그룹관리
      • 롤관리
      • 부서권한관리
      • 암호화 복호화
      • 로그인 시간관리
      • 비밀번호 만료기간 관리
      • 게시물 통계
      • 사용자 통계
      • 게시판
      • 커뮤니티
      • 문자메세지
      • 일정관리
      • 전자결재
      • 주소록/명함록
        • 기업 회원 관리
        • 사용자 관리
        • 회원 관리
      • 개인화
      • 약관관리
      • 온라인헬프
      • 온라인참여
      • 정보제공/알림
      • 공통코드관리
      • 로그관리
      • 배치관리
      • 메뉴관리
      • 프로그램관리
      • 시스템관리
      • 장애관리
        • 지식맵
          • 이중등록(Double Submit) 방지
          • Http Request 정보 취득
          • 숫자 지역화 처리
          • 날짜 지역화 처리
          • showModalDialog 대체 기능
          • HTTPS UrlRewrite filter
          • 중복 로그인 방지 기능
          • 출퇴근 관리
          • Resource close 처리
          • Basic 로그
          • EasyBatch(v3.2 신규)
          • Social Login(Naver, Google, KAKAO)
          • LDAP조직도관리(v3.2 신규)
          • 웹소켓메신저(v3.2 신규)
          • 경고메시지
          • 에러메시지
          • 정보메시지
          • 확인메시지
          • 화면인쇄
          • 프린터상태확인
          • 전자관인출력
          • 세션처리
          • 쿠키처리
        • 달력
        • 인터페이스/화면
          • WYSIWYG Editor(v3.2 신규)
          • 웹에디터(공통컴포넌트 2.0 매뉴얼 참조)
        • 포맷/계산/변환
        • 시스템
      1. Home
      2. 공통컴포넌트
      3. 요소기술
      • 페이지 보기
      • 페이지 편집
      • 문서에 이슈 생성
      • 프로젝트에 이슈 생성

      이 페이지의 구성

      Social Login(Naver, Google, KAKAO)

      • 개요
      • 특징
      • 설정방법
        • 소셜 로그인 API 생성 방법
        • 소셜 Oauth 인증값 설정(context-oauth.xml)
        • 사용자 인증 처리
        • 인증 완료 후 응답 처리
        • 소셜 로그인 버튼 구현(EgovLoginUsrOauth.jsp)
      • 사용방법
      • 참고자료

      개요

      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.