Logto 제품 업데이트
🎉 7월 릴리스를 소개합니다: Logto API SDK, 페더레이티드 토큰 저장을 위한 시크릿 금고, 계정 API를 통한 TOTP 및 백업 코드 관리 등 다양한 기능이 추가되었습니다!
🎉 7월 릴리스를 소개합니다: Logto API SDK, 페더레이티드 토큰 저장을 위한 시크릿 금고, 계정 API를 통한 TOTP 및 백업 코드 관리 등 다양한 기능이 추가되었습니다!
Logto의 Management API 와 상호 작용하기 위한 TypeScript SDK로, 클라이언트 자격 증명 인증을 사용합니다.
작동 방식:
npm install @logto/apicreateManagementApi() 를 사용해 애플리케이션 자격 증명으로 타입이 지정된 Management API 클라이언트를 생성하세요.주요 기능:
시크릿 금고는 Logto 내에서 액세스 토큰, API 키, 패스코드 및 기타 민감한 정보를 안전하게 보관할 수 있는 솔루션입니다. 이러한 시크릿은 일반적으로 사용자를 대신하여 서드파티 서비스를 사용할 때 필요하므로, 안전한 저장이 매우 중요합니다.
토큰 저장이 이제 소셜 및 엔터프라이즈 SSO 커넥터 모두에서 지원됩니다. 활성화하면 Logto가 인증 제공자로부터 성공적인 인증 후 발급받은 토큰 세트를 저장합니다. 애플리케이션은 이후 사용자 재인증 없이 저장된 액세스 토큰을 조회해서 서드파티 API 를 호출할 수 있습니다.
지원 커넥터:
작동 방식:
자세한 정보는 시크릿 금고 문서 를 참고하세요.
사용자가 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: 백업 코드 조회.scope 파라미터 제공을 지원합니다. 이를 통해 Logto의 소셜 인증 엔드포인트 호출 시, 소셜 제공자로부터 추가 권한을 요청할 수 있습니다. scope가 제공되면 인증 요청에 사용되며, 없을 경우 커넥터 설정의 기본 scope가 사용됩니다.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가 일치하도록 강제하여, 데이터베이스 차원의 테넌트 격리를 보장할 수 있게 되었습니다.