Page No.
작성자 : / 검수자 :
Launch Release No. 7.3.500.20250722 / Latest Release No.
※ 주의 : 외부 포탈 임베디드(Project)방식의 SSO연동을 적용하기 위해 '1-0.공통 설정' 과정을 선행으로 설정해야 함
− 개요
> 외부 포탈 사이트에서 AUD7 보고서를 임베디드 방식으로 연동하기 위한 샘플 프로젝트
> Spring Boot(백엔드)에서 AUD7 서버와 인증을 처리하고, React 또는 Vue(프론트엔드)가 보고서 뷰어 UI를 제공
> 단 , 일부 기능이 크로스 도메인 block으로 처리 불가할 수 있음
(top , parent 접근 불가하여 postMessage 형식 등으로 커스텀 개발이 AUD플랫폼 내 적용되어야 함)
− 제약 사항
> 기본적으로 AP 토큰이 쿠키에 공유되어 사용되기 때문에 외부 PORTAL (타 사이트 포탈) 과 AUD7 플랫폼 PORTAL의 Domain name이 동일해야 된다.
> 외부 POTAL에서는 발급된 AP 인증 토큰이 정상적으로 브라우저 Cookie에 bimatrix_ap_accessToken으로 설정되어 있는지 확인이 필요하다.
> SSH Key정보를 sitePortalAUD7EmSample.jsp에 설정

< 그림 1-1. 샘플 코드 인증 정보 설정 캡처 1 >
> loadPrivateKey 메서드 매개변수에 '인증 키 관리' 페이지에서 등록이 완료되면 발급되는 private_key.pem 파일의 위치를 설정

< 그림 1-2. 샘플 코드 인증 정보 설정 캡처 2 >
> 실제 사이트에서 인증 시켜야 할 계정 값을 설정
(※ 주의 : 아래 샘플 코드엔 matrix로 고정된 값으로 구현했지만, 실제 구현 시 userCode는 유동적으로 변경하여 인증 과정을 실행해야 함)

< 그림 1-3. 샘플 코드 인증 정보 설정 캡처 3 >
> AUD플랫폼 경로 설정 (Ex. "http(s)://[IP:PORT+Context Root]/api/auth/sign/ap/token")
(※ 주의 : 서버 통신 방식이기 때문에 IP:PORT를 통해 AUD플랫폼 Portal접속이 가능하면 설정하고, 도메인 URL통신만 가능하다면 해당 서버에서 도메인 통신 확인 후 진행)

< 그림 1-4. 샘플 코드 인증 정보 설정 캡처 4 >
> 쿠키에 발급한 AUD 인증 AP 토큰을 공유하기 위한 메인 도메인 설정.
(※ 참고 : 서브 도메인 허용, 컨테이너 허용, PORT 허용)

< 그림 1-5. 샘플 코드 인증 정보 설정 캡처 5 >
- AUD 인증 AP 토큰 발급 API는 AUD 플랫폼에 등록한 Application용 클라이언트 아이디와 클라이언트 시크릿를 인증 정보로 설정하여 Application 인증 JWT 토큰을 발급 합니다.
|

< 그림 1-6. 샘플 코드의 Config 참조 캡처 >
- bimatrix_server_url 설정 : AUD플랫폼의 IP:PORT + Context Root로 설정
- webRoot 설정 : 고객사 포탈 임베디드 소스가 위치한 경로를 설정
※ Admin 시스템 관리 > 시스템 옵션 > [시스템 실행 옵션]의 WEBROOT 값을 통해 확인 가능합니다.
- cookie_domain 설정 : 토큰을 공유하기 위한 도메인 설정
임베딩의 기본 전제 조건은 고객사 포털과 임베딩할 AUD7의 서브도메인은 달라도 메인 도메인이 같아야 합니다.
ex) 고객사 포탈 도메인: portal.client.com, AUD 제품 포탈 도메인: aud7.client.com
DATA.cookie_domain = .client.com;

< 그림 1-7. 샘플 코드 Config 설정 캡처 >
> openReport 함수를 사용하여 'REPORT_AUD'라는 iFrame에 i-AUD 보고서를 임베디드


< 그림 1-8. 샘플 코드 보고서 호출부 캡처 >
spring:
thymeleaf:
prefix: classpath:/templates/
check-template-location: true
suffix: .html
mode: HTML
cache: false # default true, 개발 시에는 false로 두는 것이 좋음
server:
port: 9995
#ssl:
# key-store: classpath:keystore.p12
# key-store-type: PKCS12
# key-store-password: 123456
# servlet:
# session:
# cookie:
# http-only: true
# secure: false
aud:
server-url: http://aud-local.bimatrix.com:8087/matrix
x-ap-update-addr: aud-local.bimatrix.com
x-aud-ap-id: matrix
x-aud-ap-secret-key: C558A12512744C80A3795354427B47C8
ssh-key-path: D:\\document\\업무\\15. claude 활용\\spring-embedded\\private_key.pem
|
<%@ page language="java" contentType="application/javascript; charset=UTF-8" pageEncoding="UTF-8"%>
var AUD_CONFIG_DATA = {};
try {
AUD_CONFIG_DATA.bimatrix_server_url = "http://[AUD플랫폼 Ip:Port]";
AUD_CONFIG_DATA.webRoot = "/matrix";
AUD_CONFIG_DATA.cookie_domain = ".bimatrix.com";
AUD_CONFIG_DATA.global_params = {} ;
var setGlobalParams = function(datas) {
if(typeof datas == "string"){
AUD_CONFIG_DATA.global_params = JSON.parse(datas);
}
}
/** 제공되는 버튼 id list
* btnEdit : 보고서 편집
* btnRefresh : 실행
* btnSaveAs : 다른 이름으로 저장
* btnExport : 내보내기
* btnPrint : 출력
* btnProperties : 속성 (i-Matrix 전용)
* btnScreenArrange : 화면 arrange (i-Matrix 전용)
**/
AUD_CONFIG_DATA.button_disable_ids = "btnEdit;btnSaveAs";
// i-AUD 제품 설정 정보
// i-Matrix 제품 설정 정보
AUD_CONFIG_DATA.imatrix_afterOpenRefresh = "false";
AUD_CONFIG_DATA.imatrix_mxserviceVersion = "106";
AUD_CONFIG_DATA.imatrix_used_bottom = "N";
AUD_CONFIG_DATA.imatrix_bottom_foot_margin = "1"; // foot 영역 margin
AUD_CONFIG_DATA.imatrix_bottom_top_margin = "40"; // top 영역 margin
} catch (e) {
AUD_CONFIG_DATA = {};
alert("aud.embedded.setting.jsp : " + e.message);
}
|