<!-- canonical: https://docs.axelabs.ai/partner/domain-prep -->
<!-- source: content/partner/domain-prep.mdx -->

---
title: DNS / 도메인 준비
description: Microsoft Entra ID 에서 https:// 형식 Application ID URI 사용을 위한 도메인 검증.
---

# DNS / 도메인 준비

Frame MCP app 의 Application ID URI 를 `https://{customer}.axelabs.ai/frame/mcp` 형식으로 등록하려면, **귀사 tenant 에 해당 도메인을 검증** 해야 합니다.

## 왜 검증이 필요한가

Microsoft Entra ID 의 보안 정책:

- **`api://...` 형식**: 검증 불필요 (임의 문자열 허용)
- **`https://...` 형식**: 도메인 검증 필수 (도메인 소유 증명)

`https://` 형식이 필요한 이유:
- Anthropic Claude 가 `resource` 파라미터로 MCP server URL (`https://...`) 을 그대로 사용
- Microsoft 가 `resource` 와 `scope` 의 URI prefix 일치 검사 (AADSTS9010010)
- → Application ID URI 도 `https://` 로 통일해야 prefix 일치

## Zone 책임 모델 (먼저 확인)

| 도메인 | Zone 소유자 | 누가 TXT 추가 |
|---|---|---|
| `{customer}.axelabs.ai` (서비스 노출용, 예: `realchoice.axelabs.ai`) | **액스코퍼레이션 주식회사 (운영 주체)** | **운영자가 추가** — 귀사 IT 는 안내 메시지만 전달 |
| 귀사 corporate domain (예: `realchoice.co.kr`) | **귀사 IT** (Cloudflare / Route53 / 가비아 등) | **귀사 IT 직접** (Microsoft 365 verified domain 등록 시) |

본 페이지는 **두 경로 다** 다룹니다. 둘 중 어느 쪽이 필요한지 운영자와 확인 후 진행.

> ⚠️ Microsoft Entra ID 의 Application ID URI 검증에는 `{customer}.axelabs.ai` 만 충분 (Frame MCP app 의 `https://{customer}.axelabs.ai/frame/mcp`). 코퍼레이트 도메인은 SSO 사용자 식별 (이메일 verified) 용도이며, M365 tenant 가 이미 가지고 있을 확률이 높음 — 기 검증 상태면 본 페이지 §B 는 skip.

---

## A. `{customer}.axelabs.ai` 검증 — 운영자 처리, 귀사 IT 1 분

이 도메인 zone (`axelabs.ai`) 은 운영 주체 (액스코퍼레이션 주식회사) 가 Cloudflare 에서 관리합니다. 귀사 IT 는 다음만 하면 됩니다.

### A-1. Azure 에서 도메인 추가

Azure portal → **Microsoft Entra ID** → **Custom domain names** → **+ Add custom domain**

1. 입력: `{customer}.axelabs.ai` (예: `realchoice.axelabs.ai`)
2. **Add**
3. Microsoft 가 화면에 TXT record 표시:
   ```
   Type:  TXT
   Name:  @
   Value: MS=ms<숫자>   (예: MS=ms10433167)
   TTL:   3600
   ```

### A-2. 운영자에게 한 줄 전달

평문 메일 / Teams 채팅 등 어떤 채널이라도 가능 (TXT 값은 비밀 아님):

```
운영자께,
axelabs.ai zone 의 realchoice 서브도메인에 다음 TXT 추가 부탁드립니다 (M365 tenant 검증용):
  Type:  TXT
  Name:  realchoice         ← @ 아님, customer ID
  Value: MS=ms10433167      ← Azure 가 표시한 값
운영자가 추가 후 알려주시면 Verify 클릭하겠습니다. — {customer} IT
```

운영자가 Cloudflare API (`POST /zones/{ZONE_ID}/dns_records`) 로 추가 (~30초). 운영자가 "추가됨" 회신.

### A-3. propagation 확인 (귀사 IT)

운영자 회신 후:

```bash
dig +short TXT {customer}.axelabs.ai @1.1.1.1
# 예상: "MS=ms10433167"
```

1~5 분 소요. 비어 있으면 좀 더 대기.

### A-4. Azure 에서 Verify

Azure portal 의 Custom domain names 페이지 → 추가한 도메인 → **Verify** 클릭. ✓ "Verified" 표시되면 완료.

---

## B. 귀사 corporate domain 을 M365 verified domain 으로 추가 (선택)

귀사 M365 tenant 가 `{customer}.onmicrosoft.com` 만 가지고 있고 회사 도메인 (예: `realchoice.co.kr`) 이 아직 verified 가 아닌 경우 — 직원 이메일 (`first.last@realchoice.co.kr`) 로 SSO 로그인하기 위해 필요.

이 작업은 **귀사 zone (귀사 DNS provider) 에서 귀사 IT 가 직접** 추가합니다.

### B-1. Azure 에서 도메인 추가

Azure portal → **Microsoft Entra ID** → **Custom domain names** → **+ Add custom domain**

1. 입력: `realchoice.co.kr`
2. **Add** → Microsoft 가 TXT record 표시:
   ```
   Type:  TXT
   Name:  @
   Value: MS=ms<숫자>
   ```

### B-2. 귀사 DNS provider 에 TXT 추가

귀사가 Cloudflare 를 쓴다고 가정 (다른 provider 도 동일 개념):

| 필드 | 값 |
|---|---|
| Type | TXT |
| Name | `@` (zone root — Cloudflare 는 zone 이름 자동 채움) |
| Content | `MS=ms<숫자>` |
| TTL | Auto |
| Proxy status | DNS only |

Route53 / 가비아 / 후이즈 등 다른 provider 도 root TXT 로 동일.

### B-3. propagation + Verify

```bash
dig +short TXT realchoice.co.kr @1.1.1.1
```

OK 면 Azure 측 **Verify** 클릭.

## 검증 후 Application ID URI 등록

이제 Frame MCP app 의 Expose an API 탭에서:

```
Application ID URI: https://{customer}.axelabs.ai/frame/mcp
```

Azure 가 검증된 도메인으로 인식하여 허용. [Frame MCP 등록 §3-3](/partner/registration#3-3-expose-an-api) 계속.

## DNS record 종합 (참고)

운영자 측 (axelabs.ai zone) 에 자동 등록되는 record 들 (`axe onboard` 의 step 4~5 가 Cloudflare API 호출):

| Type | Name | Content | 용도 |
|---|---|---|---|
| CNAME | `{customer}` | `<tunnel-uuid>.cfargotunnel.com` | 트래픽 라우팅 (cloudflared tunnel) |
| TXT | `{customer}` | `MS=ms<숫자>` | Microsoft 도메인 검증 (§A) |

귀사 corporate domain (예: `realchoice.co.kr`) 은 별도 zone — §B 에서 처리 (또는 이미 verified 상태일 가능성).

## 함정

§A (`{customer}.axelabs.ai` — 운영자 측):

| 함정 | 결과 | 회피 |
|---|---|---|
| customer 가 운영자에게 안 알리고 zone 직접 만지려 함 | 권한 없어 실패 | §A-2 — 운영자에게 한 줄 전달 |
| propagation 대기 안 함 (즉시 verify) | Microsoft 가 TXT 못 찾음 | 1~5 분 대기 후 verify |

§B (귀사 corporate domain — 귀사 측):

| 함정 | 결과 | 회피 |
|---|---|---|
| Cloudflare Proxy status orange-cloud | TXT lookup 차단 | DNS only (회색 구름) |
| `@` 외에 다른 Name (`mail`, `www` 등) | zone root 가 아니라 서브에 붙음 | `@` 사용 |
| 가비아 / 후이즈에서 TXT @ 입력 시 호스트명 빈칸 처리 | record 가 등록되지 않음 | provider 별 매뉴얼 확인 (대개 빈칸 = root) |
| M365 tenant 가 이미 같은 도메인 verified — 중복 추가 | "domain already exists" 오류 | tenant 의 Custom domain names 에서 기 등록 여부 사전 확인 |

다음: [운영자에게 넘길 값](/partner/handoff) →
