# TDC114PLUS Android App Link 설정 가이드

작성일: 2026-07-09
상태: debug 공기계 callback 수신 검증 완료

## 1. 목적

Baron SSO가 인증 완료 후 아래 HTTPS 주소로 이동했을 때 Android의 TDC114PLUS 앱이 열리도록 설정한다.

```text
https://114.hmac.kr/auth/callback
```

## 2. 앱 설정

| 항목 | 값 |
| --- | --- |
| Android package | `kr.co.baron.tdc114plus` |
| scheme | `https` |
| host | `114.hmac.kr` |
| path | `/auth/callback` |
| App Link 자동 검증 | 사용 |

## 3. 서버 담당자 요청 사항

`docs/references/assetlinks.debug.json` 파일을 아래 공개 주소에 JSON 원문으로 배포한다.

```text
https://114.hmac.kr/.well-known/assetlinks.json
```

배포 조건:

- HTTP 상태코드 `200`
- 리다이렉트 없이 직접 응답
- `Content-Type: application/json`
- 로그인이나 쿠키 요구 없음
- 외부 네트워크와 테스트 공기계에서 접근 가능

## 4. 현재 테스트 APK 지문

```text
3A:2D:60:48:6F:E5:3A:84:0C:41:14:DC:3A:17:A4:3B:64:E7:DE:A5:10:4A:09:26:0E:DC:5F:49:88:44:71:76
```

이 지문은 2026-07-09에 빌드한 debug APK용이다. 운영 APK는 운영 서명 인증서의 SHA-256 지문을 같은 배열에 추가해야 한다.

## 5. 검증 순서

1. 서버에서 `assetlinks.json`을 배포한다.
2. 최신 APK를 공기계에 재설치한다.
3. Android가 도메인 소유권 검증을 완료하도록 잠시 기다린다.
4. 아래 주소를 공기계에서 연다.

```text
https://114.hmac.kr/auth/callback?code=test-code&state=test-state
```

5. 브라우저나 앱 선택창이 아니라 TDC114PLUS의 `로그인 결과 확인` 화면이 열리는지 확인한다.
6. 실제 RP Client ID를 앱에 주입한 후 headless 승인부터 OIDC callback까지 E2E를 수행한다.

## 6. 현재 확인 결과

- `http://172.16.8.198:8080/auth/callback`: 정상
- `https://114.hmac.kr/auth/callback`: 브라우저 응답 정상
- 최신 debug APK 공기계 설치: 정상
- App Link 테스트: 앱 선택창 표시
- `assetlinks.json` 임시 테스트 서버 배포: 정상
- 외부 HTTPS JSON 응답: HTTP 200, `application/json` 확인
- 구형 공기계 자동 연결 상태: `undefined`
- 공기계 테스트 기본 앱 지정 후 callback 실행: TDC114PLUS `.MainActivity` 직접 실행 성공
- callback 화면에서 `code=test-code` 수신 확인
- 판정: callback 수신 경로는 검증 완료. 실제 Client ID와 PKCE code 교환 구현이 남아 있음

## 7. RP Client ID

```text
39d6190d-72f6-4a58-a84f-cdc5ece3e8af
```

- Client ID는 공개 식별자이므로 debug APK 기본 설정에 포함한다.
- Client Secret은 APK에 포함하지 않는다.
- 환경별 Client ID 변경은 `TDC114_OIDC_CLIENT_ID` Dart define을 사용한다.
