Правильный заголовок WWW-Authenticate для провайдера OAuth

В спецификации OAuth 1.0 предлагается отвечать следующим WWW- Аутентифицировать заголовок:

WWW-Authenticate: OAuth realm="http://server.example.com/"

Уместно ли добавить какие-либо другие информативные данные в этот заголовок? В случае, если запрос на защищенный ресурс не пройден, будет ли разумно включить некоторую информацию о том, почему? Такие как:

WWW-Authenticate: OAuth realm="http://server.example.com/", access token invalid

Или это противоречит цели заголовка ответа?


person Jon Nylander    schedule 01.12.2011    source источник


Ответы (3)


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

person Gian    schedule 01.12.2011
comment
Ваши ответы и ответы Тома были примерно одинаковыми, но я проверю ваш ответ, поскольку он содержал ссылку на рассматриваемый RFC. - person Jon Nylander; 07.12.2011
comment
Спасибо. В этом случае я поддержу ответ Тома ради великой справедливости, учитывая, что мы ответили где-то в течение одной минуты. - person Gian; 07.12.2011

Примечание для тех, кто только что наткнулся на это: спецификация токена-носителя OAuth 2.0 добавляет "error", "error_description" , и "error_uri" в заголовке "WWW-Authenticate" для сообщения дополнительной информации об ошибке, а также указывает, когда их следует и не следует использовать.

E.g.:

 HTTP/1.1 401 Unauthorized
 WWW-Authenticate: Bearer realm="example",
                   error="invalid_token",
                   error_description="The access token expired"
person jcl    schedule 24.11.2015

Это противоречит спецификации, и если бы это было не так, это, вероятно, было бы что-то вроде:

realm="http://server.example.com", oauth_error="access token invalid"

Я бы рекомендовал использовать тело ответа для подобных вещей или, может быть, заголовок X-OAuth-Error.

person Tom van der Woerdt    schedule 01.12.2011
comment
Спасибо, вы правы конечно. Я уже сейчас использую тело ответа для этих типов сообщений. Однако некоторые библиотеки, кажется, ожидают немного больше информации из заголовка. Хотя они могут быть плохо реализованы. - person Jon Nylander; 07.12.2011