Skip to content

앱 관리

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 하위 명령의 레퍼런스입니다.

새 앱 만들기

bash
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_secretrp_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-typeconfidentialconfidential / public. 등록 후 변경 불가 (public vs confidential)
--webhook-url사용자 변화 알림 받을 URL
--backchannel-logout-uriOIDC Back-Channel Logout 수신 URL (BCL 가이드). 등록 시 SSRF 검증
--health-urlRP 헬스 체크 호출 대상 호스트 (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 로 거부됩니다.

목록 보기

bash
logi apps list
name              client_id                                status     redirect_uris
Demo Test App     logi_1ce2d868...                         pending    http://localhost:3000/cb
Production Site   logi_a39bc01f...                         approved   https://app.example.com/cb

JSON으로 (응답은 { "success": true, "data": { "applications": [...] } } 봉투):

bash
logi apps list --json | jq '.data.applications[] | select(.status == "approved")'

상세 보기

bash
logi apps show 3
Demo 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:55

redirect URI 추가/제거

redirect URI 는 위치 인자 형태의 별도 명령으로 관리합니다 (atomic):

bash
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/:id API 를 사용하세요.

client_secret 회전

bash
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 으로 새 시크릿 발급:

bash
logi apps rotate-secret <id>

또는 SSH/rails console 에서 직접:

ruby
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 명시" 두 분기로 나누세요.

삭제

bash
logi apps delete 3

⚠️ Warning: 즉시 삭제됩니다 현재 CLI 는 확인 프롬프트 없이 즉시 DELETE 를 호출합니다. 발급된 모든 토큰이 무효화되니 신중히 실행하세요. 인터랙티브 confirm + 휴지통 복구(apps restore)는 준비 중.

JSON 출력 (자동화)

--json 또는 LOGI_OUTPUT=json 으로 기계가 읽을 수 있는 형태로 받습니다. create 응답의 JSON 에는 client_secretrp_health_secret 이 포함됩니다 (1회 노출).

bash
logi apps create --name "App" --redirect-uri https://example.com/cb --json \
  | jq '{client_id, client_secret, rp_health_secret}'

다음

Identity가 제품의 신뢰를 만듭니다.