keenauth login으로 로그인하기
keenauth login은 대시보드 계정으로 로그인하므로 API 키를 만들지 않고도 터미널에서 환경을 관리할 수 있습니다. CI 작업이나 스크립트에서는 KEENAUTH_API_KEY에 API 키를 계속 사용하십시오(명령줄 인터페이스 참조).
명령
| 명령 | 기능 |
|---|---|
keenauth login |
기기 흐름으로 로그인합니다. CLI가 주소와 코드를 출력하면, 어떤 기기에서든 해당 주소를 열고 대시보드에 로그인한 뒤 코드를 입력하십시오. |
keenauth login --web |
이 컴퓨터의 브라우저에서 로그인합니다. CLI가 로그인 페이지를 열고 http://127.0.0.1:<port>/callback(또는 http://[::1]:<port>/callback)에서 결과를 받습니다. 요청은 PKCE(S256), state, iss 매개변수로 보호됩니다. |
keenauth whoami |
로그인한 사용자, 조직, 선택된 환경을 표시합니다. |
keenauth env use <environment_id> |
이후 명령이 관리할 환경을 선택합니다. 컨트롤 플레인이 해당 환경에 대한 대시보드 역할이 있는지 확인합니다. |
keenauth env list |
컨트롤 플레인에서 작업할 수 있는 환경 목록을 표시합니다. env use로 선택한 환경에는 * 표시가 붙습니다. |
keenauth logout |
서버에서 세션을 취소하고 이 컴퓨터에서 세션을 삭제합니다. |
keenauth login
keenauth env use env_01j9z3c0000000000000000000
keenauth users list
KEENAUTH_API_KEY가 설정되어 있으면 항상 우선 적용됩니다. 저장된 세션은 API 키가 설정되지 않은 경우에만 사용됩니다.
환경 목록 조회
keenauth env list는 로그인한 계정 중 대시보드 역할이 있는 환경의 목록을 컨트롤 플레인에 요청합니다(GET /v1/environments, CLI용 환경 목록 조회 참조). 이 명령에는 세션이 필요하며, 세션이 없으면 keenauth login을 실행하라는 메시지가 표시됩니다.
| 플래그 | 설명 |
|---|---|
--limit |
페이지 크기입니다. 1에서 100 사이이며 기본값은 20입니다. |
--after |
이전 페이지에서 출력된 커서입니다(more results: --after <cursor>). |
--all |
모든 페이지를 순서대로 가져와 모든 환경을 표시합니다. |
-o table|json|yaml |
출력 형식입니다. 표에서는 선택된 환경에 *가 표시되며, JSON과 YAML에서는 해당 행에 current: true가 포함됩니다. |
잘못되었거나 다른 곳에서 발급된 --after 커서는 거부됩니다(invalid_cursor). 이 경우 커서를 빼고 명령을 다시 실행하십시오.
세션 작동 방식
- 로그인하면 수명이 짧은 액세스 토큰(5분)과 리프레시 토큰(12시간)이 발급됩니다. 두 토큰은 이 컴퓨터에서 생성된 DPoP 키(RFC 9449)에 바인딩되므로, 복사된 토큰은 다른 기기에서 사용할 수 없습니다. 리프레시 토큰은 사용할 때마다 교체됩니다.
- 명령을 실행할 때마다 CLI는 선택된 환경의 관리 토큰을 컨트롤 플레인에 요청합니다. 이 토큰의 수명은 10분이며 같은 DPoP 키에 바인딩됩니다. 관리 토큰은 메모리에만 보관되고 디스크에 기록되지 않습니다.
- 환경에 대한 요청에는 관리 토큰, 새로 생성된 DPoP 증명, 대시보드 신원이 함께 전송됩니다. 환경은 사용자가 여전히 역할을 가지고 있는지 확인하므로, 대시보드 역할을 제거하면 몇 분 안에 CLI 접근도 중단됩니다.
세션 저장 위치
| 항목 | 위치 |
|---|---|
| 발급자, 사용자 ID, 조직, DPoP 키 지문, 선택된 환경 | KEENAUTH_CONFIG_DIR의 config.json, 또는 사용자 설정 디렉터리의 keenauth(권한 0600) |
| 리프레시 토큰과 DPoP 개인 키 | OS 키체인: macOS 키체인(security) 또는 Linux의 Secret Service(secret-tool) |
비밀 값은 명령 인수가 아니라 표준 입력을 통해 키체인 도구에 전달됩니다. 키체인을 사용할 수 없으면(예: Windows 또는 Secret Service가 없는 Linux 서버), keenauth login은 오류와 함께 중단됩니다. 이 경우 --insecure-storage를 전달하면 리프레시 토큰과 DPoP 개인 키를 config.json 옆의 credentials.json(권한 0600)에 암호화하지 않고 저장할 수 있습니다. CLI는 경고를 출력합니다. 이 파일을 읽을 수 있는 사람은 세션이 만료될 때까지 사용자를 대신해 행동할 수 있습니다. 공유 기기에서는 API 키를 사용하는 것이 좋습니다.
설정
| 변수 | 기본값 | 설명 |
|---|---|---|
KEENAUTH_LOGIN_ISSUER |
https://login.keenauth.com |
로그인 서버입니다. https 주소여야 합니다. |
KEENAUTH_CONTROL_URL |
https://api.keenauth.com/v1 |
관리 토큰을 발급하는 컨트롤 플레인입니다. https 주소여야 합니다. |
KEENAUTH_CONFIG_DIR |
사용자 설정 디렉터리 + keenauth |
config.json(및 --insecure-storage 사용 시 credentials.json)을 보관하는 위치입니다. |
오류
| 메시지 | 조치 방법 |
|---|---|
you are not signed in / your session has expired or was revoked |
keenauth login을 다시 실행하십시오. 종료 코드 3. |
no environment is selected |
keenauth env use <environment_id>를 실행하십시오. |
environment … does not exist or you have no dashboard role in it |
대시보드에서 ID를 확인하거나 소유자에게 역할을 요청하십시오. |
no OS keychain is available |
키체인을 설치하거나, --insecure-storage를 사용하거나, API 키를 사용하십시오. |