인증 인가에 대해서 알아봅시다.

네트워크 2021. 4. 16. 02:30

 이번 시간에는 인증과 인가에 대해서 알아봅시다. 아마 http를 공부하시다 보면 한 번 쯤은 들어보셨으리라 생각합니다. 401과 403, 그리고 404가 이것과 연관이 있습니다만, 이 글에서 상태코드를 중요하게 다루지는 않을 겁니다.

 

 


 티스토리 포럼에 가 보시면, 댓글을 입력하는 란이 있음을 알 수 있어요.

 

 

 최대 500자까지 입력이 가능해 보이는군요. 입력하려는 순간 로그인을 하라고 뜹니다.

 

 

 이는 제가 로그인을 하지 않아서, 서버는 내가 누구인지 모르기 때문입니다. 처음 보는 사람이 누구인지 모르는 것처럼요. 로그인을 해 보겠습니다.

 

 

 로그인을 하고 나서 보니, 코딩강아지라는 것이 확인 되었습니다. 신원이 확인이 된 셈입니다. ip 주소를 알면 되지 않을까요? pc방이라는 반례가 있습니다.

 

 

 그 후에는, 이렇게 포럼에 댓글을 달 수 있습니다. 여기까지 내용을 요약해 봅시다. 포럼에 댓글을 달려고 했어요. 그런데, 서버는 내가 누군지를 몰랐습니다. 그래서 누구인지 확인을 해 달라고 요청했습니다. 제가 로그인을 한 후에는 코딩강아지임이 확인이 되었으니, 댓글을 쓸 수 있었습니다.

 

 쉽게 말해서, 신분증을 보여줬다고 생각하시면 됩니다.

 

 


 문제는 인가인데요. 보통 이것과 권한을 묶어서 생각하시면 쉽습니다. 뭔가 와닿지 않는데요. 예를 하나 들어보겠습니다.

 

 

 블로그의 관리자 페이지를 보시면, 이렇게 글들을 수정, 삭제할 수 있는 버튼이 있음을 알 수 있어요. 이 글들을 저는 자원 이라고 표시하겠습니다. 블로그에서는 매우 중요한 것이기 때문입니다.

 

 

 이것들은 추가, 조회, 수정, 삭제가 될 수 있을 겁니다. CRUD라고 줄여서 말합니다. 이 중에, 조회는 상식적으로 별 문제가 되지 않습니다. 비공개 글이 아닌 이상은 로그인을 하지 않아도 볼 수 있습니다.

 

 

 위 그림은, 제가 몇 일 전에 썼던 파이썬의 deque 글을 비로그인 상태로 볼 수 있다는 것을 보여드리기 위해서 찍은 것입니다. 문제는 변경이 일어나는 경우입니다.

 

 

 위 그림은 제 블로그에 포스트 하나가 추가가 된 것을 의미합니다. 이 연산을 제가 했다면 별 문제가 없을 겁니다. 내가 아닌 인증이 된 '내가 아닌 사람'이 하는 경우에 문제가 생길 수 있습니다. 내 자원을 내가 아닌 다른 사람이 함부로 건드린 셈이 되기 때문입니다. 악의적인 마음을 먹고, 몇 개를 수정했다거나, 삭제를 했다면 끔찍할 겁니다.

 

 

 그 끔찍한 상황을 막으려면 어떻게 하면 좋을까요? 내 블로그에 있는 포스트에 대해서, 쓰기 권한을 chogahui에게만 주면 됩니다.

 

 

 그러면, chogahui가 아닌 example로 로그인 하였을 때, 제 포스팅을 수정하지 못하게 됩니다. 왜냐하면, example에게 제 포스팅에 대한 쓰기 권한이 없기 때문입니다. 읽기 권한만 있기 때문입니다. 마찬가지 이유로, 제가 다른 블로그의 admin 페이지에 들어가지 못하는데요. 인증이 코딩강아지로 되어 있긴 하지만, 다른 블로그의 admin 권한이 없기 때문입니다.