페이지 트리

버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.

...

정보
titleAP 인증 토큰 발급 API

1. AUD 플랫폼에 등록한 Application용 클라이언트 아이디와 클라이언트 시크릿를 인증 정보로 설정하여 Application 인증 JWT 토큰 발급

  • 클라이언트에서 해당 인증 토큰 발급은 제한됩니다. 보안상 클라이언트 인증 정보가 확인될 소지 방지.
  • 타 시스템 포탈에서 최초 1회 인증 토큰 발급 후 만료되었거나 유효하지 않은 토큰일 경우 클라이언트 아이디와 클라이언트 시크릿 정보를 이용하여 인증 토큰을 재발급 합니다.
  • 발급한 토큰은 타 시스템 쿠키에 등록하여 사용합니다 . (쿠키 key = bimatrix_ap_accessToken)
요청 URL메서드Header 설정응답 형식설명

{AUD서버 주소}/api/auth/sign/ap/token

POST

서버 영역에서 API 호출 시에 Request Header로 설정하여 전달

Key설명
X-AUD-AP-Id애플리케이션 클라이언트 아이디값
X-AUD-AP-Secret애플리케이션 클라이언트 시크릿값
X-AUD-USER
  • Application용 아이디가 아닌 타 시스템에서 로그인 한 사용자로 인증 토큰 발급받아 사용 시에 세션 사용자 아이디 설정
  • 해당 사용자도 AUD 플랫폼 사용자에 등록된 id만 가능
X-AP-UPDATE-ADDR
  • 토큰이 업데이트 되야 할 때 외부 Portal에 전달해줄 토큰 업데이트 jsp의 full 경로 설정
  • 기본으로 제공하는 외부 임베디드용 소스에 포함된 setAUD7TokenCookie.jsp 에 대한 url 경로를 설정


String

AUD 플랫폼에 등록한 클라이언트 아이디 값과 시크릿 값을 통해 인증 후 전달된 사용자 또는 클라이언트 아이디로 AUD 플랫폼에서 사용 가능한 인증 토큰 발급.

해당 JWT 인증 토큰을 통해 AUD 플랫폼의 기능 연동을 지원

2. 발급받은 AUD플랫폼 JWT 토큰을 타 시스템 내 쿠키에 설정하여 자동으로 토큰이 정상 토큰이면 갱신 가능.

  •  

    Rest API 호출만으로 사용할 경우에는 호출시마다 Header에 설정하여 api 조회도 가능

    경고

    클라이언트에서 API 호출 시에 CORS 옵션 추가하여 API 호출
    ex) fetch를 통한 호출 시

    코드 블럭
    bordertrue
    languagejs
    themeMidnight
    fetch(biServerUrl + apiUrl, {
                method: 'POST', // 또는 'POST', 'GET' 
                headers: {
                    'Content-Type': 'application/json',
                    'bimatrix_ap_accessToken':'발급받은 AUD플랫폼 인증 JWT 토큰값'
                },
                credentials: 'include', // 쿠키를 포함하여 요청하려면 사용
                body: JSON.stringify(params)
            })
                .then(response => {
                    if (!response.ok) {
                        throw new Error('Network response was not ok');
                    }
                    return response.json(); // 응답을 JSON으로 변환
                })
                .then(data => {
                    alert(JSON.stringify(data));
                })
                .catch(error => {
                    console.error('There has been a problem with your fetch operation:', error);
                    alert('데이터를 가져오는데 실패했습니다.');
                }); 




...

도움말
iconfalse
title샘플 코드

Application 인증 토큰 발급을 위한 API 호출 자바 샘플 코드입니다.


코드 블럭
themeMidnight
/**
 * AUD 플랫폼의 AP Token 발급 호출용 샘플 JAVA
 */
public class AudGetApToken {
    private static final String AUD_AP_TOKEN_URL = "http://192.168.0.234:8088/matrix/api/auth/sign/ap/token";

    /**
     * audApId , audApPw 는 AUD 플랫폼에 등록한 Application 공통 계정을 사용
     * 파라메터로 전달 시에 암호화에 대한 처리하여 Application용 id / pw가 유출되지 않도록 구성
     */
    public static String getAPToken(String audApId , String audApPw , String userCode) {
        HttpURLConnection connection = null;

        try{
            if ((audApId == null || audApId.isEmpty()) || (audApPw == null || audApPw.isEmpty())){
                System.out.println("AUD 플랫폼에서 application 인증을 위한 id,pw에 대한 정보가 없습니다.");
                return null ;
            }

            // header 설정은 아래처럼 해주세요.
            Map<String, String> requestHeaders = new HashMap<>();
            requestHeaders.put("X-AUD-AP-Id", audApId);
            requestHeaders.put("X-AUD-AP-Secret", audApPw);
            requestHeaders.put("X-AP-UPDATE-ADDR" , "http://nm.bimatrix.co.kr:9091/examples/aud/setAUD7TokenCookie.jsp");
            if (userCode != null && !userCode.isEmpty())
                requestHeaders.put("X-AUD-USER" , userCode);

            try{
                // URL 객체 생성
                URL url = new URL(AUD_AP_TOKEN_URL);
                connection = (HttpURLConnection) url.openConnection();
            }catch(MalformedURLException e){
                System.out.println("AUD 플랫폼 주소가 잘못되었습니다.");
                return null;
            }catch(IOException e){
                System.out.println("연결이 실패했습니다 [api url:"+ AUD_AP_TOKEN_URL +"]");
                return null ;
            }

            // HTTP 메서드 설정
            connection.setRequestMethod("POST");
            for(Map.Entry<String, String> header :requestHeaders.entrySet()) {
                connection.setRequestProperty(header.getKey(), header.getValue());
            }
            // 응답 코드 확인
            int responseCode = connection.getResponseCode();

            System.out.println("Response Code: " + responseCode);
            if (responseCode == HttpURLConnection.HTTP_OK){
                String apAccessToken = connection.getHeaderField("bimatrix_ap_accessToken");
                if (apAccessToken == null){
                    System.out.println("ap token이 정상적으로 발급되지 않았습니다");
                    return null;
                }
                else{
                    return apAccessToken;
                }
            }else if (responseCode == HttpURLConnection.HTTP_UNAUTHORIZED){
                System.out.println("만료된 ap token 입니다.");
                return null;
            }

        }catch(Exception e){
            e.printStackTrace();
        }finally {
            if (connection != null) {
                connection.disconnect();
            }
        }

        return null;
    }
}



정보
title외부 PORTAL 적용 파일
  •  

    aud 폴더 기본 기능

    도움말

    1. iaud_main.jsp

    정보

    i-AUD 보고서 연동에 필요한 AUD7 플랫폼용 기능 jsp . 필요에 따라서 수정은 가능하나 기본적으로 배포한 기능대로 사용

    외부 Portal 에서 생성한 iFrame 영에 내에 설정되는 i-AUD main 기능입니다

    2. setAUD7TokenCookie.jsp

    정보

    외부 Portal 에서 발급한 bimatrix_ap_accessToken의 값을 업데이트 시켜줄 경우에 AUD7 플랫폼에서 response에 setCookie로 처리가 안되기 때문에 실제 업데이트 된 Token을 외부 포탈의 특정 서비스로 전달하는 역할

    3. imatrix_header.css

    정보

    외부 Portal의 상단 title영역 및 버튼 영역을 설정할 때 사용하는 AUD7 플랫폼용 portal theme css 파일

    외부 사이트에 맞게 수정하여 적용 가능합니다.



  •  sitePortalAUD7EmAudSample.jsp
정보

외부 Portal 에서 AUD7 플랫폼의 i-AUD 제품을 연동하기 위한 샘플 소스

해당 샘플 소스를 참고하여 실제 외부 Portal 사이트에 맞게 개발하여 적용하면 됩니다.

참고사항

샘플 코드의 수정 항목 정의 . 위 부분은 실제 샘플 소스이며 실 적용하는 소스에 맞게 구성하셔야 합니다.

코드 블럭
languagejs
<script>
    // AUD7 플랫폼 서버 주소
    var biServerUrl = "http://aaa.bimatrix.co.kr:8087"; 
    // 외부 Portal의 context root 경로 . 이 부분은 소스에 하드코딩 하여도 무방하며 손쉬운 관리를 위해서 적용
    var webRoot = "/examples";


      ........................
   // 쿠키 설정 시에 domain의 정보를 외부 portal과 AUD7 플랫폼 서버와 동일하게 맞춰어야 쿠키가 동기화 되어 적용됩니다.
   var setCookie = function (cookie_name, value, days) {
        deleteCookie(cookie_name);

        var exdate = new Date();
        exdate.setDate(exdate.getDate() + days);
        // 설정 일수만큼 현재시간에 만료값으로 지정
        var cookie_value = escape(value) + ((days == null) ? '' : '; expires=' + exdate.toUTCString() + ';path=/;domain=bimatrix.co.kr');
        document.cookie = cookie_name + '=' + cookie_value;
    }
   
     ..........................................
 
    /**
     * 실제 보고서 오픈에 활용되는 함수
     * 전역 파라메터 설정이 필요한 경우에 아래 선언된 PARAM_ARR 변수에 적용
     * iframe을 재사용 하는 경우와 최초 실행시에 전역 변수 설정 방식이 다르므로 확인하여 적용
     **/
    var openReport = function(code , isTileShow){
        console.log("===reportCode:"+code);
        // AUD7 인증 확인
        if (aud7AuthCheck()){
            // VS_ , VN_에 대한 전역변수 Parameter 설정
            var PARAM_ARR = [];
            
            var frm = $('#frm');


            var REPORT_AUD = $('#REPORT_AUD')[0].contentWindow;
            AUD_VIEWER = $('#REPORT_AUD');
            var okDispose = fnDisposeAudViewer(REPORT_AUD);

            if(okDispose) {
                // 기존 i-AUD iframe 재사용
                //var base64UrlEncodedData = btoa(encodeURIComponent('파라메터전달Test'));
                //PARAM_ARR.push('VS_TEST='+base64UrlEncodedData);
                PARAM_ARR.push('VS_TEST=파라메터전달Test');
                REPORT_AUD.AUD.SetCustomParams(PARAM_ARR);
                REPORT_AUD.fnOpen(code , isTileShow);
                fnSetViewerStatus('SD');
            }else{
                // i-AUD 최초 실행
                fnPurgeIFRAME(AUD_VIEWER).then(function(){
                    AUD_VIEWER = $('<iframe id="REPORT_AUD" name="REPORT_AUD" width="100%" height="100%" frameborder="0" scrolling="no" class="HideFrame" ></iframe>');
                    var parent = $('.main_group');
                    parent.append(AUD_VIEWER);

                    frm.attr({'target':'REPORT_AUD', 'action':webRoot+'/aud/iaud_main.jsp'});
                    frm.append('<input type="hidden" id="id" name="id" value="' + code + '" />');
                    frm.append('<input type="hidden" id="isTitle" name="isTitle" value="' + isTileShow + '" />');
                    frm.append('<input type="hidden" id="audServerUrl" name="audServerUrl" value="' + biServerUrl + '" />');
                    frm.append('<input type="hidden" id="webRoot" name="webRoot" value="' + webRoot + '" />');
                    frm.append('<input type="hidden" id="VS_TEST" name="VS_TEST" value="파라메터전달TEST" />');
                    frm.submit();

                    fnSetViewerStatus('SD');
                });
            }

            $('.main_group').removeClass('SiteHideFrame').addClass('SiteVisibleFrame');
        }
    }