2013-07-29 1 views
0

채널과 REST를 통해 GAE 서버와 통신하는 Android 앱이 있습니다.일반 채널로 토큰 채널 토큰

  1. 클라이언트가
  2. 서블릿이 채널을 만들고 나머지는
  3. 다른 토큰 액세스로 채널 토큰을 제공 호출 않는 토큰
  4. 클라이언트를 제공하는 서블릿 자격 증명을 제공합니다 :이 같은 일반적인 액세스 토큰과 같은 채널 토큰을 사용할 수 채널을 통한 의사 소통

3 인 경우 무료로 머물고 싶습니다. 따라서 채널 토큰에서 클라이언트 ID의 암호를 해독해야합니다. 클라이언트 ID가 토큰에 암호화되어 있지만 API 호출을 추출하지 못했습니다.

채널 토큰에 대한 클라이언트 ID를 가져 오는 데 사용할 수있는 다른 API가 있습니까?

그렇지 않으면 토큰 값을 줄이는 채널 토큰과 클라이언트 ID의 매핑을 유지해야합니다. memcache가이 매핑을 유지하는 적절한 메커니즘일까요?

thx

답변

0

이것은 흥미로운 개념입니다. 조심하면 일할 수 있습니다.

처음에는 HTTPS를 통해 토큰을 전송하는 경우에만 안전합니다.

토큰 및 채널 시간이 초과되어 있으므로 채널을 너무 자주 다시 만들어야합니다.

인터넷 연결 상태가 좋지 않아 채널이 약간 이상합니다. 인터넷 연결이 끊어지면 나중에 채널이 작동하는 경우가 있습니다. 때로는 다시 만들어야 할 수도 있습니다.

액세스 토큰을 통해 클라이언트 ID를 확인하거나 가져 오는 방법이 없습니다. 따라서 이것을 보안으로 사용하려면 데이터를 원래 요청으로 되돌려 보내지 말고 채널에 데이터를 보내면됩니다. 또한 서버의 클라이언트 ID와 액세스 토큰간에 고유 한 매핑을 저장해야합니다. 그리고 토큰이 시간 초과되었는지 여부를 서버 측에서 알기가 어렵 기 때문에 정확하지 않을 수 있습니다. 대부분의 상황에서 실제로 데이터가 필요한 경우 memcache만으로는 적절한 메커니즘이 아니므로 memcache가 플러시되는 경우 데이터 저장소에서 백업해야합니다.

내가 가장 걱정하는 점은 나중에 채널에서 다시 가져온 데이터로 REST 통화 요청을 수동으로 연결해야한다는 것입니다. 증분 카운터를 ID로 사용하면 충분히 쉽게이 작업을 수행 할 수 있지만 회신을받지 못하고 재 시도해야하는 경우를 처리해야합니다. 세션 ID를 사용하면 더 쉬운 방법이 될 수 있습니다.

+0

답장을 보내 주십시오. 물론 모든 통신은 SSL을 통해 이루어질 것입니다. REST 호출에 HTTP 응답을 사용하지 않아야하는 이유는 무엇입니까? 서블릿은 누가 요청했는지 직접적으로 응답 할 수 있습니다. 대부분의 다른 토큰과 마찬가지로 클라이언트 ID를 토큰에서 직접 읽는 것이 가장 간단합니다. Memcache는 transistent이며 토큰과 채널도 마찬가지입니다. 따라서 둘 중 하나가 사라지면 클라이언트는 새 채널을 요청해야합니다. – user2583621