SubLaneSubLane

관리자 인증

SubLane 가이드: 관리자 인증입니다.

SubLane은 소유자, 관리자 또는 구성원 역할이 있는 전역 로컬 로그인 ID와 작업 공간 멤버십을 사용합니다. 최초 실행 관리자가 초기 작업 공간을 소유합니다. 세션은 작업 영역 전체에서 공유되는 반면 권한은 선택한 작업 영역으로 범위가 지정됩니다. 보다 회원 액세스 권한, 초대 링크 및 계정 수명주기에 대한 정보입니다. 개인 게이트웨이 키는 별도의 게이트웨이를 통해 제공됩니다. API 주요 작업 흐름. 비밀번호 수명주기 및 로컬 복구 명령은 다음에 설명되어 있습니다. 팀 컨트롤.

최초 설정

SubLane을 정상적으로 시작하고 UI를 엽니다. 데이터베이스에 관리자가 없는 경우 /setup 설정 흐름을 설명하는 시작 페이지가 표시됩니다. 선택하다 설정 시작 열다 /setup/admin. 먼저 관리자 사용자 이름과 비밀번호를 입력한 후 별도의 단계를 계속 진행하여 첫 번째 작업 공간의 이름을 지정합니다. 두 번째 단계를 제출하면 두 가지 기록이 모두 생성되고 로그인됩니다. 별도의 초기화 키가 필요하지 않습니다.

설정 마법사는 다음을 사용합니다. /setup/admin; 새로 고치면 관리자 단계로 돌아갑니다. 초기화 후에는 두 설정 경로를 모두 사용할 수 없습니다. 로그아웃한 방문자는 로그인으로 이동하고 로그인한 사용자는 자신의 역할에 맞는 작업 영역으로 이동합니다. 온보딩 상태나 계정 자격 증명은 브라우저 저장소에 저장되지 않습니다.

다른 사용자에게 인스턴스를 열기 전에 로컬로 설정을 완료하세요. 초기화가 완료될 때까지 설정 페이지에 접근할 수 있는 사람은 누구나 첫 번째 관리자를 생성할 수 있습니다. 기본 리스너와 Compose 호스트 포트는 루프백에 바인딩된 상태로 유지됩니다.

사용자 이름은 문자나 숫자로 시작하는 332자의 ASCII 문자, 숫자, 밑줄 또는 하이픈을 사용합니다. 대소문자를 구분하지 않으며 소문자로 저장됩니다. 새 비밀번호는 820개의 유니코드 문자를 사용하며 잘리지 않습니다. 로그인에서는 이전 128자 제한까지 기존 비밀번호를 계속 사용할 수 있습니다.

관리자, 첫 번째 작업 영역, 소유권 멤버십 및 첫 번째 세션이 하나의 트랜잭션으로 커밋됩니다. 보호된 삽입은 동시 설정 요청이 첫 번째 관리자를 대체할 수 없도록 보장합니다. 트랜잭션이 성공하면 초기화가 닫히고 서비스를 다시 시작해도 다시 열리지 않습니다.

통합 시험판 스키마 이전의 레거시 개발 데이터베이스는 자동으로 업그레이드되지 않습니다. 새 인스턴스를 시작하기 전에 이전 디렉터리를 보존하세요. 이미 통합 스키마에 있는 데이터베이스는 추가 초대 마이그레이션을 받습니다. 남은 것 setup.key 이전 개발 빌드의 내용은 새 인스턴스에서 사용되지 않습니다.

데이터베이스 삭제 또는 교체는 비밀번호 복구 절차가 아닙니다. 현지를 이용하세요 reset-admin-password --password-stdin 기존 관리자에 대한 명령 또는 다음에 설명된 인증된 변경/재설정 흐름 팀 컨트롤.

세션

  • 로그인은 HttpOnly, SameSite=Lax, 경로 루트 쿠키에서 불투명하고 암호화된 무작위 256비트 토큰을 사용합니다.
  • SQLite은 토큰의 SHA-256 다이제스트만 저장합니다.
  • 세션은 슬라이딩 갱신 없이 12시간 후에 만료됩니다.
  • 사용자당 최대 5개의 세션이 유지됩니다. 새 로그인은 해당 사용자의 가장 오래된 초과 세션만 대체합니다.
  • 로그아웃은 성공을 보고하고 쿠키를 삭제하기 전에 SQLite의 현재 세션을 취소합니다.
  • 세션은 정상적인 프로세스 재시작 후에도 유지됩니다.
  • 브라우저는 테마 및 언어 기본 설정을 로컬로 저장하지만 세션 토큰은 저장하지 않습니다.

UI는 보호된 페이지를 표시하기 전에 서버의 세션 상태를 기다립니다. 포커스 상태를 주기적으로 다시 확인하고, 보호된 API 요청이 만료된 세션을 보고하면 로그인으로 돌아갑니다. 로그아웃하면 보류 중인 쿼리가 취소되고 비공개로 캐시된 데이터가 삭제됩니다. 백그라운드 세션 검사에서는 사용자 ID나 역할이 변경되면 개인 데이터도 삭제됩니다.

역방향 프록시 및 HTTPS

네트워크 배포의 경우 역방향 프록시에서 HTTPS을 종료하고 외부에 표시되는 원본을 설정합니다.

Reverse proxies and HTTPS · 1
SUBLANE_PUBLIC_URL=https://sublane.example.com ./bin/sublane

원본에는 구성표, 호스트 및 선택적 포트만 포함되어야 합니다. 경로, 자격 증명, 쿼리 매개변수 및 조각이 거부됩니다. HTTPS 공개 원본은 내부 프록시 연결이 HTTP을 사용하는 경우에도 보안 쿠키를 활성화합니다.

이 설정이 없으면 동일 출처 확인에서 요청의 호스트 및 실제 TLS 상태를 사용합니다. 전달된 호스트, 프로토콜 및 피어 헤더는 암시적으로 신뢰되지 않습니다. Vite는 로컬 개발을 위해 API 프록시에 원본 호스트를 명시적으로 보존합니다.

백엔드를 루프백 또는 프록시 뒤에 있는 개인 네트워크에 바인딩된 상태로 유지합니다. 네트워크 액세스에는 HTTPS을 사용하십시오. 로컬 HTTP 기본값은 개발용입니다.

보호 및 리소스 제한 요청

아래의 모든 관리 경로 /api/ 명시적인 인증 엔드포인트를 제외하고 기본적으로 유효한 활성화된 관리자 세션이 필요합니다. 개인의 /api/keys 그리고 명시 /api/me/requests, /api/me/password, /api/me/limits 그리고 /api/me/usage 엔드포인트는 두 역할 모두에 대해 세션으로 보호되며 소유권을 적용합니다. 구성원은 자신의 세션 상태를 읽고 로그아웃할 수 있지만 관리자 관리 API에 액세스할 수는 없습니다. 정적 SPA 자산은 공개 상태로 유지됩니다. 애플리케이션 번들을 렌더링해도 관리 데이터에 대한 액세스 권한이 부여되지 않습니다.

돌연변이에는 정확히 동일한 출처의 Origin 헤더가 필요하며 사이트 간 메타데이터 가져오기를 거부하고 JSON만 허용합니다. 인증 본문은 4KiB로 제한되며 읽기 기한은 5초입니다.

설정, 로그인 및 초대 등록은 연결 피어당 분당 5회 시도 제한과 분당 60회 전역 제한을 공유합니다. Responses은 조절 시 Retry-After를 포함합니다. 제한자 상태는 1,024개의 피어로 제한되고 프로세스 로컬이므로 다시 시작하면 카운터가 재설정됩니다. 역방향 프록시 뒤에서 클라이언트는 명시적인 신뢰할 수 있는 프록시 지원이 도입될 때까지 프록시의 피어 예산을 공유합니다.

비밀번호 파생은 두 개의 동시 작업으로 제한됩니다. Argon2id는 19MiB, 2번의 반복, 1개의 레인을 사용합니다. OWASP 비밀번호 저장 기준. 이러한 제한은 전체 프로세스 메모리를 보장하지 않습니다.

API

엔드포인트입장결과
GET /api/auth/state공공의initialized 현재 사용자 또는 null
POST /api/auth/setup초기화되지 않은 인스턴스만 해당첫 번째 작업 공간이라는 관리자와 세션을 만듭니다.
POST /api/auth/login사용자 이름/비밀번호새 세션 만들기
POST /api/auth/register유효한 초대 링크초대된 워크스페이스에서 멤버 로그인 및 세션 생성
POST /api/auth/logout동일 출처 요청현재 토큰을 취소하고 쿠키를 지웁니다.
GET /api/system관리자 세션인스턴스 상태
GET/POST /api/members관리자 세션페이지가 매겨진 목록 또는 회원 생성
POST /api/members/invitations관리자 세션7일 동안 유효한 일회용 초대장을 만드세요
PATCH /api/members/{id}관리자 세션구성원 활성화 또는 비활성화
GET /healthz, GET /readyz공공의활성/준비

설정 및 로그인 승인 username 그리고 password; 설정 양식은 제출하기 전에 비밀번호 확인을 확인합니다. 로그아웃은 빈 JSON 개체를 허용합니다. 인증된 상태 응답에는 지속된 사용자 ID, 사용자 이름 및 admin 또는 member 역할을 수행하며 토큰이나 비밀번호 해시를 포함하지 않습니다. 오류 응답에는 현지화된 프런트엔드 메시지에 대한 안정적인 코드가 포함되어 있습니다.

명령줄 HTTP 클라이언트의 경우 올바른 Origin 헤더와 JSON 콘텐츠 유형을 명시적으로 제공하세요. 자격 증명을 셸 기록에 넣거나 버그 보고서에 공유하지 마세요.

2단계 인증 · 패스키

/preferences

비밀번호 로그인에 인증 앱의 코드를 추가합니다. 모든 워크스페이스의 계정에 적용됩니다. 지문, 얼굴 또는 기기 PIN으로 비밀번호 없이 로그인합니다. 본인 확인된 패스키는 2단계 인증도 충족합니다. 최대 10개를 추가할 수 있습니다.

안전한 곳에 보관하세요. 각 코드는 인증 코드 대신 한 번만 사용할 수 있습니다. 다시 표시되지 않으며 교체하면 이전 코드는 무효가 됩니다.

패스키에는 HTTPS 또는 localhost와 WebAuthn JSON을 지원하는 브라우저가 필요합니다.