SSO Guide 4 Dev.
  • MOIN SSO 소개
  • SSO 기술의 이해
  • SSO의 동작과 이해
    • 로그온
    • 로그오프
    • 로그온 실패
    • 중복 로그온
    • 2-Factor 인증
    • SSO 세션 탈취 검사
  • 개발 시작하기
    • 업무시스템 정보 전달
    • 라이브러리 다운로드
    • 라이브러리 적용
    • Agent 환경 설정 파일 수정
    • 인증확인과 인증상태에 따른 처리 방법
    • 통합 인증 페이지 이용하기
    • 로그온 UI 개발
    • SSO 로그오프 방법 제공
  • 개발하기
    • .NET
      • SSO 로그온 UI 구성하기
      • 업무 시스템 로그온 로직 구현하기
      • SSO 로그온 에러 처리 로직 구현하기
      • SSO 세션 탈취 검사하기
      • SSO 로그오프 방법 제공하기
      • 업무 시스템 로그오프 로직 구현하기
      • SSO 중복 로그온 선택 UI 구성하기
    • .NET MVC
      • SSO 로그온 UI 구성하기
      • 업무 시스템 로그온 로직 구현하기
      • SSO 로그온 에러 처리 로직 구현하기
      • 세션 탈취 검사하기
      • 로그오프 방법 제공하기
      • 업무 시스템 로그오프 로직 구현하기
      • SSO 중복 로그온 선택 UI 구성하기
    • JAVA
      • SSO 로그온 UI 구성하기
      • 업무 시스템 로그온 로직 구현하기
      • SSO 로그온 에러 처리 로직 구현하기
      • 세션 탈취 검사하기
      • SSO 로그오프 방법 제공하기
      • 업무 시스템 로그오프 로직 구현하기
      • SSO 중복 로그온 선택 UI 구성하기
    • SPA(Single Page Application)
      • Agent Library 명세
      • Agent 환경 구성하기
      • SSO 로그온 UI 구성하기
      • 업무 시스템 로그온 로직 구현하기
      • SSO 로그온 에러 처리 로직 구현
      • SSO 세션 탈취 검사하기
      • SSO 로그오프 방법 제공하기
      • 업무 시스템 로그오프 로직 구현하기
      • SSO 중복 로그온 선택 UI 구성하기
  • 주요 클래스
    • AuthCheck(.NET)
    • AuthCheck(.NET MVC)
    • AuthCheck(Java)
    • AuthStatus
  • 개발 테스트
  • SSO 오류코드
  • 갱신 이력
  • Trouble Shooting
  • Known Issues
  • Help Center
Powered by GitBook
On this page
  • 인증객체(AuthCheck) 선언 및 인증 상태 확인
  • 인증상태(AuthStatus) 에 따른 처리
  • SSO 서버 최초 접근시
  • SSO 서버 인증 성공
  • SSO 인증 오류 상태시
  • SSO 서버 이용 불가시
  • SSO 접근 제한 상태시

Was this helpful?

  1. 개발 시작하기

인증확인과 인증상태에 따른 처리 방법

PreviousAgent 환경 설정 파일 수정Next통합 인증 페이지 이용하기

Last updated 5 years ago

Was this helpful?

아래 예제 코드는 배포된 라이브러리 내 샘플페이지(e.g. default.aspx)에 포함된 코드입니다.

선언 및 인증 상태 확인

아래와 같이 checkLogon을 호출하면 SSO 인증 상태를 확인할 수 있습니다.

//인증객체 생성
AuthCheck auth = new AuthCheck(request, response);
//인증확인
AuthStatus status = auth.checkLogon();

에 따른 처리

SSO 서버 최초 접근시

SSOFirstAccess는 SSO 중앙 인증은 처리 됐지만, 해당 업무시스템의 SSO 인증은 아직 되지 않은 상태를 의미합니다.

trySSO()를 호출해서 해당 업무시스템의 인증을 시도합니다.

//인증상태 별 처리
if(status == AuthStatus.SSOFirstAccess) {
	//SSO에 최초 접속
	auth.trySSO();
}

SSO 서버 인증 성공

해당 업무시스템이 SSO 인증을 완료한 상태를 의미합니다. 이 구간에서 업무시스템 자체 세션 체크 후 인증되지 않았으면 자체 인증 처리를 하거나 업무 메인 페이지로 이동 시키는 등의 처리를 합니다.

(옵션) SSO 인증 토큰이 탈취된 토큰인지 체크하는 로직을 호출 할 수 있습니다. 몇가지 주의 사항이 있으므로 반드시 확인 후 적용하시기 바랍니다.

if(status == AuthStatus.SSOSuccess) {
	//SSO 인증 있음
	logonId = auth.getUserID();
	
	// 사용자 속성 중 특정 사용자 속성 값 조회(사용자 이름, 조직 코드 등. 필요 없다면 제거)
	if (auth.getUserInfoCollection() != null && auth.getUserInfoCollection().size() > 0) {
        for (Enumeration<String> e = auth.getUserInfoCollection().keys(); e.hasMoreElements(); ) {
            if (!Utility.isNullOrEmpty(userAttributes))
                userAttributes += "<br />";
                String key = e.nextElement();
                userAttributes += key + ":" + auth.getUserInfoCollection().get(key);
            }
        }
    }
    
    String somethingUserAttribute = auth.getUserInfo("AttributeName");

    // 사용자 세션 탈취 여부 조사
    // 세션 탈취를 감지하는 Javascript를 호출하는 코드가 자동 생성됨.
    // 필요한 페이지에서만 호출.
    // 특히 JSON Data가 깨지게되니, Ajax의 결과 페이지에서는 사용하지 말것.
    auth.checkHijacking();
}

인증객체를 통해 SSO 서버에서 내려주는 사용자 속성을 이용하여 업무시스템 사용자와 매핑합니다. 사용자 속성 정보는 SSO 담당자와 업무시스템 담당자간 사전 협의가 필요합니다.

SSO 인증 오류 상태시

SSO 인증 과정에서는 인증 오류가 발생할 수 있습니다. 오류 발생 시 오류 정보는 agentconfig.xml 파일에 지정한 에러 처리 URL로 전달 됩니다. 개발자는 해당 페이지에서 에러 정보를 가공하여 사용자에게 보여 주어야 합니다. 에러 정보가 처리되는 과정에서 페이지 이동은 필수적으로 발생합니다. 업무 시스템에 따라 디자인 적용이 필요하다면 업무 시스템 개발자가 작업을 해야 합니다.

Tip) 만일 로그온 페이지를 이동하지 않고 로그온 처리를 하고 싶다면, iframe을 이용하는 방법이 있을 수 있습니다. 실제로 페이지 이동은 iframe에서 처리하도록 페이지를 구성하는 것입니다. iframe의 결과가 인증을 모두 성공했다면 부모창을 이동 시키고 인증이 실패한 경우 오류 정보를 부모창에 스크립트로 전달하여 오류 정보만을 갱신하도록 하는 방법도 있을 수 있습니다.

if(status == AuthStatus.SSOFail) {
	//SSO 인증 없음
	//에러코드를 조회하여 해당 상황에 맞게 처리
}

SSO 서버 이용 불가시

SSO 서버가 일시적으로 사용할 수 없는 상태를 의미합니다. 이 경우 업무 시스템이 자체적으로 제공하는 로그인 페이지 이동시켜 사용자가 시스템을 계속 이용할 수 있도록 처리하는 것을 권장합니다.

if(status == AuthStatus.SSOUnAvailable) {
	//SSO 서버 장애
	//정책에 따라 처리 (예: 자체 인증 프로세스)
}

SSO 접근 제한 상태시

SSO 정책 서버로부터 해당 업무 시스템의 접근이 제한된 상태입니다. 업무 담당자에게 메일 또는 유선으로 문의 하시기 바랍니다.

if(status == AuthStatus.SSOAccessDenied){
	//SSO 접근 거부
	//정책에 따라 처리 (예: 에러 메시지 처리)
}

챕터에서 개발언어 별로 "SSO 로그온 에러 처리 구성하기" 부분에서 상세하게 볼 수 있습니다.

인증객체(AuthCheck)
인증상태(AuthStatus)
개발하기