브라우저 승인 로그인#
stly auth login- stly가 브라우저로
https://app.structly.io/cli-login을 열고 터미널에 일회용 코드를 표시합니다. - 브라우저에서 Web UI에 로그인하고, 열린 CLI 로그인 승인 화면의 코드가 터미널의 코드와 같은지 확인합니다.
- CLI 로그인 승인을 누르면 터미널이 로그인을 마치고 결과 JSON을 출력합니다.
코드는 10분 뒤 만료됩니다. 직접 실행한 stly auth login의 코드만 승인하고, 다른 사람이 보낸 코드는 거부합니다.
| 옵션 | 쓰임 |
|---|---|
--no-browser | 브라우저를 열지 않고 URL과 코드만 표시합니다. 다른 기기의 브라우저에서 승인할 때 사용합니다. |
--force | 저장된 로그인이 유효해도 새로 승인을 받습니다. |
이미 유효한 로그인이 있으면 stly auth login은 승인 없이 저장된 로그인을 그대로 사용합니다.
Organization 선택#
로그인할 때 인증된 Organization이 하나뿐이면 자동으로 선택됩니다. 결과의 next_steps에 현재 Organization이 표시됩니다.
여러 개이면 직접 선택합니다.
stly org list
stly org select 7f9X9MPpr5H선택하지 않고 Catalog 명령을 실행하면 HTTP 409 ORGANIZATION_REQUIRED 오류의 hints에 실행할 명령이 표시됩니다.
인증 상태 확인#
stly auth status{"status":200,"etag":null,"location":null,"data":{"auth_mode":"user","authenticated":true,"credential_present":true,"credential_source":"global_session","origin":"https://api.structly.io"}}authenticated가 true이면 서버에서 로그인을 확인한 상태이고, 로그인이 없으면 false입니다.
Agent 토큰을 사용할 때는 서버에 확인하지 않으므로 null입니다. 토큰을 읽은 위치는 credential_source(environment·env_file)에 표시됩니다.
로그인 저장 위치#
로그인은 서버 주소별로 사용자 전역 저장소에 저장되므로 디렉터리를 옮겨도 다시 로그인하지 않습니다.
| OS | 위치 |
|---|---|
| macOS | ~/Library/Application Support/stly/sessions/ |
| Linux | $XDG_CONFIG_HOME/stly/sessions/ 또는 ~/.config/stly/sessions/ |
파일에는 로그인 정보가 평문으로 저장되며 본인만 읽을 수 있는 권한(0600)으로 만들어집니다.
로그인은 마지막으로 서버를 사용한 인증 명령을 실행한 시점부터 30일 동안 유지됩니다.
auth status를 포함한 인증 명령을 실행할 때마다 만료가 30일 뒤로 연장됩니다. 로그아웃하거나
서버에서 세션이 폐기된 뒤에는 stly auth login으로 다시 로그인합니다.
stly auth logout서버 주소#
기본 서버는 https://api.structly.io입니다. 다른 서버를 쓸 때는 --server 옵션이나 환경변수 STRUCTLY_API_URL로 지정합니다.
실행 디렉터리의 .env.local에 STRUCTLY_API_URL=…을 적어도 됩니다.
Agent 토큰#
환경변수 STRUCTLY_AGENT_TOKEN이 설정되어 있으면 stly는 저장된 User 로그인보다 Agent 토큰을 먼저 사용합니다.
Agent 토큰은 Organization 하나에 고정되므로, 토큰이 있으면 stly org select의 선택과 관계없이 그 Organization으로 요청합니다.
| 옵션 | 동작 |
|---|---|
| 지정하지 않음 | 토큰이 있으면 토큰, 없으면 User 로그인을 사용합니다 |
--auth-mode user | 토큰이 있어도 User 로그인을 사용합니다 |
--auth-mode agent | 토큰만 사용합니다. 토큰이 없으면 오류로 끝납니다 |
stly org list·stly org select·stly user get 같은 User 전용 명령은 토큰이 설정된 환경에서 오류가 됩니다.
토큰을 해제하거나 --auth-mode user를 붙여 실행합니다.
CI에서는 토큰을 secret 환경변수로 전달하고, User 로그인을 쓰지 않도록 --auth-mode agent를 지정합니다.