Каковы характеристики токена OAuth? - PullRequest
22 голосов
/ 12 июля 2009

Сколько символов может быть oauth-доступ токен и oauth-секрет доступа и какие разрешенные символы? Мне нужно хранить их в базе данных.

Ответы [ 7 ]

11 голосов
/ 12 июля 2009

Я не уверен, что есть какие-либо явные ограничения. Спецификация не имеет . При этом токены OAuth часто передаются в качестве параметров url и поэтому имеют некоторые ограничения. т.е. должны быть правильно закодированы и т. д.

4 голосов
/ 04 августа 2009

OAuth не указывает формат или содержимое токена. Мы просто используем зашифрованные пары имя-значение в качестве токена. Вы можете использовать любые символы в токене, но это намного легче обрабатывать, если токен является URL-безопасным. Мы достигаем этого, кодируя зашифрованный текст с помощью безопасной для URL Base64.

2 голосов
/ 01 августа 2013

Если вы читаете спецификацию, там написано:

Сервер авторизации выдает зарегистрированному клиенту клиента
идентификатор - уникальная строка, представляющая регистрацию
информация, предоставленная клиентом. Идентификатор клиента не является
секрет; он предоставляется владельцу ресурса и НЕ ДОЛЖЕН использоваться
один для аутентификации клиента. Идентификатор клиента уникален для
сервер авторизации.

Размер строки идентификатора клиента не определен этим
Спецификация. Клиент должен избегать предположений о
размер идентификатора. Серверу авторизации СЛЕДУЕТ документировать размер
любого идентификатора, который он выдает.

Во-вторых, токен доступа следует отправлять как заголовок, а не как параметр URL.

Авторизация: Носитель <токен>.

2 голосов
/ 03 марта 2010

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

цитируется с: http://tools.ietf.org/html/draft-hammer-oauth-10#section-4.9

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

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

с другой стороны, вы должны учитывать максимальную длину URL браузеров:

см .: http://www.boutell.com/newfaq/misc/urllength.html

1 голос
/ 12 июля 2009

Маркер OAuth представляет собой последовательность байтов произвольного размера, а не символов. В URL он кодируется с использованием стандартных механизмов экранирования URL:

  unreserved = ALPHA, DIGIT, '-', '.', '_', '~'

Все, что не зарезервировано, кодируется%.

Я не уверен, говорите ли вы просто о параметре oauth_token, который передается. Как правило, дополнительные параметры также должны храниться и передаваться, такие как oauth_token_secret, oauth_signature и т. Д. Некоторые из них имеют разные типы данных, например, oauth_timestamp - это целое число, представляющее секунды с 1970 года (закодированное в десятичных цифрах ASCII).

0 голосов
/ 28 июня 2017

Допустимые символы для токена OAuth ограничены ограничениями значения заголовка HTTP, поскольку токен OAuth часто отправляется в заголовке HTTP «Авторизация».

Допустимые символы для заголовков HTTP указываются с помощью https://tools.ietf.org/html/rfc7230#section-3.2.6. В качестве альтернативы вы можете проверить код проверки заголовка HTTP некоторых популярных библиотек HTTP-клиентов, например, см. Headers.checkNameAndValue () util из инфраструктуры OkHttp : https://github.com/square/okhttp/blob/master/okhttp/src/main/java/okhttp3/Headers.java

И это еще не все. Я бы не включил разделитель заголовков HTTP (; и многие другие) и символы пробелов ('' и '\ t') и двойные кавычки (") (см. https://tools.ietf.org/html/rfc7230#section-3.2.6), так как для этого потребуется экранировать токен OAuth перед использованием в заголовке HTTP. Часто токены используются людьми в запросах теста curl, и поэтому хорошие генераторы токенов не добавляют такие символы. Но прежде чем делать какие-либо предположения, вы должны проверить, какие символы могут генерировать генератор токенов Oauth, с которым работает ваш сервис.

0 голосов
/ 11 августа 2014

Если говорить точнее, даже если спецификация Oauth ничего не говорит, если вы используете java и mysql, тогда это будет 16 символов, поскольку мы обычно генерируем токены, используя UUID, и сохраняем их как BINARY (16) в базе данных. Я знаю эти детали, так как недавно я занимался разработкой с использованием OAuth.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...