> ## Documentation Index
> Fetch the complete documentation index at: https://docs.platform.nora.my/llms.txt
> Use this file to discover all available pages before exploring further.

# nora auth

> 로그인, 워크스페이스 전환, 토큰 관리.

`auth` 서브커맨드가 로컬 자격증명과 후속 명령이 액션할 워크스페이스 관리. 로그인이 OAuth 기반; CLI 가 OS 설정 디렉토리 아래 사용자별 토큰 저장.

## 명령

| 명령                            | 설명                         |
| ----------------------------- | -------------------------- |
| `auth login`                  | OAuth 로그인 위해 브라우저 열기.      |
| `auth logout`                 | 로컬 자격증명 삭제.                |
| `auth status`                 | 활성 워크스페이스 + 토큰 요약 인쇄.      |
| `auth workspaces list`        | 여러분이 속한 모든 워크스페이스 나열.      |
| `auth workspaces switch <id>` | 활성 워크스페이스 변경.              |
| `auth workspaces current`     | 활성 워크스페이스 ID 인쇄 (스크립트 친화). |

## `auth login`

```bash theme={null}
nora auth login
```

OAuth 위해 브라우저 창 열림. 성공 시:

* 워크스페이스 목록 fetch.
* 아직 없으면 첫 것을 활성으로 고정.
* OS 설정 위치에 자격증명 씀:
  * macOS: `~/Library/Application Support/nora/credentials.json`
  * Linux: `~/.config/nora/credentials.json`
  * Windows: `%APPDATA%\nora\credentials.json`

자격증명 파일이 chmod 0600 (여러분 읽기 전용). 절대 커밋이나 공유 안 함.

터미널에 브라우저 없으면 (SSH, 컨테이너), CLI 가 로컬 브라우저에 붙여넣을 URL 인쇄. 반환된 코드를 터미널에 복사.

## `auth logout`

```bash theme={null}
nora auth logout
```

로컬 자격증명 파일 삭제. **서버 쪽 토큰 취소 안 함.** 취소하려면 앱 사용: **Settings → Personal Access Tokens → Revoke**.

공유 머신에서 로그인 후 유용.

## `auth status`

```bash theme={null}
nora auth status
```

인쇄:

* 활성 워크스페이스 이름과 ID.
* 저장된 모든 워크스페이스 (이름 + ID + 역할).
* 토큰 (편집됨, prefix 만 표시).
* 가리키는 서버 URL.

뭔가 이상하다 느낄 때 좋은 첫 명령 — *어느* 워크스페이스가 활성이고 *어느* 서버와 CLI 가 대화하는지 확인.

## `auth workspaces list`

```bash theme={null}
nora auth workspaces list
```

서버에서 워크스페이스 목록 새로고침 (오프라인이면 캐시로 폴백). 각 항목이 역할 (`owner` / `manager` / `member`) 표시해 파괴 명령 실행 전 권한 앎.

## `auth workspaces switch <id>`

```bash theme={null}
nora auth workspaces switch acme-prod
```

활성 워크스페이스 설정. 다시 전환할 때까지 후속 명령이 그것에 액션.

전환 없이 명령별 오버라이드도 가능:

```bash theme={null}
nora --workspace acme-staging flows list
```

## `auth workspaces current`

```bash theme={null}
nora auth workspaces current
```

활성 워크스페이스 ID 만 인쇄. 셸 스크립트에 유용:

```bash theme={null}
WS=$(nora auth workspaces current)
echo "Deploying to $WS"
```

## 한 머신에 여러 계정

CLI 가 하나의 활성 자격증명 세트 저장. 다른 계정 사용:

```bash theme={null}
NORA_TOKEN=$OTHER_ACCOUNT_TOKEN nora flows list
```

또는 `NORA_CONFIG_DIR` 가리켜 여러 자격증명 파일 유지:

```bash theme={null}
NORA_CONFIG_DIR=~/.nora-dev nora auth login    # 한 정체성으로 로그인
NORA_CONFIG_DIR=~/.nora-prod nora auth login   # 별도로 다른 정체성으로 로그인
```

빠른 전환용 각각 alias:

```bash theme={null}
alias nora-dev='NORA_CONFIG_DIR=~/.nora-dev nora'
alias nora-prod='NORA_CONFIG_DIR=~/.nora-prod nora'
```

## 개인 vs. 워크스페이스 토큰

두 토큰 타입 모두 동작:

| 토큰 타입         | 오는 곳                               | 스코프                | 최적 용도      |
| ------------- | ---------------------------------- | ------------------ | ---------- |
| **개인 접근 토큰**  | `auth login` 이나 앱 UI               | 여러분이 속한 어느 워크스페이스든 | 인터랙티브 사용   |
| **워크스페이스 토큰** | 앱: **Settings → Workspace Tokens** | 하나의 워크스페이스에 고정     | CI/CD, 자동화 |

CI 에 워크스페이스 토큰이 올바른 선택: 잘못된 워크스페이스에 실수로 액션 못하고, 하나 취소가 사용자를 앱에서 로그아웃 안 함.

CI 는 `NORA_TOKEN` 을 시크릿으로 설정:

```yaml theme={null}
env:
  NORA_TOKEN: ${{ secrets.NORA_CI_TOKEN }}
```

`auth login` 불필요 — CLI 가 `NORA_TOKEN` 자동 픽업.

## 토큰 수명

* **개인 접근 토큰**: 취소까지 유효. 사용 시 자동 새로고침.
* **워크스페이스 토큰**: 취소하거나 워크스페이스 삭제할 때까지 유효.

CLI 의 status 출력이 토큰 발급 시간 표시해 오래된 토큰 로테이션 가능.

## 트러블슈팅

**"Not authenticated"** — `auth login` 실행, 또는 `NORA_TOKEN` 설정.

**"Wrong workspace"** — `auth status` 로 활성 워크스페이스 확인, 그 다음 `auth workspaces switch` 로 수정.

**"유효 토큰에도 서버가 401"** — UI 에서 토큰 취소됨. `auth login` 재실행.

**기업 프록시가 OAuth 블록** — `auth login` 전 `HTTPS_PROXY=http://your-proxy:port` 설정.
