Skip to content

SNS Login Logic, Auth 논의

정수원 edited this page Oct 27, 2020 · 1 revision

출처

출처

  1. 사용자(Resource Owner)가 서버에게 로그인을 요청합니다.
  2. 서버는 사용자에게 특정 쿼리들을 붙인 페이스북 로그인 URL을 사용자에게 보냅니다.
  3. 사용자는 해당 URL로 접근하여 로그인을 진행한 후 권한증서(code)를 담아 서버에게 보냅니다.
  4. 서버는 해당 권한 증서를 Facebook의 Authorization Server로 요청합니다
  5. 서버는 권한 증서를 확인 후, Access Token, Refresh Token, 유저의 정보(고유 id 포함) 등을 돌려줍니다.
    • 여기서 프로필 이미지나 이메일 주소, 이름 등을 얻을 수도 있는데 이는 초기에 관리자가 권한 설정을 어디까지 하느냐에 따라 다릅니다. 페이스북 이름에 대해서만 접근할 수 있는 권한을 설정하면 이름 값만 Authorization Server에서 돌려줄 것입니다.
  6. 받은 고유 id를 key값으로 해서 DB에 유저가 있다면 로그인, 없다면 회원가입을 진행합니다.
  7. 로그인이 완료되었다면 세션/쿠키 , 토큰기반 인증 방식을 통해 사용자의 인증을 처리합니다.
  • 우리가 만들 서버에서 OAuth를 이용하기 위해서는 사전에 OAuth에 등록하는 과정이 필요합니다. 등록 후 APP_ID와 CLIENT_ID 등을 보내야 OAuth 에서는 어느 서비스인지를 알 수 있습니다.
  • 페이스북 로그인을 인증을 이용하는 경우, 대부분은 Resource Server(페이스북 자체 API)를 사용하지 않습니다. 따라서 Access Token, Refresh Token은 실제로 쓰이지 않습니다. 우리의 서버에서 access token을 검증할 수도 없을 뿐더러 인증의 수단으로 활용하기엔 부족한 점이 많습니다. 따라서 보통 7번 절차처럼 Authorization Server로 부터 얻는 고유 id값을 활용해서 DB에 회원관리를 진행합니다.

Auth 기능 논의

  • 일반 회원가입 클릭 → 회원가입 폼 입력 ,제출 → 회원가입 처리
  • SNS 로그인 클릭 → 회원이 아니면 : 회원가입 동의? → 동의하면 : 회원가입 처리(저장) → 자동로그인
  • SNS 로그인 클릭 → 회원이 아니면 : 회원가입 처리 → 자동로그인
  • SNS 로그인 클릭 → 회원이면 → 로그인
  • 로그아웃 클릭 → 로그아웃

Clone this wiki locally