• 릴리즈

Logto 제품 업데이트

Logto v1.39.0이 출시되었습니다. 이번 버전에는 더욱 안전한 서명 키 교체, 향상된 JWT 스크립트 오류 처리, 확장된 계정 센터 보안 제어, WhatsApp 커넥터 지원, 그리고 주요 보안 개선이 포함되어 있습니다.

Simeng
Simeng
Developer

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

Logto v1.39.0을 소개하게 되어 매우 기쁩니다. 이번 릴리스는 운영 안전성 강화, 토큰 커스터마이징의 유연성 향상, 그리고 최종 사용자 계정 보안 개선에 중점을 두었습니다. 이 버전에는 개인 서명 키 교체를 위한 유예 기간, 커스텀 JWT 스크립트의 오류 처리 설정, 새로운 계정 센터 보안 페이지, Meta Cloud API 기반 WhatsApp 커넥터 지원, 그리고 인증 플로우 전반에 걸친 여러 보안 및 안정성 개선이 포함되어 있습니다.

주요 내용

  • 개인 서명 키 교체 유예 기간: Logto는 이제 개인 서명 키 교체 시 유예 기간을 지원하여, 클라이언트가 JWKS 캐시를 갱신할 시간을 제공함으로써 시스템 다운타임을 방지할 수 있습니다.
  • 커스텀 JWT 스크립트 오류 처리: 액세스 토큰 및 클라이언트 크리덴셜 JWT 커스텀 스크립트 실행 실패 시 토큰 발급을 차단할 수 있게 되었습니다.
  • 계정 센터 보안 페이지: 최종 사용자가 계정 센터에서 소셜 계정 연결, MFA, 계정 삭제 등을 직접 관리할 수 있습니다.
  • WhatsApp 커넥터: Meta Cloud API를 통한 새로운 WhatsApp SMS 커넥터가 추가되었습니다.
  • 보안 및 호환성 개선: 비밀번호 찾기 인증 응답이 단일화되어 계정 열거 위험이 줄어들었고, 인앱 브라우저의 소셜/SSO 리디렉션이 더욱 강인해졌습니다.

새로운 기능 및 개선 사항

개인 서명 키 교체 유예 기간

Logto는 이제 개인 서명 키 교체 과정에서 유예 기간을 지원합니다.

설정 방법:

  • PRIVATE_KEY_ROTATION_GRACE_PERIOD 환경 변수.
  • --gracePeriod CLI 옵션.

유예 기간 동안:

  • 새로 생성된 서명 키는 Next로 표시됩니다.
  • 기존 서명 키는 **Current(현재)**로 활성 상태를 유지합니다.
  • 클라이언트는 새 키가 활성화되기 전 캐시된 JWKS를 갱신할 시간이 주어집니다.

유예 기간 종료 후:

  • 새로운 개인 서명 키가 **Current(현재)**로 전환됩니다.
  • 이전 서명 키는 **Previous(이전)**로 표시됩니다.

이 과정은 키 교체를 더 원활하게 진행할 수 있게 하여, 오래된 JWKS 캐시로 인한 인증 실패를 방지하는 데 도움이 됩니다.

문서: 서명 키 교체하기

커스텀 JWT 스크립트 오류 처리

Logto는 이제 액세스 토큰 및 클라이언트 크리덴셜 플로우에 사용되는 커스텀 JWT 스크립트의 오류 처리 방식을 설정 가능하게 지원합니다.

포함된 개선 사항:

  • 커스텀 JWT 스크립트 실패 시 토큰 발급을 차단할 수 있습니다.
  • api.denyAccess()는 여전히 access_denied 응답을 반환합니다.
  • 기타 차단 모드 스크립트 실패는 지역화된 invalid_request 응답으로 처리됩니다.
  • 콘솔에 오류 처리 전용 탭이 추가되어 동작을 설정할 수 있습니다.
  • 새로 생성된 스크립트는 기본적으로 blockIssuanceOnError가 활성화됩니다.
  • 저장값이 없는 기존 스크립트는 이전과 같이 차단하지 않는 동작을 유지합니다.
  • 관련 콘솔 가이드, 문구, 스키마, 통합 범위가 갱신되었습니다.

개발자는 토큰 커스터마이징 실패 시 보안 요구에 따라 오픈 실패(open fail) 또는 닫힘 실패(fail closed) 방식을 직접 선택할 수 있습니다.

계정 센터 보안 페이지

이번 릴리스로, 기본 제공 계정 센터에 보안 전용 페이지가 추가되었습니다.

최종 사용자는 이제 /account/security에서 계정 보안을 직접 관리할 수 있습니다. 포함 기능:

  • 소셜 계정 연결 및 연결 해제
  • MFA 2단계 인증
  • 계정 삭제

콘솔 지원:

  • 로그인 연동 환경설정(Account Center) 항목에서 계정 삭제 URL 필드를 노출합니다.
  • 콘솔에 계정 센터 및 소셜 프리빌트 UI 항목이 표시됩니다.

Meta Cloud API 기반 WhatsApp 커넥터

공식 Meta Cloud API 연동을 통한 WhatsApp 커넥터가 추가되어, 메시지를 WhatsApp을 통해 전송할 수 있습니다.

이로써 Meta Cloud API를 이용한 WhatsApp 기반 SMS 및 인증 코드 발송 시나리오를 지원합니다.

조직 할당 API 응답 본문

조직 사용자 및 역할 할당 API가 이제 응답 본문을 반환합니다.

업데이트된 엔드포인트:

  • POST /organizations/:id/users는 요청에 포함된 user ID를 userIds: string[] 형태로 반환합니다.
  • POST /organizations/:id/users/:userId/roles는 최종 할당된 역할 ID(이름에서 해석된 ID 포함)를 organizationRoleIds: string[] 형태로 반환합니다.

콘솔 테마 토큰 업데이트

콘솔 테마에 빠져있던 --color-overlay-primary-subtle 토큰이 라이트 모드와 다크 모드 모두에 추가되었습니다.

버그 수정 및 안정성

비밀번호 찾기 인증 열거 방지

비밀번호 찾기 인증 시 단일 verification_code.code_mismatch 오류를 반환하도록 통합되었습니다.

이로써 이메일 또는 휴대전화번호가 존재하는지 여부가 다양한 오류 응답 형태로 노출되는 것을 방지합니다.

인앱 브라우저에서의 소셜 및 SSO 리디렉션 개선

Instagram, Facebook, LINE 등 인앱 브라우저에서 소셜 및 SSO 리디렉션 신뢰성이 향상되었습니다.

일부 인앱 브라우저는 OAuth 인증 공급자 페이지를 새로운 WebView로 열기 때문에, 리디렉션 후 sessionStorage가 손실될 수 있습니다.

이번 릴리스에서는 다음과 같이 localStorage를 대체로 사용하도록 개선했습니다:

  • 리디렉션 상태는 여전히 sessionStorage에 저장됩니다.
  • 대체 리디렉션 컨텍스트 번들은 localStorage에도 저장됩니다.
  • 콜백 시 sessionStorage가 없으면 Logto가 localStorage에서 상태를 복원합니다.
  • 대체 항목은 읽을 때마다 소비되고, 10분 후 자동으로 삭제됩니다.
  • 만약 두 저장소가 모두 비어있으면, 사용자에게 오류 토스트가 표시됩니다.

인증 코드 커넥터 요청 IP

인증 코드 발송 시 커넥터에 요청 IP가 전달되지 않던 문제를 수정했습니다.

이를 통해 커넥터가 인증 코드 전송 시 올바른 요청 컨텍스트를 받을 수 있습니다.