개발자

인증 실패시 http status code

2022년 10월 26일조회 1,153

로그인 요청이나 휴대폰 인증같은 요청을 할때, 잘못된 비밀번호, 인증번호를 보낸 경우에는 어떤 상태코드가 맞을까요? 401이라고 많이 하는 것 같은데, 401은 인증정보를 가지고 있지 않은 사용자가 인증을 필요로하는 요청을 할때 인증되지 않았으니 이후 진행 불가! 하면서 내려주는 것으로 생각하고 있어서요.. 개인적으로는 409가 적절하지 않을까 싶긴 한데, 저장된 비밀번호(서버의 상태)와 충돌이 일어났다고 생각할 수 있지 않을까요? 혹은, 아이디+비밀번호를 보내서 인증정보를 내려주는 api을 로그인이라고 하면, 아이디+비밀번호 또한 인증정보라서 인증 실패다! 하면서 401을 내려준다는 원리인가요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

삭제된 사용자님의 프로필 사진

삭제된 사용자

2022년 10월 26일

HTTP Status code 401 : Unauthorized 즉, 리소스에 대한 인증자격증명이 없다는 것을 의미합니다. 로그인시 서버에 있는 유저의 정보와 일치하지 않거나 인증자격증명이 필요한 페이지에 인증자격증명이 없는 채로 접속을 시도할 때 나타내는 것으로 많이 사용됩니다. 언급하신 HTTP Status code 409 : Conflict 는 서버의 현재 상태와 요청이 충돌했음을 나타내며 주로 PUT 요청에 대응하여 나타납니다. 비즈니스 로직상 불가능한 요청을 응답하는 상태코드로 많이 쓰이는 것으로 알고 있습니다. +추가 조금 더 이해가 쉽도록 설명드리자면 로그인을 하면 로그인 이후의 페이지로 넘어가야 하는데, 인증정보가 없다면 다음 페이지로 넘어갈 수 없습니다. 인증정보가 없어 넘어갈 수 없는 것이기 때문에 401 코드가 더 적합하다고 볼 수 있을 것 같네요. MDN 에서 찾아보면 금방 이해가 되실 것 같습니다. https://developer.mozilla.org/ko/docs/Web/HTTP/Status/409

profile picture

익명

작성자

2022년 10월 26일

추가 설명 보니까 명확해지는군요! 감사합니다!

이원형님의 프로필 사진

흥미로워서 조금 찾아보았습니다. 스펙에서는 401을 다음과 같이 정의하고 있습니다. The 401 (Unauthorized) status code indicates that the request has not been applied because it lacks valid authentication credentials for the target resource. 로그인을 "ID/PASSWORD를 이용해 사용자 정보를 가져오는 동작" 이라고 정의하면, 로그인 실패는 사용자 인증에 실패하여 사용자 정보를 가져오는데 실패하는 것이므로 401로 봐도 괜찮을 것 같습니다. 오래전에도 비슷한 질문이 있었네요. - https://stackoverflow.com/questions/11714485/restful-login-failure-return-401-or-custom-response 가장 추천을 많이 받은 답변에서는 boolean 형태의 response를 지양하길 바라는데요, 로그인을 "이게 내 계정 정보 맞는지 확인(true/false)하는 동작" 이라고 생각하면, 로그인 실패에 대해 401은 어색할 수도 있겠습니다. ref: https://www.rfc-editor.org/rfc/rfc9110.html#name-401-unauthorized

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!