2016-10-28 2 views
0

Сервер OAuth (включая поставщиков Open ID Connect) должен проверить nonce клиента, если он указан, чтобы убедиться, что тот же самый не использовался за последние 5 минут.Что такое код ошибки OAuth для вывода, когда nonce уже используется?

Все это имеет смысл, но мой вопрос просто, что ли сервер возвращается в ?error=..., если он нашел, что nonce уже был использован?

Я сделал несколько десятков поисков в Интернете, в RFC и в каком-то SDK-коде, но я не могу найти, где будет возвращена ошибка и каков будет код.

+0

Откуда:/spec/RFC вы получили это требование? –

+0

Возможно, я запутал ответственность клиента с сервером, потому что нет явного требования, указанного в спецификации Open ID Connect или RFC от OAuth. Ни одна из спецификаций на самом деле не говорит *, что делать с nonce, кроме как «использовать его для предотвращения повторных атак». Учитывая это, мне кажется разумным, что если сервер дважды увидит одно и то же слово в коротком окне, он вернет ошибку. Мысли? –

ответ

1

The nonce предназначен для предотвращения повторных атак на Клиента токена, созданного Поставщиком. Клиент отправляет nonce поставщику, чтобы Поставщик мог включить его в токен. Это означает, что Клиенту необходимо отслеживать выпущенные нонцы, а не Поставщик. На самом деле OpenID Connect SPEC говорит, что даже в http://openid.net/specs/openid-connect-core-1_0.html#IDToken:

[кроме включения его в знаке] авторизация Серверы ДОЛЖНА выполнять никакой другой обработки на Нонс значений не используется

Так не требуется никакой код ошибки здесь, поскольку Провайдер не «ничего» делает с помощью nonce, кроме включения его в токен.

+0

Что меня смутило, так это то, что он не сказал никакой другой обработки * на *, а не * с *. Я понял, что это похоже на параметр «state», который нельзя сбрасывать, но в этом случае сервер может что-то с этим сделать ... иначе почему бы просто не включить nonce в состояние? –

+0

Nonce и state обслуживают разные клиентские цели. –

+0

Понял, но поскольку сервер относится к ним одинаково (например, игнорировать), клиент может включать все, что захочет в 'state' *, включая *' nonce'. У вас может быть второй nonce и т. Д. –

Смежные вопросы