# 개요

> ## PROTOCOL22-API

PROTOCL22는 다보리SSO에서 OwnerKey를 활용하여 MAIN APP과 GUEST APP간의 API를 공유하여 특정 API에 접근하는 방식입니다.

<p class="callout info">OwnerKey란?</p>

PROTOCAL22-API를 사용하기 위해서는 OwnerKey 발급이 필요합니다.

여기서 OwnerKey는 APP 등록시 main APP에 등록된 API 서버와 DB 접근 권한이 설정된 암호화 KEY입니다.

발급된 OwnerKey를 guest APP에 저장하여 PROTOCL22-API를 사용할 수 있습니다.

> ## OwnerKey 발급방법

1\. main app을 등록한 dabory 계정으로 로그인합니다.

2\. guest app 등록을 위해서 My App 메뉴를 클릭합니다.

[![image.png](https://manual.dabory.com/uploads/images/gallery/2025-02/scaled-1680-/BScimage.png)](https://manual.dabory.com/uploads/images/gallery/2025-02/BScimage.png)

3\. 좌측 메뉴에서 App Manager를 클릭합니다.

[![image.png](https://manual.dabory.com/uploads/images/gallery/2025-02/scaled-1680-/HSEimage.png)](https://manual.dabory.com/uploads/images/gallery/2025-02/HSEimage.png)

4\. 등록한 app중 Owner key를 공유할 app을 클릭합니다.

[![image.png](https://manual.dabory.com/uploads/images/gallery/2025-02/scaled-1680-/2hMimage.png)](https://manual.dabory.com/uploads/images/gallery/2025-02/2hMimage.png)

5\. GuestApp 탭을 클릭합니다.

[![image.png](https://manual.dabory.com/uploads/images/gallery/2025-02/scaled-1680-/vpQimage.png)](https://manual.dabory.com/uploads/images/gallery/2025-02/vpQimage.png)

6\. a부터 c까지 입력 및 선택합니다.

[![image.png](https://manual.dabory.com/uploads/images/gallery/2025-02/scaled-1680-/otWimage.png)](https://manual.dabory.com/uploads/images/gallery/2025-02/otWimage.png)

ⓐ Guest App Name : Owner Key의 이름

ⓑ OwnerCode : Owner Key의 제한방식

- owner : 모든 api 허용
- keypair :
- dbupdate :
- limited : 일부 api만 허용

ⓒ AppType : guest app의 type

7\. Download .owner-key 버튼을 클릭하여 Owner key를 download 합니다.

8\. MainApp 탭을 누른뒤 save 버튼을눌러 저장합니다.

9\. 생성된 .owner-key를 확인하고 frontend 소스코드를 open합니다.

10\. .env 파일에 MAIN\_API\_OWNER\_KEY 변수를 추가하고 생성된 owner key의 값을 넣어줍니다.

> ## Protocol22-API 종류

1\. Javascript (js 방식)

2\. GO (webapp 방식)

3\. Laravel (webapp 방식)

#####  **js방식과 app방식의 차이점**

<table border="1" id="bkmrk-%EA%B5%AC%EB%B6%84-javascript-webapp" style="border-collapse: collapse; width: 100%; height: 244.172px;"><colgroup><col style="width: 17.7998%;"></col><col style="width: 39.5501%;"></col><col style="width: 42.6501%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">**구분**</td><td class="align-center" style="height: 29.7969px;">**Javascript**</td><td class="align-center" style="height: 29.7969px;">**WebApp**</td></tr><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">호출</td><td style="height: 29.7969px;">프론트엔드(브라우저)</td><td style="height: 29.7969px;">백엔드(Laravel, Go)</td></tr><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">목적</td><td style="height: 29.7969px;">Guest APP에서 직접 API 요청</td><td style="height: 29.7969px;">서버간 api 요청 (Backend to Backend)</td></tr><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">호출방식</td><td style="height: 29.7969px;">$.fn.ownerKeyLinker.ownerApp() 호출</td><td style="height: 29.7969px;">callOwnerApi() 호출</td></tr><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">OwnerKey 저장</td><td style="height: 29.7969px;">스크립트에 직접입력</td><td style="height: 29.7969px;">특정 변수에 저장후 session 활용</td></tr><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">인증방식</td><td style="height: 29.7969px;">OnwerKey를 직접 포함하여 API 요청</td><td style="height: 29.7969px;">GateToken을 세션에서 불러와 API 요청</td></tr><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">보안</td><td style="height: 29.7969px;">상대적으로 낮음 (클라이언트에서 호출)</td><td style="height: 29.7969px;">상대적으로 높음(서버에서 요청)</td></tr><tr style="height: 35.5938px;"><td class="align-center" style="height: 35.5938px;">사용예제</td><td style="height: 35.5938px;">&lt;script&gt; 태그로 js 라이브러리 로드후 호출</td><td style="height: 35.5938px;">Laravel, Go 등의 서버 코드에서 API 호출</td></tr></tbody></table>