References
- Postman Collection (Atlassian Confluence Cloud | Postman API Network)
📌 결론
- Authorization Code Type + Refresh Code Type
- Atlassian 에서 Authorization Code 타입 만 지원, Access Token 을 Refresh 해서 사용
💡 OAuth2.0 연동 분석
✔️ Authorization Code Workflow

Authorization Code Flow (Auth Server : Atlassian - 3rd parth app : webMethods)
Callback URL = authorization code 를 리턴 받아 getToken 호출을 요청 할 IS 서비스의 호출 URL.
해당 Callback URL 은 Atlassian App에서 설정해야 한다.
✅ STEP 1. GET Auth Code
Request Parameter | Value |
|---|---|
audience | |
client_id | "YOUR_CLIENT_ID", iPaOgsUv9ArBZJOlvSHxvXXCUdfe2MjB |
scope | 각 Scope는 공백으로 구분 , OAuth 2.0 (3LO) 및 Forge 응용 프로그램에 대한 Jira 범위 (atlassian.com) → Scope 확인 필요 |
redirect_uri | https://YOUR_APP_CALLBACK_URL , API Server 에서 Response (auth code) 를 받아 Access Token 요청 (IS Service) |
state | (보안) → 선택 사항일 것으로 예상, 확인 필요 |
response_type | code |
prompt | consent |
- Scope 참고
✅ STEP 2. GET Access Token
Request Header | Value |
|---|---|
Content-type | aplication/json |
Request Body (JSON) | Value |
|---|---|
grant_type | authorization_code |
client_id | "YOUR_CLIENT_ID", iPaOgsUv9ArBZJOlvSHxvXXCUdfe2MjB |
client_secret | "YOUR_CLIENT_SECRET", ATOAkV2IyW2fOoXoMz-iXwBkr1qtOjDARUoCejkaQPWPQwlZJrFSp1_GVH6JwdHSE7A972DD482C |
code | "YOUR_AUTHORIZATION_CODE" , STEP 1. Response |
redirect_uri | "https://YOUR_APP_CALLBACK_URL" , Access Token 처리 할 IS Service |
- Request Body Example
- Content-Type : application/json
{"grant_type": "authorization_code","client_id": "YOUR_CLIENT_ID","client_secret": "YOUR_CLIENT_SECRET","code": "YOUR_AUTHORIZATION_CODE","redirect_uri": "[https://YOUR_APP_CALLBACK_URL"](https://your_app_callback_url%22/)}
❓ POSTMAN 테스트 (Authorization Code 타입)
- OAuth2.0 호출 시도 시 Atlassian 계정 정보 (앱 관리자) 필요
- [의문점] Redirect URL 을 dev-skbioscience.com = Gateway 9072 로그인 화면으로 설정
- Redirect 는 Gateway 로 가야 하지만 화면은 Atlassian 화면이 호출 됨 😒
- /authorize 호출 시 302 세 번 → 자동으로 Callback URL (Redirect URL) 을 헬스체크 하여 Atlassian Auth 화면으로 Redirect 하는 듯 함.
- context 값이 무엇을 의미하는지는 모르겠음 context (JWT 토큰) 값만 동일하면 (표준에 맞지 않는 방식인 듯 함, 확인 필요..)

POSTMAN 설정 1

POSTMAN 설정 2
Configure Options | Value |
|---|---|
Auth URL | https://auth.atlassian.com/authorize? 또는 ?promt=consent& |
Access Token URL | |
Client ID | iPaOgsUv9ArBZJOlvSHxvXXCUdfe2MjB |
Client Secret | ATOAkV2IyW2fOoXoMz-iXwBkr1qtOjDARUoCejkaQPWPQwlZJrFSp1_GVH6JwdHSE7A972DD482C |
Scope | read:me read:account read:confluence-space.summary read:confluence-props read:confluence-content.all read:confluence-content.summary read:confluence-content.permission read:confluence-user read:content:confluence read:content-details:confluence read:space-details:confluence read:comment:confluence read:user:confluence read:space:confluence read:jira-work read:jira-user read:avatar:jira read:project.avatar:jira read:dashboard:jira read:issue:jira read:issue-meta:jira read:comment:jira read:field:jira read:issue-details:jira read:issue-type:jira report:personal-data offline_access |
(’offline_access’ Scope 를 추가해서 호출해야 Refresh Token 응답) | |
Audience |

Atlassian 앱 화면 (Callback URL 은 Gateway로 되어있으나 이쪽으로 호출 됨)

발급 된 Access Token 과 Refresh Token

OAuth 2.0 (Authorization Code) 전체 호출 Console 화면 (context 확인..)
✅ STEP 3. 사이트의 클라우드 ID 가져오기

Request Header | Value |
|---|---|
Authorization | Bearer {Access_Token} |
Accept | application/json |
→ Response 의 id = cloud id 값 → API 호출 Endpoint 설정에 사용
✅ STEP 4. Refresh Token
Request Body (JSON) | Value |
|---|---|
grant_type | refresh_token |
client_id | "YOUR_CLIENT_ID", iPaOgsUv9ArBZJOlvSHxvXXCUdfe2MjB |
client_secret | "YOUR_CLIENT_SECRET", ATOAkV2IyW2fOoXoMz-iXwBkr1qtOjDARUoCejkaQPWPQwlZJrFSp1_GVH6JwdHSE7A972DD482C |
access_token | "발급 받은 Access Token" |
refresh_token | "발급 받은 Refresh Token" |

✅ Get Space API 호출 (I/F 개발)
→ The Confluence Cloud REST API (atlassian.com) Space 관련 API 참고
- STEP 3. 의 Cloud Id 값에 따른 API 호출 End-Point
- Confluence apps: https://api.atlassian.com/ex/confluence/{cloudid}/{api}
- → Request Header : Authorization : Bearer {Access_Token} 추가 (OAuth Token)
💡 SK 바이오사이언스 I/F 개발 방안
- COMMON I/F
- [I/F #1] authorize 호출
- [I/F #2] getToken 호출 (grant_type = authorization_code 일 때)
- 에러 처리 방안 확인 필요 (첫 호출 토큰 분실 시)
- [I/F #3] getToken 호출 (grant_type = refresh_token 일 때)
- 3600 초 = 1시간 마다 Schedule 설정
- SPACE 관련 API 호출→ The Confluence Cloud REST API (atlassian.com) Space 관련 API 참고
💡 SK 바이오사이언스 I/F 개발 상세 (12/09 기준)
✅ [COMMON I/F] Refresh Token (Batch 주기는 - 3600 expired in 값에 맞춰)

- Response (JSON) String을 그대로 Caching
✅ [COMMON I/F] Util 서비스 - Get Token From Cache

- 캐시에 저장 된 Response 값 (Access Token) 을 불러와 Cloud ID 호출
- Cloud ID 값이 변하지 않는 값이라면 SEQ #2 는 삭제 (문의 필요)
✅ [ATL_IF0001] Get Space
→ 호출 방법 Postman Collection 참고
[GET] /wiki/rest/api/space
Request Parameter 값에 따라 분기처리 후 호출


✅ [ATL_IF0002] Get Space with SpaceKey
[GET] /wiki/rest/api/space/{spaceKey}
IF0001 과 동일한 패턴으로 구현
