2013-04-18 2 views
3

Peut-être que quelqu'un pourrait me clarifier, comme je ne trouve pas cela clairement écrit dans la documentation ...Plusieurs jetons d'accès OAuth2 pour une application unique?

J'ai une seule application, qui fonctionne sur plusieurs machines. Avec OAuth2, je dois obtenir un jeton d'accès pour pouvoir utiliser l'API Google. Dois-je utiliser single Accéder au jeton sur tous mes hôtes et veiller à ce qu'il soit synchronisé entre eux (ce qui augmente le niveau de complexité, une fois le jeton expiré - il doit être actualisé et distribué sur tous les hôtes), ou est possible que chaque hôte puisse obtenir son propre jeton et le mettre en cache localement?

Je ne suis pas vraiment sûr que la seconde option soit sûre (bien que ce soit plus facile à implémenter), car la documentation écrit que le jeton peut devenir invalide une fois qu'il est actualisé. Est-il possible que, pendant qu'un hôte crée son propre jeton, tous les autres jetons (provenant d'autres hôtes) deviennent automatiquement invalides?

Répondre

3

Je suppose que votre application est une application Web déployée dans un cluster, est-ce correct?

Y at-il un état de session distribué sur le cluster? Si c'est le cas, ajoutez le jeton d'accès à la session.

En théorie, vous pouvez avoir plusieurs jetons d'accès, mais ne comptez pas dessus. Il y a des limites de débit que vous pouvez atteindre, mais si seulement occasionnellement une machine obtient plusieurs jetons d'accès, ce n'est pas un problème.

2

Puisqu'il s'agit d'une application, un jeton d'accès est la méthode préférée. Si vous avez plusieurs jetons d'accès, vous devez traiter chaque machine comme une application distincte et l'utilisateur final doit autoriser chaque machine séparément. Pour éviter l'actualisation en cascade (la machine reçoit une réponse expirée et se met à rafraîchir, puis la machine deux fait la même chose avant que la machine n'obtienne le nouveau jeton d'accès), vous aurez besoin d'une logique de synchronisation partout où vous stockez les jetons. Un indicateur d'état simple dans le magasin de données (Utiliser un jeton existant, Obtenir un nouveau jeton) peut aider à la synchronisation.

Questions connexes