앱 관리
Source:
cli/apps.md· Live: https://docs.1pass.dev/cli/apps LLM-sanitized: internal links absolutized, VitePress containers → admonitions, line numbers in the Jump-to Index reference this rendered file (1-indexed).
📍 Jump-to Index
- L27-L75: ## 새 앱 만들기
- L58-L75: ### 옵션
- L76-L93: ## 목록 보기
- L94-L109: ## 상세 보기
- L110-L121: ## redirect URI 추가/제거
- L122-L154: ## client_secret 회전
- L155-L163: ## 삭제
- L164-L172: ## JSON 출력 (자동화)
- L173-L181: ## 다음
앱 관리
OAuth 앱을 만들고 관리하는 모든 명령어.
💡 Tip: CLI 한방 등록을 찾으신다면 개발자 등록 → RP 등록 → secret 확보 → env 주입 → 검증까지 한 흐름으로 끝내는 CLI 단계별 RP 등록 가이드 를 먼저 보세요. 이 페이지는
apps하위 명령의 레퍼런스입니다.
새 앱 만들기
logi apps create \
--name "My Awesome App" \
--redirect-uri https://app.example.com/auth/callback출력 예:
✓ App created
client_id: logi_1ce2d868ff8c8f0e3e8f0abcfac8f4be
status: pending
client_secret: logi_secret_3f290948f9fa6a3cb24bbce...
rp_health_secret: logi_rphs_a71c9e0b4d2f...
Paste these into your RP's environment:
# secrets below are shown ONCE — store them now
LOGI_API_URL=https://api.1pass.dev
LOGI_CLIENT_ID=logi_1ce2d868ff8c8f0e3e8f0abcfac8f4be
LOGI_CLIENT_SECRET=logi_secret_3f290948f9fa6a3cb24bbce...
LOGI_RP_HEALTH_SECRET=logi_rphs_a71c9e0b4d2f...
⚠ The client_secret and rp_health_secret are only shown once. Store them somewhere safe.⚠️ Warning: secret 은 create 응답에서만 1회 노출
client_secret과rp_health_secret은 생성 응답에서만 평문으로 노출됩니다.logi apps list/logi apps show등 GET 응답에는 절대 포함되지 않습니다 (logi DB 에 hash/암호문만 남아 복원 불가). 분실 시 secret 회전이 필요합니다 (아래).
옵션
| 옵션 | 기본값 | 설명 |
|---|---|---|
--name | (필수) | 사용자에게 보일 앱 이름 |
--redirect-uri | (필수) | OAuth 콜백 URL 한 개. 추가 URI 는 생성 후 logi apps add-redirect 로 등록 |
--scope | [] (서버 기본값) | 공백으로 구분된 유효 scope 이름들 (예: --scope openid profile:basic email). profile 단독은 무효 — profile:basic 사용. 미지정 시 서버측 기본 scope |
--client-type | confidential | confidential / public. 등록 후 변경 불가 (public vs confidential) |
--webhook-url | 사용자 변화 알림 받을 URL | |
--backchannel-logout-uri | OIDC Back-Channel Logout 수신 URL (BCL 가이드). 등록 시 SSRF 검증 | |
--health-url | RP 헬스 체크 호출 대상 호스트 (RP Active Health Check). 모바일 전용 RP 가 백엔드 호스트를 지정할 때. 등록 시 SSRF 검증 | |
--no-health-check | (체크 활성) | RP Active Health Check 를 끔 (health_check_enabled=false). 백엔드 없는 순수 모바일 RP 등 |
ℹ️ Note:
--client-type public이면 client_secret 은 없습니다 Public(PKCE-only) 클라이언트는client_secret을 발급받지 않습니다 (모바일/SPA 바이너리에 시크릿 노출 금지). 이 경우 출력의client_secret/LOGI_CLIENT_SECRET줄은 비거나 생략됩니다.rp_health_secret은 client type 과 무관하게 발급됩니다 (서버 측 env 에만 보관).
--backchannel-logout-uri · --health-url 의 SSRF 검증: private/loopback/link-local/metadata IP (127.x / 10.x / 192.168.x / 169.254.169.254 / ::1 등) 또는 non-http URL 은 등록 시점에 422 로 거부됩니다.
목록 보기
logi apps listname client_id status redirect_uris
Demo Test App logi_1ce2d868... pending http://localhost:3000/cb
Production Site logi_a39bc01f... approved https://app.example.com/cbJSON으로 (응답은 { "success": true, "data": { "applications": [...] } } 봉투):
logi apps list --json | jq '.data.applications[] | select(.status == "approved")'상세 보기
logi apps show 3Demo Test App (#3)
client_id: logi_1ce2d868ff8c8f0e3e8f0abcfac8f4be
redirect_uris: https://app.example.com/auth/callback
scopes: openid, profile
status: sandbox · test · free
webhook_url: —
created: 2026-04-27 17:55redirect URI 추가/제거
redirect URI 는 위치 인자 형태의 별도 명령으로 관리합니다 (atomic):
logi apps add-redirect 3 https://staging.example.com/cb
logi apps remove-redirect 3 https://staging.example.com/cb💡 Tip: 메타 수정 (
name,webhook_url등)은 준비 중 현재 CLI 는 메타 일괄 편집(apps edit) 명령을 제공하지 않습니다. 임시로는 Developer Console 또는PATCH /api/v1/applications/:idAPI 를 사용하세요.
client_secret 회전
logi apps rotate-secret 3새 secret이 한 번만 출력됩니다. 기존 secret은 즉시 무효. 이전 secret으로 진행 중인 토큰 발급 요청은 모두 401.
자주 회전할수록 안전합니다. CI/CD에선 3개월에 한 번 자동 회전 권장.
⚠️ Warning: ⚠️ 기존 앱 재등록 시 client_secret 가 안 보일 때 이전에 등록된 앱(같은
name으로 재실행 등)을 다시 만지면 생성 단계에서client_secret이 빈 값 으로 나옵니다 — 평문 시크릿은 최초 1회 생성 시점에만 노출되며, 그 이후엔 logi DB 에 hash 만 남아 복원 불가.
증상:
client_id=logi_xxxxxxxxxxxxx
client_secret= ← 비어있음해결: rotate-secret 으로 새 시크릿 발급:
logi apps rotate-secret <id>또는 SSH/rails console 에서 직접:
app = OauthApplication.kept.find_by(name: "your_app")
new_secret = app.rotate_client_secret!
puts new_secret # ← RP env 로 즉시 복사이 함정은 자동화 스크립트가 "create-or-update" 로직으로 동작할 때 자주 발생합니다 (앱이 이미 있어서 create 가 no-op 인데 secret 출력은 빈 값). 자동화는 "신규 생성 → secret 출력 / 기존이면 → rotate 명시" 두 분기로 나누세요.
삭제
logi apps delete 3⚠️ Warning: 즉시 삭제됩니다 현재 CLI 는 확인 프롬프트 없이 즉시 DELETE 를 호출합니다. 발급된 모든 토큰이 무효화되니 신중히 실행하세요. 인터랙티브 confirm + 휴지통 복구(
apps restore)는 준비 중.
JSON 출력 (자동화)
--json 또는 LOGI_OUTPUT=json 으로 기계가 읽을 수 있는 형태로 받습니다. create 응답의 JSON 에는 client_secret 과 rp_health_secret 이 포함됩니다 (1회 노출).
logi apps create --name "App" --redirect-uri https://example.com/cb --json \
| jq '{client_id, client_secret, rp_health_secret}'다음
- CLI 단계별 RP 등록 가이드 — 개발자 등록 + RP 등록 한방 플로우 + 복사용 프롬프트
- 개발자 등록 명령어 —
logi developer register / status / verify-email - RP Active Health Check —
rp_health_secret으로 헬스 엔드포인트 구현 - scope 추가하기
- 팀 멤버 초대
- CI/CD에서 secret 자동 회전