티스토리 뷰
현재 학교 교수님과 프로젝트를 하나 진행하고 있다.
자세한 내용은 말을 못하지만, 내가 spring-boot로 rest api기반 백엔드를 구축하고 다른 학생이 안드로이드로 이를 호출하는 방식이다.
물론 회원가입과 로그인이 필요하다.
나 : "교수님, 이거 회원가입 전부 구축하면 배보다 배꼽이 더 커질 것 같은데 그냥 oauth2로 소셜 로그인만 구축하는거 어떨까요?"
교수님 : "음.. 소셜 로그인은 당연히 되고, 자체 회원가입도 넣어야 하지 않을까?"
나 : "넵 해보겠습니다."
고로 모두 구축하게 됐다.
참고로, 스프링부트를 공부하기 시작한건 얼마 안됐다..
Spring-boot-oauth2와 Spring-security를 동시에 사용하며 소셜 로그인과 자체 회원가인/로그인을 구현하느라 한참 개고생을 했다. 어쨋든 애초에 처음에는 로그인 상태를 백엔드 서버의 DB에 세션으로 보관했다.
그런데 문제가 생겼다.
권한을 설정해둔 api를 호출하려면 세션으로 권한을 검사했는데, 안드로이드에서 이를 어찌할지 감이 안잡혔다는거.
물론 나는 백엔드 개발이긴 하지만.. 안드로이드 개발도 어느정도 하기에, HttpUrlConnection으로 어찌저찌 해보려고 했는데, 어찌 하는지 모르겠더라..
찾아보니 안드로이드용으로 RestTemplate이 있다길래 해봤는데 이것도 쫌..
더 찾아봤더니 충격..
모바일 기기는 연결이 불안정하기에 세션을 이용한 사용자 인증은 최근 추세에는 맞지 않는다는거..
JWT(Json Web Token)을 이용하라는 말을 듣고 JWT에 대헤 알아봤다.
간단하게 말하면, 최초 로그인을 하면 서버에서 "내가 인증한 토큰이야!"하고 클라이언트측에 토큰을 보내주고, 클라이언트는 이를 보관하고 있다가 요청을 보낼 때 request header에 이 토큰을 포함해서 보내면 서버에서 header의 토큰을 확인 후 유효하다면 이 요청을 수락, 실행한다는 것. 따라서 서버에서는 세션을 유지할 필요가 없기에 확장성이 보장된다.
세션을 이용한 사용자 인증을 버리고 JWT기반 인증으로 바꾸려는데 몇 가지 걸리는 점이 있다.
관련 포스트들을 찾아보면 서버측에서 최초 로그인시 확인 후 클라이언트에 JWT를 보내주는 것, 요청을 받았을 때 header를 확인하는 것 등은 있는데, 클라이언트 측에서 이 JWT를 받아서 저장하는 내용에 대한 내용은 찾기 어려웠다는 것..
대부분의 포스트들은 insomnia를 이용해서 따로 header를 구성해서 보내는 방식으로 "이거 잘 작동돼!"라고 하고 있었으나, 브라우저로 접속하는 유저들의 경우 이를 어찌하란 말인가? 총체적 난국...
또 찾아보니 js등으로 캐시하는 방법 등을 말하고 있으나, 아직 정확히 감이 안잡혔다.
공부하는 도중 현자타임이 오지게 와서 이 글을 쓰고 있으나, 이제 또 찾아봐야지...
물론 새로운 공부를 하는 것은 즐겁다. 이 프로젝트를 진행하며 새로 알게 된 지식도 많고, 잘 작동하는 것을 보면 뿌듯하기도 하다.
그런데 최근 본 유튜브 영상이 떠오르는 이유는 뭘까..
유저가 프론트엔드 개발자에게 : "와! 너가 짠 웹사이트 정말 보기 좋아! 깔끔한데?"라는 반응을 얻을 수 있지만,
유저가 백엔드 개발자에게 : "와! 너가 짠 DB구조랑 api호출 방식 정말 어썸한데?"라는 반응을 얻는 것은 불가능 하다는 것..
씁쓸하지만, 그래도 이렇게 고생하다가 완성되면 기분이 좋아지는 것은 항상 신선하다.
난 개발자가 천직인건가..
'공부' 카테고리의 다른 글
JWT 적용 성공 및 다음 난관 (JPA 종속성 문제 - CASCADE를 설정했는데 왜?, @OneToMany는 왜 쓰지?) (0) | 2020.06.03 |
---|---|
winform project _세계 그림판(캐치마인드 비스무리) (0) | 2019.06.09 |
OSI 7 Layer table update(2019.06.09) _update device (0) | 2019.06.09 |
2019학년도 1학기 데이터통신 중간고사 대비 정리 (0) | 2019.04.16 |
2019학년도 1학기 컴퓨터구조 중간고사 대비 정리 (0) | 2019.04.14 |
- Total
- Today
- Yesterday
- 브루트포스
- 알고리즘
- 정렬
- Dynamic Programming
- 오픈소스
- 백트래킹
- 백준
- 구현
- c
- 코딩
- LG
- DFS
- 프로그래머스
- DP
- 인공지능
- 파이썬
- 완전탐색
- 1932
- 컨트리뷰톤
- PyPy3
- c++
- BaekJoon
- webOS
- 피보나치
- 카카오
- 한화큐셀
- BFS
- 동적 계획법
- 플로이드 와셜
- 이분탐색
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |