web-dev-qa-db-fra.com

Quelle est la longueur de l'access_token dans Facebook OAuth2?

J'ai cherché sur Google et StackOverflow pour trouver une réponse à ma question, mais je ne parviens pas à en trouver une.

Je voudrais stocker le access_token dans ma base de données pour un accès hors connexion et je voudrais être sûr de spécifier la longueur correcte de ma colonne.

Je ne peux même pas trouver s'il s'agit simplement d'un nombre ou d'un mélange entre nombre et chaînes.

97
Cyril N.

Je travaille chez Facebook et je peux donner une réponse définitive à ce sujet.

Veuillez ne pas définir de taille maximale sur le stockage pour un jeton d'accès. Nous nous attendons à ce qu'ils augmentent et diminuent avec le temps à mesure que nous ajoutons et supprimons des données et modifions leur mode de codage.

Nous avons donné des indications à un endroit: 255 caractères. J'ai mis à jour l'article de blog contenant ces informations et mis à jour nos nouveaux documents de jetons d'accès afin d'inclure une note sur les tailles:

https://developers.facebook.com/docs/facebook-login/access-tokens/

Désolé pour la confusion.

127

Avec le passage récent de Facebook aux jetons d'accès chiffrés, la longueur du jeton d'accès peut aller jusqu'à 255 caractères. Si vous stockez le jeton d'accès dans votre base de données, la colonne devrait pouvoir prendre en charge au moins varchar (255). Voici un extrait du blog des développeurs de Facebook du 4 octobre 2011:

"Avec la migration du jeton d'accès crypté activée, le format du jeton d'accès a été modifié. Le nouveau format du jeton d'accès est complètement opaque et vous ne devez utiliser aucune dépendance du format de votre code. A varchar (255) champ suffira pour stocker les nouveaux jetons. "

Article complet sur le blog ici: https://developers.facebook.com/blog/post/572

70
Johnny Oshika

Cette réponse n'est plus correcte et je ne trouve pas de valeur corrigée dans la documentation de FB. Nous avons reçu des jetons d'accès de plus de 255 caractères. Nous passons de VARCHAR à un SMALLTEXT au lieu d'essayer de faire des choses à l'épreuve du temps.

27
rodbegbie

De la section 1.4 de The OAuth 2.0 Authorization Protocol ( draft-ietf-oauth-v2-22 )

Les jetons d'accès peuvent avoir différents formats, structures et méthodes d'utilisation (par exemple, propriétés cryptographiques) en fonction des exigences de sécurité du serveur de ressources. Les attributs de jeton d'accès et les méthodes utilisées pour accéder aux ressources protégées sortent du cadre de la présente spécification et sont définis par des spécifications associées.

J'ai cherché le "cahier des charges" mais je n'ai rien trouvé de pertinent et à la section 11.2.2, il est indiqué

o Nom du paramètre: access_token
o Emplacement d'utilisation du paramètre: réponse d'autorisation, réponse de jeton
o Changer de contrôleur: IETF
o Document (s) de spécification: [[ce document]]

Ce qui semble indiquer que le paramètre access_token est défini dans cette spécification. Le paramètre est, je suppose, mais le jeton d'accès réel n'est pas complètement développé.

Mise à jour: la dernière version de cette écriture de la spécification ( draft-ietf-oauth-v2-31 ) inclut une annexe qui définit mieux ce à quoi s'attendre du paramètre access_token

A.12. Syntaxe "access_token"

The "access_token" element is defined in Section 4.2.2 and
Section 5.1:

  access-token = 1*VSCHAR

Cela signifie donc essentiellement que access_token doit comporter au moins un caractère, mais il n'y a pas de limite à la durée définie dans cette spécification.

Notez qu'ils définissent VSCHAR =% x20-7E

8
Josh

Le jeton d'accès à Facebook peut comporter plus de 255 caractères. J'ai eu beaucoup d'erreurs comme ActiveRecord::StatementInvalid: PG::StringDataRightTruncation: ERROR: value too long for type character varying(255) où la valeur était un jeton d'accès facebook. N'utilisez pas la colonne string type car sa longueur est limitée. Vous pouvez utiliser la colonne text type pour stocker les jetons.

4
palinium

Récemment, notre application les a vus depuis plus de 100 caractères. Je suis toujours à la recherche de documentation pour pouvoir déterminer une taille de champ "sûre" pour eux.

2
Matt Miller

Je mettrai à jour la réponse à partir du temps passé.

À partir de la documentation OAuth2,

La taille de la chaîne de jeton d'accès n'est pas définie par cette spécification. Le client doit éviter de formuler des hypothèses sur la taille des valeurs. Le serveur d'autorisation doit documenter la taille de toute valeur émise.

(Section 4.2.2 de ce document )

Remarque: Facebook utilise OAuth2, comme indiqué sur cette page .

Alors maintenant, aucune information ne semble être disponible sur le portail des développeurs de Facebook sur la longueur du jeton OAuth. Yahoo semble utiliser un jeton de 400 bits, il est donc préférable de supposer qu'un TEXT La colonne dans MySQL est plus sûre qu'un varchar.

2
Cyril N.