ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [problem-2] 로그인 유저기능
    3학년/Project-이때어때 2024. 3. 25. 18:48

    후 이걸로 2주째고민하고있거든요? 이제 타개할 부분을 좀 찾아야

     

    회원가입을 구현했고 잘만들어짐. 비밀번호 hashing도 되고. 근데 !!로그인 기능이안됨

     

     

    https://wikidocs.net/177248

     

    3-15 프론트엔드 빌드

    * `[완성 소스]` : [https://github.com/pahkey/fastapi-book/tree/v3.15](https://github.com/pahkey/fastapi…

    wikidocs.net

     

    대부분은 위 문서로 다 쇼부봤는데 svelte안쓰는 나는 저 글로는 이제 쇼부볼 수 가 없음

     

    어디까지 햇냐면

    대충 jwt로 토큰 발급하고 그 토큰을 쿠키에 저장하는 것 까지 ㅇㅇ

     

    근데문제는 엔드포인트에 유저 id치면 

    이지랄로 기존에 로그인했던 내 토큰은 유지된 채 다른유저의 엔드포인트로 오는 문제가 생겨버림 ㅠㅠ

    그리고 새로고침해도 쿠키삭제해도 저게 계속 남아있음 진짜 사람 미쳐버리겠음 로그인기능을 우째하는지.

     

    그래서 기초부터 다시잡고 가려고함

    https://www.youtube.com/watch?v=tosLBcAX1vk

    우선 기초부터 잡기위해 위 영상 보고옴.

    각 단어들이 뭐고는 알고있는지 언제써야하는지는 모르는나.

     

    사이트를 방문하면 브라우저는 서버에 요청을 보내.서버는 이에 응답하는데 응답에는 네가 찾던 페이지 정보가 있고 브라우저에 저장하고자하는 쿠키가 있을수도 있어.

    니코라는 사람이 있고 로그인을 하고자하면 유저명 그리고 pw를 서버로 보내.비번이 맞으면 서버는 세션db에 니코라는 유저를 생성하고 세션은 각각 고유 id가 있음. 세션 아이디는 쿠키를 통해 브라우저로 돌아오고 저장됨.

    따라서 내가 다른 페이지로 가면 브라우저는 세션id를 가지고 있는 쿠키를 서버에게 보냄 . 서버는 들어오는 쿠키를 보고 세션id와 함꼐 비교해. 아직까지 서버는 내가 모르고 요청만 알고있어. 서버가 세션에서 비교하면 ㅇㅋ 확인하고 웰컴니코를 띄움.

    암튼 이게 계속 반복됨.

     

    중요한건 유저정보는 모두 서버사이드에 있어.

    유저는 오직세션id만있어.

    쿠키는 그저 세션id를 전송하기 위한매개체일 뿐임.

    쿠키는 웹사이트에만 있어서 ios 안드로이드같은 경우는 토큰을 사용함토큰은 이상하게 생긴 ㅈㄴ긴 string이야.

    세션에대해 기억해야한거는현재 로그인한 유저들의 모든 세션 ID를 db에 저장하는거임

    즉 요청 ( 내 세션id가 있는 쿠키와함꼐 서버에 ) -> 서버에서 세션과 비교 ( 내쿠키를가지구 세션에 저장되어있는지 비교 ) -> 다음작업 수행

    즉 유저가 많으면 db리소스가 ㅈㄴ많이 필요함

     

    그래서 등장한게 jwt.는 토큰형식인데 서버에 요청을 보내려면 토큰을 서버에 보내야함.서버는 토큰을 받으면 유효한지보고 유효하면 우리를 유저로 인증함. 세션에선 세션id만 주면댐

    jwt는 유저인증 정보를 토큰에 생성하고, 토큰만 검사함 db를 볼필요없지만 암호화되어있지 않음.

    세션대 jwt장단점은

    세션을사용하면 서버무리가오지만 사용자를 제한해야하는경우 바로바로 쫓아낼수있어서 세션db만있으면댐. 주로 redis를사용

    jwt사용하면  유효여부만 검사하기때문에 db필요없지만 강제로그아웃과같은 경우는 못함

     

    결론은 유저별로없고 유저킥같은거 안해도되면 jwt쓰고 회원많아지고 강화유저관리필요하면 session쓰란거

    근데 jwt대충따라하면 코딩인생끝난다 - 라는 코딩애플의 말씀이 있다. 암호화가 안되어있어서 string이그대로나옴

    보안이슈 1 - alg none으로 하면안댐. hs256쓰면됨

    보안이슈 2 -디코딩이 매우 쉬워서 최소정보만 해야함

    보안이슈 3 - 시크릿키 대충적으면 abc같이쓰면 망함 bruteforce attack당함

    보안이슈 4 - jwt탈취 , refresh token ratation을 하자

    라고 코딩애플이 말했다 . 대충 보안이슈를...멍청하게하지말자잔하?

     

    이제 진짜 세션이랑 jwt토큰방식 이해했음.근데 뭐 어쩌라고임 아직까진 ㅠ

    ㄱㅡ래서 다음글엔

    https://fastapi.tiangolo.com/tutorial/security/oauth2-jwt/

     

     

    공식튜토 해석해보겠음

    블로그보면 일반화되지않은 지들만의 코드라서 ( 공식이랑 비슷하지만 나랑은 다름 )

    공식을 보면 뭐가 되지않을까 해서 ㅇㅇ 근데 영어야 ;;

    728x90

    댓글

Designed by Tistory.
티스토리 친구하기