• 릴리스
  • API SDK
  • 금고
  • 계정 API

Logto 제품 업데이트

🎉 7월 릴리스를 소개합니다: Logto API SDK, 페더레이티드 토큰 저장을 위한 시크릿 금고, 계정 API를 통한 TOTP 및 백업 코드 관리 등 다양한 기능이 추가되었습니다!

Simeng
Simeng
Developer

사용자 인증에 몇 주를 낭비하지 마세요
Logto로 더 빠르게 안전한 앱을 출시하세요. 몇 분 만에 사용자 인증을 통합하고 핵심 제품에 집중하세요.
시작하기
Product screenshot

Logto API SDK

Logto의 Management API 와 상호 작용하기 위한 TypeScript SDK로, 클라이언트 자격 증명 인증을 사용합니다.

작동 방식:

  1. Logto 콘솔에서 머신-투-머신 애플리케이션을 생성하세요.
  2. 해당 애플리케이션에 Management API 접근 권한을 부여하세요.
  3. npm 을 통해 SDK 를 설치하세요: npm install @logto/api
  4. createManagementApi() 를 사용해 애플리케이션 자격 증명으로 타입이 지정된 Management API 클라이언트를 생성하세요.

주요 기능:

  • OAuth 토큰 인증 및 갱신이 자동으로 처리됩니다.
  • Logto Cloud와 셀프 호스팅 인스턴스 모두 지원합니다.
  • Logto의 Management API 와의 통합을 간소화하여, 저수준 API 요청이 아닌 피처 개발에 집중할 수 있도록 돕습니다.

시크릿 금고

시크릿 금고는 Logto 내에서 액세스 토큰, API 키, 패스코드 및 기타 민감한 정보를 안전하게 보관할 수 있는 솔루션입니다. 이러한 시크릿은 일반적으로 사용자를 대신하여 서드파티 서비스를 사용할 때 필요하므로, 안전한 저장이 매우 중요합니다.

페더레이티드 토큰 저장 지원

토큰 저장이 이제 소셜 및 엔터프라이즈 SSO 커넥터 모두에서 지원됩니다. 활성화하면 Logto가 인증 제공자로부터 성공적인 인증 후 발급받은 토큰 세트를 저장합니다. 애플리케이션은 이후 사용자 재인증 없이 저장된 액세스 토큰을 조회해서 서드파티 API 를 호출할 수 있습니다.

지원 커넥터:

  • 소셜 커넥터: GitHub, Google, Facebook, 표준 OAuth 2.0, 표준 OIDC
  • 엔터프라이즈 SSO 커넥터: 모든 OIDC 기반 SSO 커넥터

작동 방식:

  1. Logto 콘솔이나 Management API 를 통해 소셜/엔터프라이즈 SSO 커넥터에 토큰 저장을 활성화하세요.
  2. 활성화되면, Logto는 성공적인 사용자 인증 이후, 제공자로부터 발급받은 토큰 세트를 자동으로 저장합니다.
  3. 필요 시, Account API 를 통해 저장된 토큰을 조회하세요.

자세한 정보는 시크릿 금고 문서 를 참고하세요.

Account API 를 통한 TOTP 및 백업 코드 추가

사용자가 Account API 를 통해 TOTP 및 백업 코드를 추가할 수 있게 되었습니다.

  • POST /api/my-account/mfa-verifications/totp-secret/generate: TOTP 시크릿 생성.
  • POST /api/my-account/mfa-verifications/backup-codes/generate: 백업 코드 생성.
  • POST /api/my-account/mfa-verifications: 생성된 시크릿이나 코드를 사용해 TOTP 또는 백업 코드 추가.
  • GET /api/my-account/mfa-verifications/backup-codes: 백업 코드 조회.

기타 개선 사항

  • 소셜 커넥터: 소셜 커넥터 인증 URL 생성 시, 사용자 지정 scope 파라미터 제공을 지원합니다. 이를 통해 Logto의 소셜 인증 엔드포인트 호출 시, 소셜 제공자로부터 추가 권한을 요청할 수 있습니다. scope가 제공되면 인증 요청에 사용되며, 없을 경우 커넥터 설정의 기본 scope가 사용됩니다.
  • 콘솔: 새로운 시크릿 금고 기능 지원을 위해, 사용자 상세 페이지 레이아웃을 개편했습니다. 사용자의 소셜 및 엔터프라이즈 SSO 정보가 새로운 연결(Connection) 섹션에 정리됩니다. 이 섹션에서는 사용자가 연결한 모든 계정과 서드파티 ID 정보, 토큰 저장 상태(적용 시)를 확인할 수 있습니다. 각 연결별로 상세 사용자 ID 페이지도 제공되어, 연결된 ID와 관련 토큰의 상세 정보를 보여줍니다.

버그 수정

organization_user_relations 테이블의 테넌트 인식 외래키 제약 조건

문제점

개발자가 실수로 다른 테넌트의 user_id 를 조직에 할당할 수 있어, 조직 유저 API 엔드포인트에서 500 에러가 발생할 수 있었습니다. 기존 organization_user_relations 테이블에는 users (id)에만 외래키 제약 조건이 있어, 테넌트 구분 없이 존재하는 모든 유저 ID 할당이 가능했습니다.

근본 원인

Logto는 모든 테이블에 Row Level Security (RLS)를 적용하여 테넌트별 데이터 접근을 격리합니다. users 테이블과 organization_user_relations 를 조인하면, RLS로 인해 현재 테넌트에서 해당 사용자 데이터에 접근할 수 없게 되어 null 이 반환되고, 이로 인해 500 서버 에러가 발생했습니다.

해결책

복합 외래키 제약 조건 (tenant_id, user_id) 를 추가하여 users (tenant_id, id) 를 참조하도록 했습니다. 이를 통해 조직-유저 관계의 테넌트 ID와 유저의 테넌트 ID가 일치하도록 강제하여, 데이터베이스 차원의 테넌트 격리를 보장할 수 있게 되었습니다.