Oracle/E-Business Suite

Oracle ERP 웹 접속시 동일 계정으로 여러 PC 에서 로그인되는 것을 방지하고 싶다면?

닥터 후 2010. 8. 4. 12:42


Oracle E-Business Suite (이하 Oracle ERP) 는 기본적으로 각기 다른 PC 에서 동일 계정으로 다중 접속(open multiple sessions)이 허용됩니다.  예를 들어 2대의 PC 에서 각각 sysadmin 으로 접속시 아무런 제약이 없이 로그인 뿐만 아니라 각 메뉴 및 권한 수행에 문제가 발생되지 않습니다. Oracle ERP 는 IP 를 검증하는 방식이 아니라


고객사에서 어느날 갑자기 이런 요청을 해온다면??

" How Can I Restrict Applications Users To Be Signed In Only Once At Any Time? "

'계정 암호를 당사자만 알면 문제 없지 않는가?' 라고 반문할 수 있겠지만 고객은 왕! , 결국 운영자는 그 요구조건을 충족시켜줘야 할 의무가 있다. 고객은 이런 현상도 security threat 같은 걸로 인식할 수 있기 때문이다.


HTTP 는 stateless protocol 이기 때문에, 만약 shapping 이라는 유저가 또 다른 PC 에서 로그인을 하였다고 해도 인지할 수 있는 방법이 없다. Oracle Applications 는 Session Management 는 higher layer (AOL/J and ICX)에서 수행된다. 그래서 HTTP server 다른 접속 세션에 대해 막을 수 없다.

그 대안으로 Workflow Suite 의 일부분인 Business Event System 를 활용할 수 있다. ICX 는 oracle.apps.icx.security.session.created 라는 새로운 event 를 생성하였다. (DB Trigger 라고 생각하면 쉽다.)

shapping 이라는 유저가 A-PC 에 접속한 상태에서 B-PC 를 통해 shapping 유저가 새로 접속할 때 기존 A-PC 로 접속해있던 사용자는 아래와 같에 에러 메세지를 받을 것이다.

"Your session is no longer valid or your logon information could not be reestablished from your session."


즉 이전에 접속한 세션은 Business Event: oracle.apps.icx.security.session.created 에 의해 즉시 invalidated 되어 fired 될 것이다.

기본적으로 $ICX_TOP/patch/115/xml/US/icxevts.wfx or $ICX_TOP/patch/115/xml/KO/icxevts.wfx 에서 확인해보면 <PARAMETERS>excludedUsers=SYSADMIN,GUEST,ANONYMOUS</PARAMETERS> 로 설정이 되어있다. 이 파라미터에 다중 접속 제한을 원하지 않는 계정만 추가한 후 EVENT loading, EVENT SUBSCRIPTION loading 작업을 수행한다. 그러면 위 List 외에 계정들은 다중 접속이 되지 않는다.

$ java oracle.apps.fnd.wf.WFXLoad -u apps apps erp:1531:TEST thin US $ICX_TOP/patch/115/xml/US/icxevte.wfx
$ java oracle.apps.fnd.wf.WFXLoad -u apps apps erp:1531:TEST thin KO $ICX_TOP/patch/115/xml/KO/icxevte.wfx

$ java oracle.apps.fnd.wf.WFXLoad -u apps apps erp:1531:TEST thin US $ICX_TOP/patch/115/xml/US/icxevts.wfx
$ java oracle.apps.fnd.wf.WFXLoad -u apps apps erp:1531:TEST thin KO $ICX_TOP/patch/115/xml/KO/icxevts.wfx


다중 접속 설정을 해제하여 원래 상태로 복구하는 방법은 아래와 같다.

Workflow Administrator Web Applications 권한으로 해당 event 를 disable 할 수 있습니다.

1. Log in to the application as SYSADMIN
2. Responsibility: Workflow Administrator Web Applications
3. Function: Administrator Workflow --> Business Events
4. Search for the Business event named oracle.apps.icx.security.session.created
5. Click on the icon from update column
6. Set the status of the event to Disable




이젠 #샤P핑이 대세!!

  쇼팽도 놀랐다!

#샤P핑 하러 가자~~~~

 심심할 땐 #샤P핑의 세계로 - GoGo~

http://www.shapping.co.kr