Подтвердить что ты не робот

Каковы характеристики токена OAuth?

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

4b9b3361

Ответ 1

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

Ответ 2

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

Ответ 3

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

процитировано: http://tools.ietf.org/html/draft-hammer-oauth-10#section-4.9

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

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

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

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

Ответ 4

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

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

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

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

Авторизация: Bearer < Маркеp > .

Ответ 5

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

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

Все, что не отменено, получает% -encoded.

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

Ответ 6

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

Допустимые символы заголовков HTTP определяются https://tools.ietf.org/html/rfc7230#section-3.2.6. В качестве альтернативы вы можете проверить HTTP-код проверки подлинности некоторых популярных HTTP-клиентских библиотек, например, см. Headers.checkNameAndValue() для использования структуры 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), поскольку для использования в HTTP-заголовке требуется избегать токена OAuth. Часто токены используются людьми в запросах на завихрение, и поэтому хорошие генераторы токенов не добавляют таких символов. Но вы должны проверить, что символы могут генерировать генератор токенов Oauth, с которым работает ваша служба, прежде чем делать какие-либо предположения.

Ответ 7

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