본문으로 건너뛰기
버전: 3.4.4

개요

MCI는 인터페이스 처리 시 정상적인 사용자 요청만 처리하도록 세션을 관리한다. 인터페이스의 요청이 정상적으로 로그인한 사용자의 요청인지 확인하고, 로그인 상태가 아닐 경우 해당 인터페이스를 에러로 처리한다. 세션 정보는 상태모니터링 > 단말상태정보 화면을 통해 사용자ID, 단말번호 및 로그인 시간과 같은 정보를 확인할 수 있다.

세션 정보

세션에 저정하는 정보는 아래와 같다.

  • 세션 ID : 세션정보를 식별하는 ID

  • 사원번호 : 로그인 사용자의 ID

  • 단말번호 : 로그인한 단말의 단말번호

  • 부서번호 : 로그인 사용자의 부서ID. 부서ID는 BID 거래에서 사용된다.

  • 단말 Mac Address : 로그인한 단말의 Mac Address

  • 책임자 단말 여부 : 단말이 책임자가 로그인한 단말인지에 대한 여부

  • BID 메시지 전송 단말 여부 : BID 메시지를 받을 수 있는 단말인지에 대한 여부

  • 세션 상태 : 세션 상태 정보로 A : Active 상태, E : Expired 상태를 의미

  • 최초 거래 시간 : 최초 거래 시작 시간을 의미하는 것으로 보통 로그인 시간

  • 최종 거래 시간 : 최종 거래 시간를 의미

  • 세션 타임아웃 시간 : 세션 타임아웃 시간을 의미

세션 관리

세션 생성

세션은 로그인 거래 마다 사용자별로 생성되며, 한번 생성된 세션은 타임아웃이 만료되지 않는 한 계속해서 사용할 수 있다. 타임아웃은 IDLE 방식으로 거래가 발생하면 타임아웃 시간이 연장된다. 로그인 인터페이스의 응답전문 수신 후 응답전문이 정상이면, SystemUserLoginRouter에서 세션 정보를 생성한다.

세션을 생성하는 로그인 거래의 처리 흐름은 다음과 같다.

코어 시스템으로부터 로그인 응답 전문을 받은 후 응답 전문이 정상이면 세션 정보를 생성하여 IMDG에 저장한다. 또한 단말 상태 모니터링을 위해 데이터베이스에도 저장된다. 단말의 모니터링은 상태모니터링 > 단말상태정보 화면에서 확인할 수 있다. 로그인 후 단말에서는 모든 거래에 세션 ID를 전문에 포함하여 전송해야 한다. 이는 MCI가 일반 거래의 경우 사용자가 로그인을 했는지 세션 ID로 검증하여 에러 처리하기 때문이다.

노트

세션 ID를 HTTP 헤더에 저장할지 전문에 저장할지는 협의를 통해 결정한다.

세션 검증

로그인 후 단말에서 요청하는 전문의 세션 ID를 이용하여 해당 사용자의 로그인 여부와 세션 만료 여부를 검증한다. 세션을 검증하는 라우터는 systemLoginValidationRouter이며 요청 플로우에 추가하여 세션을 검증한다.

위험

세션을 검증하기 위해서는 세션을 검증하는 라우터를 플로우에 추가해야한다. 세션 검증 라우터가 없을 경우 세션 검증 없이 거래를 처리하므로 사고의 발생 가능성이 있어 세션 검증이 필요한 거래에는 반드시 세션 검증 라우터를 등록해야 한다.

위 그림에서 인터페이스 정보의 '요청 플로우 ID'는 TERM-REQ-NOMAP-001이다. 플로우 TERM-REQ-NOMAP-001에 등록된 라우터의 처리 순서를 보면 systemLoginValidationRouter 라우터가 추가되어 있다. 그러므로 인터페이스 CI-001-0101-011 거래는 로그인이 선행되어야 가능한 거래이다. 만약 세션을 검증하지 않는 인터넷 뱅킹이나 ARS 거래라면 세션 검증 라우터를 추가하지 않는 별도의 플로우를 등록해서 사용한다.

세션 해제

로그인 거래에서 생성된 세션 정보는 로그아웃 거래 또는 타임아웃에 의해 해제될 수 있다.

☑ 로그아웃

로그아웃 인터페이스의 응답전문 수신 후 응답전문이 정상이면, SystemUserLogoutRouter에서 세션 정보를 해제한다.

세션을 해제하는 로그아웃 거래의 처리 흐름은 다음과 같다.

☑ 타임아웃

세션 타임아웃은 IDLE 방식으로 거래가 발생하면 세션 타임아웃 시간이 연장된다. 마지막 거래 이후 세션 타임아웃 시간까지 거래가 없으면 세션 타임아웃이 발생한다.

세션이 해제된 후 세션 검증을 필요로 하는 모든 거래에 대해 에러 처리한다. 단말의 모니터링은 상태모니터링 > 단말상태정보 화면에서 확인할 수 있다.