2012-05-09 3 views
1

JS API의 FB.login 메소드는 사용자 ID를 포함하여 사전에 사용자 정보가 포함 된 응답을 반환합니다. 클라이언트 측 JS API에 존재합니다.사용자 ID의 Facebook JS API 로그인 보장?

facebok 캔버스 앱을 실행하는 서버로 다시 전송하려면 서버가 사용자 ID가 변경되지 않았 음을 신뢰할 수 있어야합니다. 응답과 함께 서명 된 체크섬이 없으므로 어떻게 보증 할 수 있는지 알 수 없습니다.

POST 서명 된 요청에서 사용자 ID를 가져와 세션에 저장하는 방법을 알 수 있습니다.하지만 그럴 것 같지 않습니다. 이 작업을 안전하게 수행하는 방법은 그보다 덜 바로크 적이라는 것이 확실합니다.

아이디어가 있으십니까?

답변

1

서버에 Server-Side authentication을 사용해야합니다.

사용자가 앱을로드하고 아직 인증하지 않은 상태에서 인증 대화 상자로 보내면 코드를 가져 와서 페이스 북 서버와 교환하여 액세스 토큰을 다시 가져 오면 "/ me"에 대한 그래프 API를 사용하고 사용자 데이터를 얻습니다.

또한 페이스 북이 캔버스에 게시 할 때 앱 비공개를 사용하여 서명 한 서명 된 요청을받을 때 디코딩 한 후 비밀 키와 대조하여 인증 여부를 확인할 수 있습니다. 또한 서명 된 요청에는 사용자 ID가 있으므로 보안이 유지된다는 것도 알고 있습니다.

서버 쪽 인증과 클라이언트 쪽 인증을 모두 사용하는 것이 좋습니다. 다른 토큰 (서버는 60 일, 클라이언트는 몇 시간)을 사용하고 둘 다 사용할 수 있습니다.

관련 문제