-
Notifications
You must be signed in to change notification settings - Fork 0
DOCS.OAuth
negu63 edited this page Aug 31, 2021
·
5 revisions
Github OAuth를 달게 되었다.
처음에는 OAuth에 필요한 프로세스를 모두 서버 안에서 처리하려고 했지만, 내가 아는한 그건 불가능했다. 그래서 방법을 생각해봤다.
- API 서버에 있는 GitHub 주소를 받아온다.
- 받아온 주소로 이동한다.
- Github OAuth를 통해 인증한다.
- callback url을 인증을 위한 페이지로 연결한다.
- 인증 완료!
----- 민상 생각
- 프론트에서 API 서버에 있는 Github 주소를 받아와서 상수로 저장해둔다.
- Github 로그인 클릭시 받아온 서버 주소로 직접 접근한다.
- Github OAuth 페이지로 리다이렉트 시킨다.
- 인증을 한다.
- callback url을 인증을 위한 프론트 페이지로 설정한다.
- 프론트 페이지로 이동한다.
- 프론트에서 url에 쿼리를 가져오는데 그 쿼리를 서버로 get요청으로 보낸다.
- 보내고 나서 성공하면 로그인 정보를 가져오고 프론트 메인화면으로 리다이렉트 시킨다.(7, 8에서 생긴 사이드이펙트는 사가로 처리한다.)
이런 프로세스를 거치면 될 것 같았다.
하지만,,, 다른 의견이 나왔다.
- API 서버로 요청을 하면 redirect를 바로 시켜서 GitHub OAuth 페이지로 이동된다.
- callback url을 API 서버로 설정해서, API 서버에서 결과를 받을 수 있도록 한다.
- 결과를 받아서 바로 페이지에서 인증을 처리한다.
------ 민상생각
- 프론트에서 API 서버에 있는 Github 주소를 받아와서 상수로 저장해둔다.
- Github 로그인 클릭시 받아온 서버 주소로 직접 접근한다.
- Github OAuth 페이지로 리다이렉트 시킨다.
- 인증을 한다.
- callback url을 서버로 설정한다.
- 서버로 이동한다.
- 인증을 처리하고 프론트로 리다이렉트 시킨다.
보기에는 단 한번의 요청으로 모든 것을 해결할 수 있는 것 처럼 보였다.
하지만 API에 들어가서 하는게 맞는가라는 의문이 들었다.
인스타그램도, velog도 OAuth를 할 때는 인증만을 위한 빈 페이지를 거치는데, 브라우저에서 API로 직접 접근해서 진행하는게 맞을까?
결국 API로 접근해서 GitHub OAuth 페이지까지 이동하는 것, 그리고 나서 결과는 인증만을 위한 빈 페이지를 거치게 되었다. 뭐가 맞는 방법인지 검색해봐도 아직 찾지 못했다. 뭐가 맞는 방법일까?
- 박기덕 : REST API를 사용하기 때문에 RESTful하게 만들기 위해서는 GET과 query의 조합으로 불러오는게 맞다고 생각한다.
- 서그림 : 이 부분에 대해 민상님과 기덕님께서 하는 토론을 꽤 오랫동안 들을 수 있었다. 그만큼 정답이 없는 문제이지 않을까 생각을 했다. 그래서 팀에서는 현 상황에서 더 구현이 빠르게 되는 쪽을 택하면 되지 않을까라고 이야기가 나왔고, 백엔드 코드가 이미 완성되어 있었기 때문에 프론트 코드를 수정하여 프론트에서 다시 요청하는 방식을 사용하기로 하였다. 정답이 없다면 팀에게 알맞게 !!! 가 진리라고 생각한다.
- 손원우 : 이 부분이 아마 가장 첨예하게 의견이 대립된 부분이지 않을까 싶다. 다른 사이트들도 참고했었는데 방법이 제각각이라서 더 그랬던 것 같다. 그림님의 의견에 동감한다! 정답보다는 팀 모두가 합의한 방향으로 가는 것이 맞다고 생각한다. It is what it is!
- 윤민상 : 기덕님 방법으로 하게되면 프론트에서 서버로 보내는 추가 비용이 생기게 된다. 브라우저에서 API로 직접 접근하면 안되는 걸까?? 합리적인 이유를 나는 찾지 못했다. 그것보다 프론트에서 추가로 처리할 비용이 더 크다고 생각했다. 그런데 인스타그램이나 velog같은 예시를 드시고 좀 찾아보니 내가 잘 몰라서 이게 맞다고 생각하는 것 같기도 하다. 프로젝트가 끝나고 좀 상세히 알아봐야겠다.