Authentication

SDK 인증 방법

SDK는 세 가지 인증 방법을 지원합니다. 일반적인 스크립트에서는 아이디/비밀번호 방식이 가장 간단합니다. 이미 브라우저에 로그인되어 있다면 세션 추출을 사용하면 비밀번호 없이 인증할 수 있습니다.

Username / Password

login()을 호출하면 내부적으로 SWMaestro 서버에 로그인 요청을 보내고 세션 쿠키를 저장합니다.

import { SomaClient } from 'opensoma'

const client = new SomaClient({
  username: 'user@example.com',
  password: 'password',
})
await client.login()

환경변수로도 전달 가능합니다:

const client = new SomaClient({
  username: process.env.OPENSOMA_USERNAME,
  password: process.env.OPENSOMA_PASSWORD,
})

세션 쿠키와 CSRF 토큰으로 직접 인증할 수 있습니다. login() 호출이 필요 없습니다. 브라우저 개발자 도구에서 쿠키를 직접 복사하거나 TokenExtractor로 추출한 값을 사용합니다.

const client = new SomaClient({
  sessionCookie: '<JSESSIONID 값>',
  csrfToken: '<CSRF 토큰>',
})

Browser Extraction

Chromium 계열 브라우저(Chrome, Edge, Brave, Arc, Vivaldi)에서 swmaestro.ai에 로그인된 세션을 추출합니다. 브라우저가 실행 중이지 않아도 쿠키 파일에서 직접 읽어옵니다.

import { TokenExtractor } from 'opensoma'

const extractor = new TokenExtractor()
const result = await extractor.extract()

if (result) {
  const client = new SomaClient({
    sessionCookie: result.sessionCookie,
  })
}

여러 브라우저 후보를 확인하려면:

const candidates = await extractor.extractCandidates()
for (const c of candidates) {
  console.log(`${c.browser} (${c.profile}): ${c.sessionCookie}`)
}

Credential Persistence

인증 정보를 ~/.config/opensoma/credentials.json에 저장하고 불러올 수 있습니다. 저장된 자격증명을 재사용하면 매번 로그인하지 않아도 됩니다.

await client.saveCredentials()

직접 관리하려면 CredentialManager를 사용합니다:

import { CredentialManager } from 'opensoma'

const manager = new CredentialManager()
const credentials = await manager.getCredentials()

if (credentials) {
  const client = new SomaClient({
    sessionCookie: credentials.sessionCookie,
    csrfToken: credentials.csrfToken,
  })
}

Check Status

세션이 유효한지 확인합니다. 세션이 만료되었거나 인증 정보가 없으면 false를 반환합니다.

const loggedIn = await client.isLoggedIn()

Logout

await client.logout()