Должен ли я возвращать код ответа 401 или 405 пользователю REST API без достаточного доступа?

Я разрабатываю API, который также будет иметь компонент аутентификации/авторизации.

Любой, независимо от статуса аутентификации, сможет писать (POST), но в зависимости от того, не авторизованы ли вы, как обычный пользователь или как администратор, и к какому ресурсу вы пытаетесь получить доступ, я собираюсь возвращать разные ответы для GET, DELETE и PUT.

Я пытаюсь найти наиболее подходящий код ответа для пользователя, который не прошел проверку подлинности и/или не авторизован.

Имейте в виду http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html:

Неавторизованный -> 401

Запрещенный -> 403

Метод Не разрешено -> 405

Давайте рассмотрим конкретные примеры:

  • Джон Доу не прошел аутентификацию, при DELETE он должен получить 401 или 405?
  • Эми аутентифицирована, но не авторизована. При удалении DELETE она должна получить 403 или 405?

(Имейте в виду, что даже несмотря на то, что Джон и Эми запрещены или авторизованы, это не означает, что они не могут получить доступ к одному и тому же ресурсу с помощью другой ГЛАГОЛ HTTP.)

Спасибо.

17
задан Chris W. 26 June 2012 в 04:13
поделиться