HTTP status 400대 에러! 뭔가 요청이 잘못되거나 권한이 부족하여 제대로 답을 줄 수 없을때 마주하게 되는 에러인데요. 이 중 알듯 모를듯 비슷한 두 인증 및 권한에 대한 에러가 있습니다. 바로 401과 403인데요. 그 차이 정확히 알고 계신가요?
401 Unauthorized
- 요청자(사용자)가 누군지 알 수 없음
- 인증이 필요한 요청인데 실패하거나 제대로 제공이 되지 않은 경우.
- 응답에는 유효한 자격 증명을 제공하도록 요구하는 `WWW-Authenticate` 헤더 필드를 포함하도록 한다.
403 Forbidden
- 요청자(사용자)가 누구인지는 알고 있으나 접근 허용되지 않음. (권한이 부족)
- 오류 사유를 포함하지 않는다!
이 두 가지를 헷갈리면 안되는 이유는 바로 유저 프로세스가 두 에러에 따라 변경될 수 있기 때문인데요. 가장 많이 마주하는 시나리오는 유저의 로그인을 하고 일부 리소스에 대해서 접근을 관리하는 서비스일 것 같습니다.
예를 들어 Google 클라우드에서 공유된 폴더에 접근한다고 가정하였을 때.
1) 요청하는 유저가 로그인 아직 하지 않았을 때 -> 401
2) 요청하는 유저가 로그인 하였고, 공유된 폴더에 접근 권한이 있을 때 -> 200
3) 요청하는 유저가 로그인 하였고, 공유된 폴더에 접근 권한이 없을 때 -> 403
https://www.permit.io/blog/401-vs-403-error-whats-the-difference