앱 MVP 로그인 실패 안내: 재시도·잠금·복구를 나누는 4가지 기준
앱 MVP에서 로그인에 실패한 사용자가 다시 시도할 때, 화면에는 흔히 “로그인에 실패했습니다” 한 줄만 남습니다. 하지만 비밀번호가 맞지 않았는지, 계정이 잠시 더 시도할 수 없는 상태인지, 비밀번호 재설정으로 넘어갈지, 지원 경로를 보여 줄지는 서로 다른 제품 결정입니다. 이 구분이 없으면 사용자는 자신이 무엇을 할 수 있는지 알기 어렵고, 팀도 실패·잠금·복구가 각각 어디까지 처리됐는지 확인하기 어렵습니다.
OWASP Authentication Cheat Sheet는 로그인·비밀번호 재설정·계정 복구에서 사용자 ID나 비밀번호가 틀린 경우, 계정이 존재하지 않는 경우, 계정이 잠기거나 비활성화된 경우를 특정하지 않는 일반적인 응답을 권고합니다. 또한 일정 실패 뒤 추가 로그인을 막는 계정 잠금과, 잠금 정책에서 임계값·관찰 구간·잠금 지속 시간을 함께 고려할 것을 설명합니다. 이 글은 이 원칙을 작은 MVP의 화면 상태와 QA 질문으로 바꿔 정리합니다.
여기서 다루는 범위는 로그인 화면의 실패 안내와 다음 행동입니다. 로그인 전 접근을 되찾는 전체 절차는 MVP 비밀번호 재설정, 로그인 후 일정 시간이 지나 끝나는 상태는 MVP 로그인 유지와 세션 만료에서 별도로 다룹니다. 특정 시도 횟수·시간·인증 도구·보안성·법적 적합성은 이 글에서 정하지 않습니다.
먼저 ‘실패’와 ‘다음 행동’을 같은 문장으로 묶지 마세요
로그인 요청이 성공하지 않았다는 사실만으로 사용자의 다음 행동까지 정해지는 것은 아닙니다. 사용자는 다시 입력할 수 있을 수도, 잠시 기다려야 할 수도, 접근 복구를 시작해야 할 수도 있습니다. 반대로 팀은 화면에 어떤 문구가 보였는지뿐 아니라, 서버가 요청을 처리했는지, 사용자에게 어떤 선택지를 노출했는지, 지원으로 넘어갈 일이 있는지를 구분해 볼 필요가 있습니다.
핵심은 “왜 실패했는지”를 사용자에게 과하게 설명하는 것이 아니라, 현재 화면에서 가능한 다음 행동과 팀의 실제 처리 상태가 어긋나지 않게 하는 것입니다.
OWASP는 인증 기능이 사용자 ID·비밀번호 오류, 존재하지 않는 계정, 잠김 또는 비활성 계정을 구별하지 않는 일반적인 응답을 고려하도록 설명합니다. 이는 어떤 한 줄 문구를 모든 서비스에 강제하는 규칙이 아닙니다. 제품 팀은 지원 부담, 계정 중요도, 실제 복구 경로를 검토해 사용자 안내를 결정하고, 화면·HTTP 응답·분석 이벤트가 같은 상태를 뜻하는지 확인해야 합니다.
출시 전에 네 가지 상태를 한 장으로 합의하세요
상태 이름은 팀마다 달라도 됩니다. 다만 정상 로그인만 통과한 화면과 실패 안내를 같은 완료 기준으로 두지 않는 편이 좋습니다. 아래 표는 표준이나 구현 명세가 아니라, 기획·개발·QA가 같은 질문을 보도록 만드는 편집적 예시입니다.
상태 | 사용자 화면에서 확인할 것 | 팀이 기록할 질문 |
|---|---|---|
재시도 가능 | 입력을 다시 확인할 수 있는 일반적 안내와 다음 버튼 | 실패가 완료 화면처럼 보이지 않는가? |
추가 확인 필요 | 서비스가 정한 추가 확인 또는 대기 안내 | 이 상태를 어떤 조건으로 시작·종료하는가? |
복구 경로 | 비밀번호 재설정이나 계정 접근 지원으로 갈 수 있는 경로 | 복구 요청과 로그인 실패를 별도 기록하는가? |
지원 이관 | 사용자가 도움을 요청할 수 있는 실제 연락·안내 경로 | 지원 기록에 인증값을 남기지 않는가? |
특히 ‘잠김’이라는 내부 상태가 있다면, 사용자가 보는 안내와 운영 화면의 상태명을 일대일로 복사할 필요는 없습니다. 사용자에게는 필요한 다음 행동을, 팀에는 검증 가능한 처리 결과를 남기는 편이 낫습니다. 어떤 계정을 이미 잠겼다고 단정하는 오류 문구나, 실제로는 열려 있는데 복구만 권하는 화면은 피하세요.
잠금 정책은 숫자보다 상태 전환을 먼저 점검하세요
OWASP는 로그인 조절 수단으로 최대 시도 수를 언급하고, 계정 잠금에서는 실패 횟수·관찰 구간·잠금 지속 시간을 함께 고려하라고 설명합니다. 또한 실패 횟수 카운터를 출발 IP가 아니라 계정과 연결하는 방식을 제시하며, 잠금이 다른 사용자의 접근을 막는 방식으로 악용되지 않도록 주의할 것을 안내합니다. 이 문서의 값이나 예시 시간을 그대로 제품에 적용하기보다, 팀의 로그인 모델과 실제 테스트 결과로 결정하세요.
한 번의 실패, 반복 실패, 잠금 처리, 복구 요청을 제품에서 서로 다른 상태로 확인할 수 있는가?
잠금으로 전환되기 전과 후에 사용자 화면이 실제 처리 결과를 과장하지 않는가?
기기·브라우저·네트워크가 달라졌을 때 팀이 정한 상태가 일관되게 보이는가?
비밀번호 재설정 등 허용한 복구 경로가 잠금 상태와 충돌하지 않는가?
QA·지원 기록에 비밀번호, 인증 코드, 세션 값 같은 민감한 값을 적지 않는가?
여기서 ‘일관성’은 모든 상황에 같은 제한을 걸라는 뜻이 아닙니다. 정상 입력 실패, 자동화된 반복 시도, 고객 지원이 필요한 예외는 제품과 위험 판단에 따라 다른 처리 경로를 가질 수 있습니다. 팀은 각 경로가 실제로 끝나는 조건과 사용자가 할 수 있는 다음 행동을 출시 기록에 남기세요.
오류 문구와 복구 링크는 함께 테스트해야 합니다
일반적인 오류 안내는 사용자 경험을 끝내는 문장이 아니라 다음 흐름의 시작점입니다. 다시 시도할 수 있는 화면이라면 입력 상태와 안내가 남는 방식을, 복구 경로를 제시한다면 해당 경로가 실제로 열리는지를 함께 확인해야 합니다. 동일한 안내 문구를 쓰더라도 버튼, 링크, 지원 경로가 상태별로 다르면 사용자가 경험하는 제품은 달라집니다.
테스트 계정과 존재하지 않는 식별자 등 팀이 허용한 테스트 조건을 구분합니다.
각 조건에서 사용자에게 보이는 문구·버튼·복구 링크를 화면 캡처나 테스트 기록으로 남깁니다.
실패 뒤 다시 입력, 대기, 복구 시작, 지원 이관 중 실제로 가능한 행동을 하나씩 실행합니다.
브라우저·앱 화면을 벗어났다가 돌아온 뒤 상태가 완료처럼 바뀌어 보이지 않는지 확인합니다.
운영·지원 기록에는 인증값 대신 재현 조건, 화면 상태, 확인 시각처럼 필요한 최소 정보만 남깁니다.
비밀번호 변경처럼 로그인 후 민감한 계정 정보를 바꾸는 흐름은 현재 자격 증명 재확인과 별도로 볼 필요가 있습니다. 관련 범위는 MVP 비밀번호 변경에서 확인할 수 있습니다. 로그인 실패 안내가 곧 비밀번호 변경의 완료 조건이 되거나, 반대로 변경 성공 화면이 로그인 실패를 복구했다는 증거가 되지는 않습니다.
운영 기록에는 원인 추측보다 관찰된 상태를 남기세요
로그인 이슈가 들어오면 “계정이 잠겼다”처럼 단정하기 쉽습니다. 그러나 지원 담당자가 본 화면, 실제 로그인 시도 결과, 복구 요청의 수신 여부, 사용자가 다시 접근한 결과는 따로 확인해야 합니다. OWASP는 인증 실패와 계정 잠금이 기록·검토되어야 한다고 안내합니다. MVP 팀에서는 이를 실제 비밀번호나 토큰을 수집하라는 뜻으로 바꾸지 말고, 필요한 최소의 상태와 재현 정보만 남기는 원칙으로 적용하세요.
유인어스는 민간 사업 지원 서비스입니다. 이 글은 로그인 기능의 보안성, 특정 잠금 설정, 개인정보 처리의 적법성, 앱 심사, 계정 보호 또는 사업 성과를 보장하지 않습니다. 실제 출시 판단은 서비스의 로그인 구조·사용자 범위·데이터 흐름·최신 공식 문서·실제 테스트 결과와 필요한 보안·법무 검토에 따라 하세요.
자주 묻는 질문
로그인 실패 때 계정이 없다고 알려줘도 되나요?
서비스마다 판단이 다를 수 있습니다. OWASP는 로그인·비밀번호 재설정·계정 복구에서 사용자 ID나 비밀번호 오류, 존재하지 않는 계정, 잠김 또는 비활성 계정을 구별하지 않는 일반적인 응답을 설명합니다. 실제 안내와 복구 경로는 제품 맥락과 테스트 결과에 맞춰 정하세요.
계정 잠금은 몇 번 실패하면 시작해야 하나요?
모든 MVP에 적용되는 횟수는 없습니다. OWASP는 실패 횟수, 관찰 구간, 잠금 지속 시간을 함께 고려할 요소로 제시합니다. 서비스의 사용자 흐름과 지원 경로를 검토하고 실제 테스트로 상태 전환을 확인하세요.
잠긴 계정에는 비밀번호 재설정을 열어 두어야 하나요?
제품마다 단정할 수 없습니다. OWASP는 계정 잠금이 다른 사용자의 접근을 막는 방식으로 악용되지 않게 주의하고, 비밀번호 재설정 기능을 통한 로그인을 한 가지 고려 방법으로 설명합니다. 서비스의 복구 정책과 실제 구현을 별도로 검토하세요.
지원 기록에 무엇을 남기면 되나요?
실제 비밀번호, 인증 코드, 토큰 대신 재현 조건, 사용자가 본 화면 상태, 확인 시각, 다음 조치처럼 필요한 최소 정보만 남기는 편이 좋습니다. 구체적인 로그 항목은 데이터 흐름과 필요한 보안·법무 검토에 맞춰 정하세요.