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

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

인증객체(AuthCheck) 선언 및 인증 상태 확인

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

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

인증상태(AuthStatus) 에 따른 처리

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로 전달 됩니다. 개발자는 해당 페이지에서 에러 정보를 가공하여 사용자에게 보여 주어야 합니다. 에러 정보가 처리되는 과정에서 페이지 이동은 필수적으로 발생합니다. 업무 시스템에 따라 디자인 적용이 필요하다면 업무 시스템 개발자가 작업을 해야 합니다.

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

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

SSO 서버 이용 불가시

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

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

SSO 접근 제한 상태시

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

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

Last updated

Was this helpful?