아래 예제 코드는 배포된 라이브러리 내 샘플페이지(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 로그온 에러 처리 구성하기" 부분에서 상세하게 볼 수 있습니다.