2012-06-15 3 views
1

좋아, 나는 그것이 무엇인지 정말로 안다. 오래 전 Facebook/Twitter API로 작업합니다. 그리고 그것은 작동합니다. 버그는 없습니다, 미안 해요 :). 그러나, 다음 일은 나를 괴롭힌다.내부적으로 Facebook/Twitter OAuth 토큰은 무엇입니까?

OAuth 제공 업체 측의 토큰은 무엇입니까? 나는 클라이언트 쪽에서 토큰만을 봅니다. 그러나 흥미로운 점이 하나 있습니다. 이해하기 쉽습니다.

기본적으로받는 토큰의 시간은 제한되어 있습니다. 그러나 오프라인 액세스로 API를 요청하면 토큰을 받으면 시간 제한없이 영원히 작동합니다. 이 방법으로 토큰을 OAuth 공급자 데이터베이스에 저장해야합니까? 그렇다면 사용자가 수십만 개의 토큰을 생성하지 못하도록 막는 것은 무엇입니까? 많은 토큰이 있고 그것들 모두가 시간 제한없이 데이터베이스에 저장된다면 어떨까요? 데이터베이스는 쓰레기 더미가됩니다. 이것이 진정한 방법입니까?

  1. 토큰은 액세스 권한 설정에 대한 간단한 ID입니다 그것을 할당, 각 토큰은 OAuth를 제공 측에 저장되는 :

    나는 두 개의 토큰이 저장되는 방법의 가정이있다.

  2. 토큰은 독립적 인 개념입니다. 액세스 권한이 암호화되어 토큰에 압축 된 다음 공급자 측에서 해독됩니다. Th 토큰 수명도 함께 포장됩니다.

두 번째 질문. 내 OAuth 공급자를 개발하고 싶다면 토큰을 저장하는 가장 좋은 방법은 무엇입니까?

답변

2

OAuth 토큰은 ID이며 정보가 없습니다. 사실 토큰에 실제 정보가 포함되어 있으면 해킹이 쉬워 지므로 좋지 않습니다. 공급자는 해당 토큰을 응용 프로그램 계정과 연결하고 필요한 정보를 자신의 데이터베이스에 저장합니다. 나는 Facebook에 대해 모르지만 Twitter OAuth 토큰은 소유자가 재생성하지 않으면 만료되지 않습니다.

OAuth를 할 때 사용자가 프로그램에서 작업하고있는 사용자를 알 수 있으며 사용자 데이터를 보유하기위한 자체 데이터베이스 테이블을 가질 수 있습니다. 사용자의 첫 번째 OAuth 인증에서 자격 증명을 획득하여 데이터베이스에 저장합니다. 그런 다음 서비스 (예 : Twitter)에 대한 모든 후속 쿼리에서 사용자가 다시 인증 할 필요가 없도록 해당 자격 증명을 다시로드합니다. 현재 자격 증명이있는 쿼리가 실패하면 어떤 이유로 오래된 자격 증명이 만료 된 경우 새 자격 증명을 다시 인증하고 저장해야 할 수 있습니다. 이렇게하면 시스템의 각 사용자에 대한 OAuth 토큰 만 있고 그 사용자의 수명을 관리 할 수 ​​있습니다.

관련 문제