Какова длина маркера доступа в Facebook OAuth2?



Я искал в Google и StackOverflow, чтобы найти ответ на мой вопрос, но я не могу найти.



Я хотел бы сохранить access_token в моей базе данных для автономного доступа, и я хотел бы быть уверен, чтобы указать правильную длину моего столбца.



Я не могу даже найти, если это просто число или сочетание чисел и строк.

661   7  

7 ответов:

Я работаю в Facebook, и я могу дать окончательный ответ об этом.

пожалуйста, не ставьте максимальный размер хранилища для маркера доступа. Мы ожидаем, что они будут расти и уменьшаться с течением времени по мере добавления и удаления данных и изменить, как они кодируются.

мы дали руководство в одном месте о том, что это 255 символов. Я обновил сообщение в блоге, в котором была эта информация, и обновил наши новые документы маркера доступа, чтобы включить примечание о размеры:

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

извините за сумбур.

с недавним переходом Facebook на зашифрованные маркеры доступа длина маркера доступа может составлять до 255 символов. Если вы храните маркер доступа в своей базе данных, столбец должен быть в состоянии разместить по крайней мере varchar(255). Вот выдержка из блога разработчика Facebook от 4 октября 2011 года:

" при включенной миграции зашифрованного маркера доступа формат маркера доступа изменился. Новый формат маркера доступа полностью непрозрачен, и вы не следует принимать какую-либо зависимость от формата в коде. А varchar (255) поле будет достаточно для хранения новых токенов."

полный пост в блоге здесь:https://developers.facebook.com/blog/post/572

этот ответ больше не является правильным, и я не могу найти исправленное значение в документах FB. Мы получаем маркеры доступа, длина которых превышает 255 символов. Вместо этого мы переходим от VARCHAR к небольшому тексту, чтобы попытаться защитить будущее.

из п. 1.4.The OAuth 2.0 Authorization Protocol (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. "синтаксис маркер доступа"

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

маркер доступа Facebook может быть длиннее 255 символов. У меня было много ошибок, как ActiveRecord::StatementInvalid: PG::StringDataRightTruncation: ERROR: value too long for type character varying(255) где значение было маркер доступа facebook. Не используйте string столбец тип, потому что его длина ограничена. Вы можете использовать text введите столбец для хранения маркеров.

в последнее время наше приложение видит их дольше, чем 100 символов. Я все еще ищу документацию, чтобы я мог выяснить "безопасный" размер поля для них.

Я буду обновлять ответ от времени.

из документации OAuth2,

размер строки маркера доступа остается неопределенным этой спецификацией. Клиент должен избегать делать предположения о размерах стоимости. Сервер авторизации должен документировать размер любого значения, которое он выдает.

(раздела 4.2.2 документ)

Примечание: Facebook использует OAuth2, как упоминалось на этот страница.

Итак, теперь на портале разработчиков Facebook нет информации о длине токена OAuth. Yahoo, похоже, использует токен длиной 400 бит, поэтому лучше предположить, что текстовый столбец в MySQL безопаснее, чем varchar.

Comments

    Ничего не найдено.