Лучшее, что я могу предложить, - это код состояния HTTP 401 с заголовком WWW-Authenticate.
Проблема с запросами 403 заключается в RFC 2616 состояниях «Авторизация не поможет, и запрос НЕ СЛЕДУЕТ повторять». (т.е. не имеет значения, аутентифицированы вы или нет, вы никогда не получите доступ к этому ресурсу).
Проблема с 401 запросами заключается в том, что они "ДОЛЖНЫ включать поле заголовка WWW-Authenticate". * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * [1012] не нарушает спецификацию использования пользовательского значения в заголовке WWW-Authenticate.
Я не вижу никакой причины в RFC 2617 , почему состояние HTTP 401 в сочетании с настраиваемым заголовком WWW-Authenticate, как это, не будет в порядке:
WWW-Authenticate: MyAuthScheme realm="http://example.com"
Спецификация oAuth действительно, кажется, делает именно это, поскольку они рекомендуют это (хотя, на мой взгляд, у них странная интерпретация RFC):
WWW-Authenticate: OAuth realm="http://server.example.com/"
Похоже, что это не санкционировано RFC, но на самом деле я не вижу, чтобы оно им было запрещено (похоже, оно не конфликтует с какими-либо ОБЯЗАТЕЛЬНЫМИ или НЕ ДОЛЖНЫМИ, СЛЕДУЕТ или НЕ СЛЕДУЕТ НЕ выполнять условия).
Хотелось бы, чтобы был более конкретный код состояния HTTP для тайм-аутов и для таких вещей, как недопустимые токены CSRF, чтобы это было понятнее.