# CLI 단계별 RP 등록 (한방 가이드)

> Source: `guide/cli-rp-registration.md` · Live: https://docs.1pass.dev/guide/cli-rp-registration
> LLM-sanitized: internal links absolutized, VitePress containers → admonitions, line numbers in the Jump-to Index reference this rendered file (1-indexed).

## 📍 Jump-to Index

- L34-L38: ## 사전 요건
- L39-L71: ## 전체 플로우 (6단계)
- L72-L158: ## 단계별 설명
  - L74-L81: ### 1 · 로그인
  - L82-L89: ### 2 · 개발자 등록
  - L90-L105: ### 3 · 이메일 검증
  - L106-L130: ### 4 · RP 등록
  - L131-L146: ### 5 · env 주입
  - L147-L158: ### 6 · 검증
- L159-L184: ## 📋 복사용 프롬프트 (다른 개발자/AI 용)
- L185-L203: ## ✅ 검증 체크리스트
- L204-L213: ## 자주 막히는 곳
- L214-L220: ## 다음
- L221-L230: ## LLM 친화 버전

---

# CLI 단계별 RP 등록 (한방 가이드)

`logi` CLI 만으로 **개발자 등록 → 이메일 검증 → RP(OAuth 앱) 등록 → 3개 secret 확보 → 배포 env 주입 → 라이브 검증** 까지 한 흐름으로 끝냅니다. 웹 콘솔로 넘어갈 필요가 없습니다.

> 💡 **Tip**: 이 페이지의 위치
- **이미 로그인 통합 코드를 짠 상태** 라면 이 페이지로 등록만 끝내면 됩니다.
- **코드부터 짜야 한다** 면 [Quickstart for Agents (RP 통합 런북)](https://docs.1pass.dev/guide/agent-quickstart) 의 트랙 분기를 먼저 따른 뒤 이 페이지로 등록하세요.
- 등록 정책(위험 평가 · production 승급 · rate limit) 상세는 [앱 등록 가이드](https://docs.1pass.dev/guide/registering-apps) 참고.

## 사전 요건

- [logi CLI 설치](https://docs.1pass.dev/cli/install) (`brew install dcode-co/logi/logi` 또는 `gem install logi-cli`)
- 본인 logi 계정 (없으면 [1pass 앱](https://docs.1pass.dev/guide/install) 또는 SSO 로 가입)

## 전체 플로우 (6단계)

```bash
# 1) 로그인 (브라우저 OAuth — 폰에서 1회 승인)
logi login

# 2) 개발자 권한으로 승격
logi developer register --email dev@example.com --org "My Company"

# 3) 이메일 검증 — SSO(Google/Apple) 가입이면 자동 검증됨(이 단계 skip).
#    이메일/비밀번호 가입자만 코드 입력:
logi developer status              # identity_verified_level 가 unverified 면 ↓ 실행
logi developer verify-email        # 이메일로 받은 6자리 코드 입력

# 4) RP 등록 (앱 생성) — client_secret + rp_health_secret 1회 노출
#    --redirect-uri 는 한 개. 추가 콜백(staging/prod/모바일 scheme)은 생성 후 add-redirect 로.
logi apps create \
  --name "My App" \
  --redirect-uri https://app.example.com/auth/logi/callback \
  --scope openid profile:basic email \
  --client-type confidential
# 추가 redirect 가 필요하면:
logi apps add-redirect <id> https://staging.example.com/auth/logi/callback

# 5) 출력된 env 블록을 배포 플랫폼에 주입
#    LOGI_API_URL / LOGI_CLIENT_ID / LOGI_CLIENT_SECRET / LOGI_RP_HEALTH_SECRET

# 6) 라이브 검증
logi apps verify <id>
```

각 단계 상세: [로그인](https://docs.1pass.dev/cli/login) · [개발자 등록](https://docs.1pass.dev/cli/developer) · [앱 관리](https://docs.1pass.dev/cli/apps).

## 단계별 설명

### 1 · 로그인

```bash
logi login
```

브라우저가 열리고 폰에서 1회 승인하면 끝. 서버/SSH 환경이면 `logi login --code` ([device flow](https://docs.1pass.dev/cli/login#브라우저가-없을-때-서버-ssh-도커)).

### 2 · 개발자 등록

```bash
logi developer register --email dev@example.com --org "My Company"
```

`role` 이 `developer` 가 됩니다. 이미 developer 면 멱등.

### 3 · 이메일 검증

```bash
logi developer status
```

- `identity_verified_level: email_verified` 면 → **이미 검증됨, 4단계로**.
- `identity_verified_level: unverified` 면 → 코드 검증:

```bash
logi developer verify-email     # 이메일로 받은 6자리 코드 입력 (10분 만료, 5회 제한)
```

> ℹ️ **Note**: SSO 가입자는 자동 검증
Google / Apple 로그인 계정은 IdP 가 이메일을 검증했으므로 `identity_verified_level` 이 자동으로 `email_verified` 입니다. 이메일/비밀번호 가입자만 코드가 필요합니다.

### 4 · RP 등록

```bash
logi apps create \
  --name "My App" \
  --redirect-uri https://app.example.com/auth/logi/callback \
  --scope openid profile:basic email \
  --client-type confidential
```

- **redirect_uri 는 byte 단위 정확 일치** — `--redirect-uri` 는 생성 시 **한 개** 만 받습니다. local / staging / prod / 모바일 scheme 등 여러 개가 필요하면 하나로 생성한 뒤 `logi apps add-redirect <id> <uri>` 로 나머지를 추가하세요 ([redirect URI 규칙](https://docs.1pass.dev/guide/registering-apps#redirect-uri-규칙)).
- 모바일/SPA 등 시크릿을 못 숨기는 RP 는 `--client-type public` ([public vs confidential](https://docs.1pass.dev/oauth/public-vs-confidential)). **등록 후 변경 불가**.
- BCL 을 쓸 거면 `--backchannel-logout-uri` ([Back-Channel Logout](https://docs.1pass.dev/oauth/back-channel-logout)), 모바일 RP 의 백엔드 헬스 호스트는 `--health-url`, 헬스 체크를 끌 거면 `--no-health-check` ([RP Active Health Check](https://docs.1pass.dev/oauth/rp-health)).

출력에서 **3개 값** 을 확보합니다 (이 순간에만 평문 노출):

```
client_id:        logi_...        ← 공개 안전
client_secret:    logi_secret_... ← confidential 만, 1회
rp_health_secret: logi_rphs_...   ← 1회, 서버 env 전용
```

> ⚠️ **Warning**: 1회 노출 — 지금 복사
`client_secret` 과 `rp_health_secret` 은 create 응답에서만 평문으로 나옵니다. GET(`list`/`show`)엔 없습니다. 놓치면 secret 회전이 필요합니다.

### 5 · env 주입

create 출력에 붙여넣을 env 블록이 함께 나옵니다:

```bash
LOGI_API_URL=https://api.1pass.dev
LOGI_CLIENT_ID=logi_...
LOGI_CLIENT_SECRET=logi_secret_...
LOGI_RP_HEALTH_SECRET=logi_rphs_...
```

이 4개를 배포 플랫폼(Render / Vercel / Fly / Heroku / self-hosted)의 환경 변수에 넣습니다.

> 🚨 **Danger**: secret 은 서버 env 전용
`LOGI_CLIENT_SECRET` 과 `LOGI_RP_HEALTH_SECRET` 은 클라이언트 코드(모바일 바이너리 / SPA 번들 / 공개 git)에 절대 넣지 마세요. Public client 면 애초에 `client_secret` 이 없습니다.

### 6 · 검증

```bash
logi apps verify <id>
```

`tier` / `status` / `rp_health_status` / `health_check_enabled` 가 표시됩니다. localhost redirect 만 있으면 자동 승인(`approved`)되고, 프로덕션 도메인이 포함되면 `pending` 으로 [admin 검토](https://docs.1pass.dev/guide/registering-apps#production-승급) 가 필요합니다.

RP 헬스 엔드포인트가 정말 응답하는지 직접 확인은 [자가 진단 curl](https://docs.1pass.dev/oauth/rp-health#자가-진단) 참고.

---

## 📋 복사용 프롬프트 (다른 개발자/AI 용)

다른 개발자나 AI 에이전트(Claude Code · Cursor · Codex)에게 그대로 붙여넣으면 logi CLI 로 개발자 등록 + RP 등록을 끝내는 자기완결 프롬프트입니다. **`<...>` 부분만 본인 값으로 치환** 하세요.

> logi CLI 가 없으면 먼저 설치해줘: `brew install dcode-co/logi/logi` (또는 `gem install logi-cli`)
>
> 그다음 `logi manual` 을 실행해 매뉴얼을 컨텍스트에 로드하고, logi CLI 로 개발자 등록 + RP 등록을 끝까지 진행해줘. (manual 명령이 없는 구버전 CLI 면 대신 https://docs.1pass.dev/llms/guide/cli-rp-registration.md 를 읽어줘.)
>
> 1. `logi login` 으로 로그인 (브라우저 OAuth — 내가 폰에서 1회 승인할게).
> 2. `logi developer register --email <dev@example.com> --org "<My Company>"` 로 개발자 권한 승격.
> 3. `logi developer status` 로 `identity_verified_level` 확인 — `unverified` 면 `logi developer verify-email` 실행하고, 이메일로 온 6자리 코드를 나한테 물어봐서 입력해줘. (SSO 가입이면 이미 `email_verified` 라 이 단계는 skip.)
> 4. `logi apps create` 로 RP 등록:
>    - `--name "<My App>"`
>    - `--redirect-uri` 에 콜백 URL 을 byte 단위로 정확히 **한 개** 넣어 생성한 뒤, 추가 콜백(local / staging / prod / 모바일 scheme)이 더 있으면 `logi apps add-redirect <id> <uri>` 로 하나씩 등록.
>    - `--scope openid profile:basic email` (유효 scope 이름만 — `profile` 단독 ✗, `profile:basic` ✓).
>    - 시크릿을 숨길 수 있는 백엔드가 있으면 `--client-type confidential`, 모바일/SPA 단독이면 `--client-type public`. (등록 후 변경 불가니 신중히.)
> 5. create 응답의 `client_id` / `client_secret` / `rp_health_secret` 과 env 블록을 나한테 보여줘. **secret 은 1회만 노출되니** 절대 코드/git 에 커밋하지 말고, 내가 배포 플랫폼 env 에 넣게 안내만 해줘.
> 6. `logi apps verify <id>` 로 등록 상태를 검증하고, 프로덕션 도메인이라 `pending` 이면 admin 승급이 필요하다고 알려줘.
>
> redirect_uri 미스매치가 OAuth #1 사고이니 5번을 특히 꼼꼼히. 진행 중 막히면 https://docs.1pass.dev/llms.txt 의 인덱스에서 해당 토픽을 찾아 참고해줘.

> ℹ️ **Note**: 프롬프트에 내부 인프라 값을 넣지 마세요
위 프롬프트는 공개 CLI 명령과 공개 docs URL 만 씁니다. 본인의 secret 값 · 배포 플랫폼 토큰 · 서버 접속 정보 등은 프롬프트에 넣지 말고, AI 가 명령을 만들면 secret 은 본인이 직접 env 보관처에 주입하세요.

---

## ✅ 검증 체크리스트

등록이 끝났다고 판단하기 전에 각 항목을 직접 확인하세요. 괄호 안은 확인 방법입니다.

- [ ] **CLI 설치됨** — `logi version` 이 버전을 출력
- [ ] **로그인됨** — `logi whoami` 가 본인 계정/조직을 출력
- [ ] **developer 권한** — `logi developer status` 의 `role` 이 `developer`(또는 `admin`)
- [ ] **이메일 검증됨** — `logi developer status` 의 `identity_verified_level` 이 `email_verified` 이상 (SSO 면 자동)
- [ ] **RP 생성됨** — `logi apps list` 에 새 앱의 `client_id`(`logi_` 접두)가 보임
- [ ] **3개 secret 확보** — create 응답에서 `client_id` / `client_secret`(confidential) / `rp_health_secret` 을 받아 보관처(1Password / Keychain / Vault)에 저장 (코드/git 아님)
- [ ] **env 주입됨** — 배포 플랫폼에 `LOGI_API_URL` / `LOGI_CLIENT_ID` / `LOGI_CLIENT_SECRET` / `LOGI_RP_HEALTH_SECRET` 4개가 설정됨 (플랫폼 env 목록에서 확인)
- [ ] **검증 green** — `logi apps verify <id>` 가 `status` / `tier` 를 정상 표시 (프로덕션 도메인이면 `pending` → admin 승급 필요)
- [ ] **(옵션) BCL 설정됨** — `--backchannel-logout-uri` 를 등록했다면 `logi apps show <id>` 에 반영됨 ([BCL 가이드](https://docs.1pass.dev/oauth/back-channel-logout))
- [ ] **(옵션) health ping 도달** — 헬스 체크를 켰다면 [자가 진단 curl](https://docs.1pass.dev/oauth/rp-health#자가-진단) 로 `/.well-known/logi-rp-health` 가 200 응답

체크되지 않은 항목이 있으면 **미완료** 입니다 — 거짓 "완료" 보고 금지.

---

## 자주 막히는 곳

| 증상 | 원인 | 해결 |
|---|---|---|
| `403 identity_verification_required` | 이메일 미검증 | `logi developer verify-email` (3단계) |
| `403 forbidden: developer role required` | developer 미승격 | `logi developer register` (2단계) |
| `client_secret` 이 빈 값 | 같은 이름 재실행 등으로 create 가 no-op / public client | [secret 회전](https://docs.1pass.dev/cli/apps#client-secret-회전) 또는 신규 생성 분기 |
| `422` redirect_uri / health_url 거부 | 정확 일치 위반 / private IP SSRF | [redirect URI 규칙](https://docs.1pass.dev/guide/registering-apps#redirect-uri-규칙), `--health-url` 은 공개 호스트만 |
| RP 가 `pending` 에서 안 풀림 | 프로덕션 도메인 RP | [production 승급](https://docs.1pass.dev/guide/registering-apps#production-승급) admin 검토 |

## 다음

- [개발자 등록 명령어](https://docs.1pass.dev/cli/developer)
- [앱 관리 명령어](https://docs.1pass.dev/cli/apps)
- [Quickstart for Agents (RP 통합 런북)](https://docs.1pass.dev/guide/agent-quickstart) — 코드 드롭인 트랙 분기
- [RP Active Health Check](https://docs.1pass.dev/oauth/rp-health) — `rp_health_secret` 으로 헬스 엔드포인트 구현

## LLM 친화 버전

```bash
curl https://docs.1pass.dev/llms/guide/cli-rp-registration.md
```

CLI 가 설치돼 있으면 `logi manual` 이 같은 핵심 사실 + 커맨드 카탈로그를 오프라인으로 로드합니다 (`--full` 은 이 문서와 통합 런북까지 이어서 출력).

전체 번들: `https://docs.1pass.dev/llms-full.txt`
