Software/BI

Oracle Analytics Server 12c(OBIEE) Single Sige On(SSO) 처리방법

juhpark 2022. 3. 27. 17:42

별도 인증서버를 두지 않고, ID, PASSWORD만 받아서 SSO를 수행하는 방법이 필요했다. OBIEE 12c에서 지원하는 기능은 아니지만 나름 편리하게 사용할수 있는 방법인 것 같아서 공유를 하고자 합니다. 물론 이 방법을 적용하면서 문제가 발생한다면 본인 책임 임을 미리 알려드립니다.

[1] 인증처리를 위해 사용 가능한 웹Root선정
obiee 12c 서비스를 위해 기본적으로 설치되는 웹APP가 많은데 이 중에서 jsp를 올려서 컴파일이 가능한 녀석을 찾아야 했다. 일단, 웹APP에 접근해서 손쉽게 jsp파일을 올릴수 있어야 하고, 로긴 세션 체크가 되지 않는 웹APP가 있었으니 바로 로그인 창을 보여주는 /bi-security-login 이었다. 바로 root 폴더에서는 접근이 안되나 /bi-secirity-login/js 폴더에 test.jsp를 올려 놓으니 실행이 되었다.
그런데, 문제 발생, test.jsp를 변경해도 반영이 안되는 것이 아닌가…흑. 구박사와 네박사를 참조한 결과 웹로직 서버의 웹어플리케이션 설정을 변경해야 했다. 즉 jsp파일이 변경될 때마다 컴파일을 하고 실행하도록 셋팅을 하였다.

jsp페이지 확인(초)를 -1에서 0으로 변경했음

이후, test.jsp를 자유롭게 변경하여도 문제없이 잘 반영됨을 확인할 수 있었다.

 

[2] 로그인처리를 위한 login.jsp 구현

obiee 12c 의 로그인 관련 라이브러리를 확인해 본 결과 jsp에 관련 클래스만 호출하여도 로그인이 가능하다는 것을 알게 되었다. 또한 obiee 뿐 아니라 dv (DataVisualization) 쪽도 함께 로그인이 된다는 것을 알게 되었다.

아래는 login.jsp의 주요 로그인 처리 로직이다. username, password만 넣어주면 로그인처리가 손쉽게 완료된다. 다양한 방법으로 두 변수를 가져오면 간편한 SSO처리가 가능하다.

물론, 아래 소스에서 필요한 클래스들은 상단에서 import를 해줘야 한다.

<%
	// 전처리 
    
    String username = "";
    String password = "";
		
    try{           
    	BIHttpServletRequest httpRequest = new BIHttpServletRequest(request);
        BISecurityContext securityContext = null;
        securityContext = SecurityContextFactory.getWebServiceSecurityContext(request);
        Centaurus centaurus = CentaurusFactory.getLocalCentaurus(securityContext);
        BISubject subject = centaurus.authenticateUser(username, password.toCharArray(), language, loginUserProfileMust);
        SessionTokenFactory tokenFactory = new SessionTokenFactory();
        BISessionToken sessionToken = tokenFactory.createNewSessionToken(request, response, "", subject, securityContext);  
    }catch(BISecurityException ex){	
        // 예외처리
    }
    
    // 후처리
%>


끝.

'Software > BI' 카테고리의 다른 글

obiee 12c 차트 디자인 색깔 바꾸기  (0) 2022.04.08
OBIEE 12c NQ_SESSION 변수 저장 및 사용하기  (0) 2022.03.29