Сколько символов может содержать токены oauth access и секретный ключ oauth и каковы допустимые символы? Мне нужно сохранить их в базе данных.
Каковы характеристики токена OAuth?
Ответ 1
Я не уверен, что существуют явные ограничения. Спецификация не имеет. Тем не менее, токены OAuth часто передаются как параметры url и поэтому имеют некоторые из тех же ограничений. т.е. необходимо правильно закодировать и т.д.
Ответ 2
OAuth не указывает формат или содержимое токена. Мы просто используем зашифрованные пары имя-значение в качестве токена. Вы можете использовать любые символы в токене, но это намного проще, если маркер безопасен для URL. Мы достигаем этого, кодируя зашифрованный текст с помощью Base64 с безопасным URL.
Ответ 3
Как отмечают многие люди. Спецификация OAuth не дает вам точных указаний, но они говорят...
процитировано: http://tools.ietf.org/html/draft-hammer-oauth-10#section-4.9
"Серверы должны быть осторожны, чтобы назначить разделяемые секреты, которые достаточно длинные, и достаточно случайным образом, чтобы противостоять таким атаки по крайней мере на время, в течение которого общие секреты действительный".
"Конечно, серверам настоятельно рекомендуется ошибиться с осторожностью, и используйте самые длинные секреты разумные."
с другой стороны, вы должны рассмотреть максимальную длину URL-адресов браузеров:
Ответ 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.