MFA 신뢰할 수 있는 기기
MFA 신뢰할 수 있는 기기를 사용하면 사용자가 신뢰하는 브라우저에서 반복적인 MFA 프롬프트를 건너뛸 수 있습니다. 적격한 MFA 인증 또는 설정 후, 사용자는 로그인 또는 회원가입 마지막 단계에서 별도의 이 기기를 신뢰 페이지에서 브라우저를 신뢰할지 선택할 수 있습니다. Logto는 이후 제한된 시간 동안 유효한 자격 증명을 1st-party 쿠키에 저장합니다. 이후 로그인 시, 유효한 자격 증명이 있으면 사용자 상호작용 없이 MFA 인증 단계를 충족할 수 있습니다.
신뢰할 수 있는 기기는 새로운 MFA 요소가 아니며, Logto가 MFA를 요구하는 시점을 변경하지 않습니다. 로그인 플로우에서 MFA 단계만 충족할 수 있습니다. 아이덴티티 인증, 최근 인증, 계정 복구, MFA 요소 관리 또는 기타 민감한 계정 작업은 대체할 수 없습니다.
신뢰할 수 있는 기기의 동작 방식
로그인이 MFA 인증 단계에 도달하면, Logto는 다음과 같이 동작합니다:
- 기존 MFA 정책을 평가하여 MFA 필요 여부를 결정합니다.
- 테넌트에 대해 신뢰할 수 있는 기기가 활성화되어 있고, 사용자가 속한 모든 조직에서 허용되는지 확인합니다.
- 식별된 사용자의 활성 서버 측 기록과 브라우저 쿠키를 검증합니다.
- 자격 증명이 유효하면 MFA를 자동으로 완료합니다. 그렇지 않으면 Logto는 잘못된 자격 증명을 삭제하고 기존 MFA 플로우를 계속 진행합니다.
로그인 또는 회원가입 중 기기 신뢰하기
내장 로그인 경험에서는 필수 프로필 완료 및 MFA 단계 이후, 적격한 로그인 또는 회원가입 플로우 마지막에 이 기기를 신뢰 페이지가 별도로 표시됩니다. 브라우저를 신뢰하는 것은 이 페이지에서 명시적으로 선택하는 것으로, MFA 인증 또는 설정과는 별개입니다.
이 페이지는 테넌트에 대해 신뢰할 수 있는 기기가 활성화되어 있고, 사용자가 속한 모든 조직에서 허용되며, 현재 상호작용에 적격한 MFA 증명이 포함된 경우에만 표시됩니다:
- 활성화된 인증 앱 OTP, 패스키 (WebAuthn), 이메일 인증 코드 또는 SMS 인증 코드로 MFA 인증에 성공한 경우
- MFA 설정 중 인증 앱 또는 패스키를 성공적으로 바인딩한 경우 (회원가입 중 설정 포함)
비밀번호 재설정 중이거나 상호작용에 적격한 MFA 증명이 없는 경우에는 이 페이지가 표시되지 않습니다. 백업 코드 인증 또는 기존 신뢰할 수 있는 기기 자격 증명만으로는 자격이 충족되지 않으므로, 모든 로그인 또는 회원가입에서 이 페이지가 표시되지 않습니다. 이전에 건너뛰기를 선택한 경우에도 아래 설명처럼 페이지가 표시되지 않을 수 있습니다.
이 페이지에서 사용자는 다음을 선택할 수 있습니다:
- N일 동안 이 기기를 신뢰: 설정된 신뢰 기간 동안 참여합니다. Logto는 상호작용이 완전히 성공한 후에만 신뢰할 수 있는 기기 기록과 쿠키 자격 증명을 생성합니다.
- 건너뛰기: 신뢰할 수 있는 기기를 생성하지 않고 계속 진행합니다. 이 페이지를 건너뛰어도 필수 MFA 인증 또는 설정은 건너뛰지 않습니다.
사용자가 건너뛰기를 선택하면, Logto는 현재 브라우저에 해당 테넌트와 사용자에 범위가 지정된 별도의 옵트아웃 쿠키를 저장합니다. 이 쿠키의 수명은 건너뛸 당시 설정된 신뢰 기간과 동일합니다. 브라우저가 이 쿠키를 보유하는 동안 이후 로그인에서는 페이지가 다시 표시되지 않습니다. 만료되거나 삭제된 후에는 이후 적격 플로우에서 페이지가 다시 표시될 수 있습니다. 옵트아웃 쿠키는 기기 신뢰를 부여하거나 MFA를 충족하지 않습니다.
사용자가 건너뛰기를 선택한 후 현재 브라우저를 신뢰하고 싶다면, 브라우저의 쿠키 설정 또는 개발자 도구를 사용해 Logto 도메인에 대한 해당 옵트아웃 쿠키를 삭제하는 것이 권장 방법입니다. 쿠키 이름은 __Host-logto-device-trust-opt-out-로 시작합니다.
또는 Logto 도메인의 모든 쿠키를 삭제할 수도 있습니다.
이후 다시 로그인하여 적격한 MFA 인증 또는 설정을 완료하고, 페이지가 나타나면 N일 동안 이 기기를 신뢰를 선택하세요.
신뢰할 수 있는 기기 생성 및 로그인 후 메타데이터 업데이트는 최선의 노력을 다하지만, 실패해도 인증 상호작용 자체가 실패하지는 않습니다.
신뢰할 수 있는 기기 정책 설정
글로벌 정책
콘솔 > 다단계 인증 (MFA)에서 신뢰할 수 있는 기기를 설정하세요:
- 테넌트에 대해 신뢰할 수 있는 기기를 활성화 또는 비활성화합니다. 기본적으로 비활성화되어 있습니다.
- 1~365일 사이의 정수 신뢰 기간을 설정합니다. 기본값은 30일입니다.
신뢰할 수 있는 기기가 생성될 때 기간이 고정됩니다. 기기를 사용하는 것은 만료 시간을 연장하지 않으며, 기간을 변경해도 이후에 생성된 기기에만 적용됩니다.
글로벌 정책을 비활성화하면 기존 신뢰할 수 있는 기기가 MFA를 충족하지 못하게 되지만, 삭제되지는 않습니다. 정책을 다시 활성화하면 만료되지 않았거나 삭제되지 않은 기록은 다시 사용할 수 있습니다.
조직별 제한
조직은 구성원에 대해 신뢰할 수 있는 기기 허용 여부를 설정할 수 있습니다. 이 설정은 테넌트 수준 정책을 더 엄격하게 만들 수 있습니다:
- 글로벌 정책이 비활성화된 경우, 조직에서 신뢰할 수 있는 기기를 활성화할 수 없습니다.
- 사용자가 속한 조직 중 하나라도 신뢰할 수 있는 기기를 허용하지 않으면, 해당 사용자의 신뢰할 수 있는 기기 자격 증명은 MFA를 충족할 수 없습니다. 해당 조직이 MFA를 요구하는지와는 무관합니다.
- 조직별 신뢰 기간은 없습니다. 글로벌 기간이 적용됩니다.
조직에서 신뢰할 수 있는 기기를 허용하지 않으면 해당 구성원에 대한 사용이 중단됩니다. 기록은 삭제되지 않으며, 사용자가 직접 또는 관리자가 목록을 조회하거나 삭제하는 것은 막지 않습니다.
브라우저 및 쿠키 제한 사항
신뢰할 수 있는 기기 재사용을 위해서는 동일한 Logto 엔드포인트에 대해 브라우저 컨텍스트가 영속적인 1st-party 쿠키를 보존하고 반환해야 합니다. 이는 물리적 기기가 아니라 브라우저 프로필을 나타냅니다.
WebView, 시스템 브라우저, 커스텀 탭, 프라이버시 모드, 쿠키 비활성화 브라우저, 기타 임시 컨텍스트는 쿠키 저장소가 자격 증명을 영속적으로 저장할 때만 신뢰할 수 있는 기기를 사용할 수 있습니다. 이후 로그인 시 쿠키가 없으면 Logto는 인증 실패 대신 기존 MFA 플로우를 계속 진행합니다. 브라우저, 브라우저 프로필, Logto 도메인, 테넌트, 사용자가 다르면 신뢰할 수 있는 기기 자격 증명을 공유하지 않습니다.
Logto는 브라우저 지문 채취를 사용하지 않으며, 클라이언트가 쿠키를 보존할지 사전 감지하지 않습니다. 네이티브 앱 및 커스텀 로그인 플로우는 신뢰할 수 있는 기기 생성을 최선의 노력으로 처리하고, 기존 MFA 플로우를 항상 사용할 수 있도록 해야 합니다.
신뢰할 수 있는 기기 관리
expiresAt이 미래인 활성 기록만 목록에 표시됩니다. 기기 이름은 최신 user agent에서 파생되며, 국가 및 도시는 최신 요청 컨텍스트에서 추정된 메타데이터입니다. 원시 IP 주소는 UI, 공개 API에 표시되거나 반환되지 않습니다.
관리자 관리
콘솔 > 사용자 관리에서 사용자를 열어 신뢰할 수 있는 기기를 조회 및 삭제할 수 있습니다. 신뢰할 수 있는 기기를 삭제해도 향후 로그인에만 영향을 주며, 사용자의 활성 세션은 종료되지 않습니다.
Management API도 사용할 수 있습니다:
GET /api/users/{userId}/trusted-devices는 사용자의 모든 활성 신뢰할 수 있는 기기를 나열합니다.DELETE /api/users/{userId}/trusted-devices/{trustedDeviceId}는 사용자가 소유한 신뢰할 수 있는 기기 하나를 삭제합니다.
목록 응답에는 id, userAgent, country, city, createdAt, lastUsedAt, expiresAt가 포함됩니다.
curl https://[tenant-id].logto.app/api/users/[user-id]/trusted-devices \
-H "Authorization: Bearer [management-api-access-token]"
curl -X DELETE \
https://[tenant-id].logto.app/api/users/[user-id]/trusted-devices/[trusted-device-id] \
-H "Authorization: Bearer [management-api-access-token]"
Management API로 인증하는 방법을 알아보세요.
계정 센터 셀프서비스 관리
콘솔 > 로그인 & 계정 > 계정 센터에서 신뢰할 수 있는 기기 필드를 설정하세요:
- 끄기: 사용자가 신뢰할 수 있는 기기를 조회하거나 삭제할 수 없습니다.
- 읽기 전용: 사용자는 신뢰할 수 있는 기기를 조회할 수 있지만 삭제할 수 없습니다.
- 편집: 사용자는 신뢰할 수 있는 기기를 조회하고 삭제할 수 있습니다.
사전 구축된 계정 센터는 보안 페이지에 활성 신뢰할 수 있는 기기를 표시하며, 현재 브라우저의 쿠키 자격 증명이 완전할 때 해당 브라우저를 표시합니다. 현재 브라우저를 삭제하면 신뢰할 수 있는 기기 쿠키가 삭제되지만, 현재 로그인 세션은 유지됩니다. 다른 브라우저의 기록을 삭제해도 해당 브라우저의 쿠키는 즉시 삭제되지 않으며, 다음에 제출될 때 만료된 쿠키가 거부되고 삭제됩니다.
커스텀 계정 센터의 경우, urn:logto:scope:trusted_devices 스코프를 요청하고, 최근 urn:logto:acr:1fa 액세스 토큰으로 Account API를 호출하세요 (OIDC 단계별 인증 참고):
GET /api/my-account/trusted-devices는 로그인한 사용자의 활성 신뢰할 수 있는 기기를 나열하고 각 항목에isCurrent를 추가합니다.DELETE /api/my-account/trusted-devices/{trustedDeviceId}는 로그인한 사용자가 소유한 신뢰할 수 있는 기기 하나를 삭제합니다. 삭제는 1st-party 애플리케이션에서만 가능합니다.
curl https://[tenant-id].logto.app/api/my-account/trusted-devices \
-H "Authorization: Bearer [account-api-access-token]"
curl -X DELETE \
https://[tenant-id].logto.app/api/my-account/trusted-devices/[trusted-device-id] \
-H "Authorization: Bearer [account-api-access-token]"
Account API 레퍼런스 및 단계별 인증에서 인가 플로우를 확인하세요.
보안 모델
신뢰할 수 있는 기기 자격 증명은 두 부분으로 구성된 불투명 토큰 (Opaque token)입니다: 기록 ID와 암호학적으로 무작위 32바이트 시크릿입니다.
- 운영 환경에서는 Logto가
__Host-접두사,HttpOnly,Secure,SameSite=Lax,Path=/속성이 있는 호스트 전용 쿠키에 저장합니다. 애플리케이션 JavaScript는 읽을 수 없습니다. - 서버는 시크릿의 SHA-256 해시만 저장하며, 자격 증명 비교는 타이밍 안전 검사를 사용합니다.
- 모든 자격 증명 조회는 테넌트와 사용자로 제한되며,
expiresAt이 미래여야 합니다. - 만료는 생성 시 고정됩니다. 기회성 정리로 만료된 행을 나중에 삭제할 수 있지만, 정리 시점은 보안 제어로 사용되지 않습니다.
- 명시적 삭제는 서버 측 기록을 즉시 삭제합니다. 복사되었거나 만료된 쿠키는 기록이 삭제된 후에는 검증을 통과할 수 없습니다.
자격 증명 시크릿과 해시는 UI, 공개 API, 감사 로그, Webhook을 통해 노출되지 않습니다. 공개 기기 ID는 물리적 기기 식별자가 아니며, 인증에 충분하지 않습니다. 쿠키가 불투명 토큰 (Opaque token)이므로, 전체 쿠키를 복사하면 기록이 만료되거나 삭제될 때까지 동일한 테넌트와 사용자에 대해 신뢰를 재생할 수 있습니다. 신뢰할 수 있는 기기는 하드웨어 기반 기기 인증을 제공하지 않습니다.
감사 로그 및 Webhook
신뢰할 수 있는 기기 관련 감사 로그에는 다음이 포함됩니다:
TrustedDevice.Created: 성공적인 상호작용 후 신뢰할 수 있는 기기 기록 및 쿠키 자격 증명이 생성됨.TrustedDevice.Used: 신뢰할 수 있는 기기 자격 증명이 MFA를 충족하고 로그인이 성공적으로 완료됨.
다음 데이터 변경 Webhook을 구독할 수 있습니다:
TrustedDevice.Created: 신뢰할 수 있는 기기 기록이 생성됨.TrustedDevice.Deleted: 사용자 또는 관리자가 신뢰할 수 있는 기기 기록을 삭제함.
이벤트 데이터에는 신뢰할 수 있는 기기 id, userId, expiresAt가 포함됩니다. 쿠키 자격 증명, 시크릿 해시, 요청 IP는 포함되지 않습니다. 성공적인 사용에 대한 Webhook은 이벤트 양이 많아 제공되지 않으며, 정책 변경은 기록을 변경하지 않으므로 신뢰할 수 있는 기기 라이프사이클 이벤트를 발생시키지 않습니다.
자연 만료에는 TrustedDevice.Expired Webhook이 없습니다. 만료는 애플리케이션 변경이 실행될 때가 아니라 시간이 경과할 때 발생하며, 실제 정리는 나중에 이루어질 수 있습니다. 통합에서 예상 만료 시간을 파생해야 한다면 TrustedDevice.Created의 expiresAt 값을 사용하세요.
자연 만료는 신뢰할 수 있는 기기 전용 감사 로그도 생성하지 않습니다.
감사 로그 이벤트 유형 및 Webhook 이벤트에서 이벤트 카탈로그를 확인하세요.
라이프사이클 참고 사항
- 일반 로그아웃은 신뢰할 수 있는 기기를 삭제하지 않습니다.
- MFA 요소 추가, 삭제, 재설정은 신뢰할 수 있는 기기를 삭제하지 않습니다.
- 신뢰할 수 있는 기기를 삭제해도 활성 세션은 종료되지 않습니다.
- 사용자를 삭제하면 사용자 데이터 라이프사이클을 통해 신뢰할 수 있는 기기 기록도 삭제됩니다.
- 신뢰할 수 있는 기기 개수 제한이나 자동 퇴출은 없습니다.