게임을 만듭니다.
유니티 그리고 Node.js 인증모듈 passport 사용하기 본문
문제인식의 순서
- 게임클라이언트와 게임서버를 만들어야지
- 사용자는 로그인을 할것이고 서버는 사용자의 아이디와 비밀번호를 받아 데이터베이스에서 조회해본 후 로그인처리를 하겠지
- 로그인이 완료된 사용자는 게임을 하는 가운데 이런저런 요청(내 인벤토리의 아이템리스트를 내놓거라)을 할것이고 서버는 받은 요청에대해 누가 요청한건지를 알아야겠지
- 웹이라고 생각하면 일단 생각나는것이 세션과 세션아이디를 유지하기위한 쿠키
- Node.js에는 passport라는 인증모듈이 있는데 세부적인 인증방식에 따라 passport-local, passport-http, passport-facebook (등등등) 모듈이 있지
- 세션과 쿠키를 사용하는것은 passport-local 이지
- 그럼 Node.js와 passport-local을 이용해서 게임서버를 만들고
- 유니티와 통신을 하도록 해보자
문제해결과정 이슈사항
- Node.js 쪽은 훌륭한 예제/강좌가 많다.
- https://www.youtube.com/watch?v=twav6O53zIQ 이 영상은 큰 도움이 되었다.
- 문제는 유니티쪽에서의 처리
- 유니티쪽에서 로그인페이지를 호출하여 response header의 SET-COOKIE를 적절히 처리해야 한다.
- http://bspfp.pe.kr/535 이 페이지의 내용이 큰 도움이 되었다. 원문링크가 깨져서 아쉽. 간단히 설명하자면
- 로그인완료후 넘어온 데이터가 1로 시작하면 로그인 성공으로 가정한다(이부분은 무어가 되었든 로그인 성공 플래그 같은거를 체크할수있도록 변경해서 사용해야함)
- response header에 SET-COOKIE를 key로한 요소가 있다면 고녀석을 저장해둔다.
- 그리고 일반 리퀘스트를 날릴 때 헤더에 쿠키정보를 넣어서 보낸다.(NormalRequest 메소드 참조)
- 유니티에서 WWW 의 constructor는 5개인데 이중 url만 사용하는 하나를 제외하곤 다 POST요청이다.(서버측에서도 post 요청을 기대해야겠죠)
- 근데 header를 같이보내야 되니깐 결국 POST요청을 사용해야 한다.
- 결국 파라미터가 (url, postData, headers) 인 constructor를 사용해야 하는데 여기서 postData가 null이면 요청을 보내지 않는다.(가짜 데이터라도 넣어서 테스트하자)
- 이걸 몰라서 혼자 생 고생을 함(왜 안돼지..... 왜안됒...)
새로운 문제인식
- 세션이나 토큰말고 http basic auth를 사용해보자
- 그렇다면 passport-basic 이지
- https://www.youtube.com/watch?v=twav6O53zIQ 이 영상은 계속 도움을 준다.
- 유니티에셔 신경써줄 점
- 헤더에 쿠키를 넣는것이 아니라 인증방식을 넣어줘야 함
- http://docs.unity3d.com/ScriptReference/WWWForm-headers.html 이 문서를 참고합니다.
- 비번은 잘 암/복호화 하셔야하구요
- 로그아웃이 안됀다???
- 서버측에서 req.logout() 같은것은 작동하지 않는다
- http://stackoverflow.com/questions/233507/how-to-log-out-user-from-web-site-using-basic-authentication 이 문서를 참고합니다
- 로그아웃 컨트롤러에서 401을 보내줍니다.
해볼것들
https를 사용해보자
참고자료
- https://blog.outsider.ne.kr/1149 [HTTPS로 보안 강화하기]
- https://blog.outsider.ne.kr/1178 [Lets' Encrypt로 무료로 HTTPS 지원하기]
'old_unclassfied' 카테고리의 다른 글
Equipholic (0) | 2016.02.09 |
---|---|
게임을 만든다며? (0) | 2016.02.07 |
구글 플레이 게임 서비스를 통한 인증 및 검증 (4) | 2016.01.27 |
읽고 싶은 책 : D3.js 실시간 데이터 시각화 : Node.js 환경에서 실시간 대시보드 만들기 (0) | 2016.01.20 |
jamstik plus 환불기... (0) | 2016.01.19 |
Comments