포탈 메인 > 로그인/세션 테스트 페이지 (포탈 only)

포탈(관리자 아님)의 ASIS 로그인은 SNS간편로그인, 공인인증서 로그인 등으로 이루어져 있는데, 실제 로그인 하는 시스템은 노후포탈(csa.nps)이 아니라 홈페이지(www.nps) 입니다. (www.nps의 페이지를 iframe에 포함)
그러나 개발단계에서 홈페이지 간편로그인 연계를 통한 로그인을 하기 어려운 상황이기 때문에, 간편로그인 등의 결과물로 우리 시스템(포탈)이 개인정보(이름, 주민번호 등...)를 받은 상황을 가정하여
로그인 테스트를 해 볼 수 있는 페이지를 작성했습니다.

간편로그인 결과물을 받은 시점에 우리 시스템에서는 인증사용자기본 테이블(HKA_CERT_USER_B)의 INSERT/UPDATE가 이루어지며 (주민번호를 유일키로 하여 없으면 INSERT, 있으면 UPDATE)
로그인 관련 세션 데이터를 생성하게 됩니다.

ASIS 에서는 다수의 테이블에 주민번호가 사용되었는데 이것이 보안상 좋지 않다고 판단하여, 주민번호의 DB 기록을 최소화 하고 각 국민이 하나의 고유키를 갖도록 하기 위해,
TOBE 에서는 인증사용자기본 테이블(HKA_CERT_USER_B)이 도입되었습니다.
이 테이블의 목적은 '주민번호는 여기 한 곳에만 기록하고, ASIS 에서 주민번호를 키로 사용하던 모든 업무는 인증사용자아이디(CERT_USER_ID)를 사용하자' 입니다.
그렇기 때문에 TOBE 에서는 기존에 주민번호를 키로 사용하던 거의 모든 업무에서 주민번호를 인증사용자아이디로 대체하는 수정작업을 해야 합니다.
ASIS 소스 / TOBE 설계서에서 추출한 세션 관련 항목들
위의 다양한 ASIS 주민번호 관련 필드들은 TOBE에서는 쿼리 파라미터로 넘기지 않습니다.
인증사용자아이디(HKA_CERT_USER_B.CERT_USER_ID) 기반으로 프로그램을 모두 수정해야 합니다.
위 항목들은 포탈 프로젝트(RPCSP)에만 해당합니다. 관리자 프로젝트와 무관하니 주의해 주세요.
위 항목들은 ASIS 소스를 기반으로 분석한 것입니다. 틀린 부분이 있을수도 있습니다.
세션 값 사용 예시 (java)
// 현재 로그인 여부 획득
boolean loggedIn = SessionUtil.isLoggedIn(session);

// 특정 세션 키로 세션 값 문자열 획득
String userNm = SessionUtil.getString(session, SesKey.USER_NM);


// 현재 세션의 모든 정보를 Map으로 변환
Map<String, Object> sessionMap = SessionUtil.getSessionMap(session);

// Map 내의 특정 요소들을 session에 주입 (inParams도 Map이기 때문에 이런 식으로 사용 가능)
SessionUtil.mapToSession(inParams, session, new String[]{ "AAA", "BBB" }); // inParams에 AAA, BBB 라는 키를 가진 요소가 있다는 가정.

// Map의 모든 요소들을 session에 주입
SessionUtil.mapAllToSession(inParams, session);

// session 내의 특정 요소들을 Map에 주입
SessionUtil.sessionToMap(session, inParams, new String[]{ SesKey.CERT_USER_ID, SesKey.USER_NM });

// session 내의 모든 요소들을 Map에 주입
SessionUtil.sessionAllToMap(session, inParams);
세션 값 사용 예시 (jsp)
// 현재 로그인 여부 획득 (이렇게 하지 말 것)
<c:if test="${sessionScope.LOGGED_IN}">
  <div>로그인 되었을 경우</div>
</c:if>

// 위는 굉장히 자연스러운 코딩이지만, 제멋대로인 JEUS(개발서버 WAS)는, TOMCAT에서 아무 문제 없는 위의 코드에서 NullPointerException을 throw 합니다.
// 그러므로 아래와 같이 코딩해 주어야 합니다.
<c:if test="${not empty sessionScope.LOGGED_IN && sessionScope.LOGGED_IN}">
  <div>로그인 되었을 경우</div>
</c:if>

// 로그인 조건문을 위한 커스텀 태그도 하나 작성했으니, 필요하면 사용하십시오.
<csa:ifLogin condition="true">
  <div>로그인 되었을 경우</div>
</csa:ifLogin>
<csa:ifLogin condition="false">
  <div>로그인 되지 않았을 경우</div>
</csa:ifLogin>
.