Какова длина маркера доступа в Facebook OAuth2?
Я искал в Google и StackOverflow, чтобы найти ответ на мой вопрос, но я не могу найти.
Я хотел бы сохранить access_token в моей базе данных для автономного доступа, и я хотел бы быть уверен, чтобы указать правильную длину моего столбца.
Я не могу даже найти, если это просто число или сочетание чисел и строк.
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