Должен ли кодироваться параметр области WWW-Authenticate? - PullRequest
0 голосов
/ 28 января 2019

При создании значения заголовка WWW-Authenticate для OAuth / OAuth1a требуется процентное кодирование параметров.Спецификация и реализации неоднозначны относительно того, должен ли параметр realm кодироваться в процентах или нет.

Раздел 5.4.1.Заголовок авторизации из спецификации гласит:

Параметры протокола OAuth отправляются в заголовок авторизации следующим образом:

  1. Имена и значения параметров кодируются для каждого параметраКодирование.
  2. Для каждого параметра за именем сразу следует символ «=» (код ASCII 61), символ «» (код ASCII 34), значение параметра (МОЖЕТ быть пустым) и еще один символ 'Символ «» (код ASCII 34).
  3. Параметры разделяются запятой (код 44 ASCII) и ДОПОЛНИТЕЛЬНЫМ линейным пробелом в соответствии с [RFC2617].
  4. ДОПОЛНИТЕЛЬНЫЙ параметр области добавляется и интерпретируется в соответствии с [RFC2617], раздел 1.2.

Например:

            Authorization: OAuth realm="http://sp.example.com/",
            oauth_consumer_key="0685bd9184jfhq22",
            oauth_token="ad180jjd733klru7",
            oauth_signature_method="HMAC-SHA1",
            oauth_signature="wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D",
            oauth_timestamp="137131200",
            oauth_nonce="4572616e48616d6d65724c61686176",
            oauth_version="1.0"

Если эти шаги должны быть выполнены по порядку, то кажется, что только специфичные для OAuth параметры предназначены для URL-кодирования,

Если эти шаги не предназначены для выполнения по порядку, то, возможно, параметр realm включен в шаг 1. Однако пример заголовка WWW-Authenticate в спецификации OAuth1a показываетобласть как realm="http://sp.example.com/", которая не является процентным кодированием двоеточия или косой черты.

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

Что является правильнымповедение для добавления параметра realm в заголовок WWW-Authenticate?

1 Ответ

0 голосов
/ 28 января 2019

Заголовок WWW-Authenticate и параметр realm, в частности, определяются rfc2617 и rfc7235 , которые ничего не говорят о кодировании. rfc7235 показывает пример, в котором пробелы в "Login to \"apps\"" не кодируются в процентах.

rfc2617 и rfc7235 являются полномочиями на WWW-Аутентифицировать заголовок и параметр realm, в то время как спецификация OAuth1a является только полномочием для дополнительных специфических параметров OAuth.Поэтому параметр realm должен не быть закодирован в процентах, а раздел 5.4.1 спецификации OAuth1a следует интерпретировать как говорящий только о Параметры протокола OAuth с учетом процентного кодирования.

...