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 스코프를 요청하고, 유효한 아이덴티티 인증 기록과 함께 Account API를 사용하세요:
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]" \
-H "logto-verification-id: [verification-record-id]"
curl -X DELETE \
https://[tenant-id].logto.app/api/my-account/trusted-devices/[trusted-device-id] \
-H "Authorization: Bearer [account-api-access-token]" \
-H "logto-verification-id: [verification-record-id]"
Account API 레퍼런스 및 보안 인증 가이드에서 인가 및 인증 흐름을 확인하세요.
보안 모델
신뢰할 수 있는 디바이스 자격 증명은 두 부분으로 구성된 불투명 토큰 (Opaque token)입니다: 기록 ID와 암호학적으로 무작위 32바이트 시크릿입니다.
- 운영 환경에서는 Logto가
__Host-접두사,HttpOnly,Secure,SameSite=Lax,Path=/속성이 있는 host-only 쿠키에 저장합니다. 애플리케이션 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 요소 추가, 삭제, 재설정은 신뢰할 수 있는 디바이스를 삭제하지 않습니다.
- 신뢰할 수 있는 디바이스를 삭제해도 활성 세션은 종료되지 않습니다.
- 사용자를 삭제하면 사용자 데이터 라이프사이클을 통해 신뢰할 수 있는 디바이스 기록도 삭제됩니다.
- 신뢰할 수 있는 디바이스 개수 제한이나 자동 퇴출은 없습니다.