web-dev-qa-db-ja.com

Facebook OAuth2のaccess_tokenの長さは?

GoogleとStackOverflowで検索して質問への回答を見つけましたが、見つかりません。

オフラインアクセスのためにaccess_tokenをデータベースに保存し、列の正しい長さを必ず指定したいと思います。

数字だけなのか、数字と文字列の組み合わせなのかさえわかりません。

97
Cyril N.

私はFacebookで働いており、これについて決定的な答えをすることができます。

アクセストークンの最大サイズをストレージに入れないでください。データを追加および削除し、エンコード方法を変更すると、時間の経過とともに拡大および縮小することが予想されます。

255文字であることについて1か所でガイダンスを行いました。その情報を含むブログ投稿を更新し、新しいアクセストークンドキュメントを更新して、サイズに関するメモを追加しました。

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

混乱させて申し訳ありません。

127

Facebookの最近の暗号化されたアクセストークンへの移行により、アクセストークンの長さは最大255文字になります。データベースにアクセストークンを保存する場合、列は少なくともvarchar(255)に対応できる必要があります。以下は、2011年10月4日のFacebookの開発者ブログからの抜粋です。

」暗号化アクセストークンの移行を有効にすると、アクセストークンの形式が変更されます。新しいアクセストークンの形式は完全に不透明であり、コードの形式に依存しないでください。Avarchar(255)フィールドは、新しいトークンを保存するのに十分です。 "

完全なブログ投稿はこちら: https://developers.facebook.com/blog/post/572

70
Johnny Oshika

この答えはもはや正しくなく、FBのドキュメントで修正された値を見つけることができません。 255文字を超えるアクセストークンを受け取っています。将来を保証するために、代わりにVARCHARからSMALLTEXTに移行しています。

27
rodbegbie

The OAuth 2.0 Authorization Protocolのセクション1.4から( draft-ietf-oauth-v2-22

アクセストークンは、リソースサーバーのセキュリティ要件に基づいて、さまざまな形式、構造、使用方法(暗号化プロパティなど)を持つことができます。保護されたリソースへのアクセスに使用されるアクセストークン属性とメソッドは、この仕様の範囲外であり、関連する仕様で定義されています。

「コンパニオン仕様」を探しましたが、関連するものは見つかりませんでした。セクション11.2.2には次のように記載されています。

oパラメーター名:access_token
oパラメーターの使用場所:承認応答、トークン応答
oコントローラーの変更:IETF
o仕様文書:[[この文書]]

これは、access_tokenパラメーターがこの仕様内で定義されていることを示しているようです。パラメータは推測しますが、実際のアクセストークンは完全に具体化されていません。

更新:この仕様書の最新版( draft-ietf-oauth-v2-31 )には、access_tokenパラメーターから何を期待するかを定義する付録が含まれています

A.12。 「access_token」構文

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

  access-token = 1*VSCHAR

したがって、本質的にこれが意味することは、access_tokenは少なくとも1文字の長さでなければならないということですが、この仕様で定義される長さに制限はありません。

VSCHAR =%x20-7Eを定義していることに注意してください

8
Josh

Facebookアクセストークンは255文字より長くすることができます。値がfacebookアクセストークンであるActiveRecord::StatementInvalid: PG::StringDataRightTruncation: ERROR: value too long for type character varying(255)のような多くのエラーがありました。 stringタイプの列は長さが制限されているため使用しないでください。 text type列を使用してトークンを保存できます。

4
palinium

最近、私たちのアプリは100文字を超える文字を見ています。私はまだドキュメントを探しているので、それらの「安全な」フィールドサイズを把握できます。

2
Matt Miller

費やした時間から答えを更新します。

OAuth2ドキュメントから、

アクセストークン文字列のサイズは、この仕様では未定義のままです。クライアントは、値のサイズに関する仮定を避ける必要があります。認可サーバーは、発行する値のサイズを文書化する必要があります。

このドキュメント )のセクション4.2.2

注: このページ で述べたように、FacebookはOAuth2を使用しています。

したがって、Facebookの開発者向けポータルでOAuthトークン。Yahooは400ビットのトークンを使用しているようです。そのため、TEXT MySQLの列は、varcharより安全です。

2
Cyril N.