자르비
10
2021-09-22 23:27:55
4
176

jwt 사용할 때, 전체 사용자 정보를 불러오는 api 호출 권한에 대하여 궁금합니다.


안녕하세요.

현재 jwt를 사용하여 restful api 호출에 대한 인증을 구현하고 있습니다.

그러나 구현 도중, /users와 같이 모든 사용자 정보를 가져오는 api를 호출할 때에는 어떻게 제한해야 할지 모르겠어서 질문 드립니다.


주소창에 abc.com/users를 입력하게되면 전체 사용자 정보가 출력되는데, 이를 방지하기 위해 jwt를 도입했습니다. 관리자 access-token을 생성하여 관리자일 때만 호출할 수 있도록 하면 될 것 같긴 한데, 일반 사용자가 사이트를 이용할 때, 클라이언트에서 /users api를 호출하는 경우가 있습니다. 클라이언트에서 해당 api를 호출할 경우, 제한되지 않으면서 url에 api를 검색했을 때, 접근하지 못하도록 하는 방법이 있을까요?

0
  • 답변 4

  • 잉랑동딩
    112
    2021-09-23 00:09:50
    Access token을 헤더에 실어서 서버에 보내면 서버는 해당 token이 자신의 token인지 파악해서 아니면 서버단 제일위에서 access dinied같은 코드를 뱉어내줘야합니다 json web token에대한 공식 문서를 다시 한 번 읽어보는걸 추천드립니당
  • 자르비
    10
    2021-09-23 01:20:48

    잉랑동딩님 답변 감사합니다!

    현재 유저의 access token을 헤더에 실어 보내고, 그 토큰이 접근 가능한 토큰인지 확인하는 것 까지는 구현된 상태입니다. 다만, 이와 같은 기능은 유저 확인(인증)인 부분이고, /users와 같이 모든 사용자 목록이 출력되는 api는 유저라고 해서 접근이 가능하면 안될 것 같아서 제한을 둘 방법이 있나 여쭤보았습니다!


     /user/:id (한명의 유저 정보 출력)  =>  access token 판별로 해당 유저만 api  접근 가능

    /users (모든 유저 정보 출력) => 유저가 접근하면 안되는 api. 관리자만 접근 가능하도록 하더라도, 클라이언트에서 해당 api를 호출함.


    즉, 클라이언트에서 호출은 가능하지만, 다른 사람들이 접근은 할 수 없도록(postman 등을 활용하여 접근 금지) 하는 방법이 궁금합니다ㅜㅜ

  • 잉랑동딩
    112
    2021-09-23 01:47:11 작성 2021-09-23 01:48:36 수정됨
    보통 admin계정을 둬서(db에 level과 같은 정보를 가진 admin필드존재) 해당 access token으로 user정보에 접근하여 admin유저가 아닌경우 컷하거나
     accesstoken과 별개로 adminKey를 따로 두어 같이 요청을 보내는 식으로 사용합니다. 

    저도 그리 긴 경력은 아니라 제가 모르는 더 나은 방식도 있을수도 있는데 이 부분에 대해서는 구글링하면 나올것 같습니다.
  • 자르비
    10
    2021-09-23 13:21:57

    말씀하신 부분 참고하여 좀 더 구상해봐야겠어요. 답변 정말 감사합니다!!

  • 로그인을 하시면 답변을 등록할 수 있습니다.