Параметр состояния OAuth 2.0 - PullRequest
0 голосов
/ 02 мая 2018

Я работаю с eBay API, используя OAuth в моем текущем приложении проекта Meteor.

Существует раздел приложения, в котором я могу создать профиль учетной записи eBay и назначить для нее пользовательские значения (например, присвоить ему псевдоним и т. Д.). Здесь я инициирую процесс перенаправления входа OAuth.

Мой вопрос касается параметра 'state' в запросах токена. Я понимаю, что это помогает предотвратить CSRF, но должен ли я использовать его таким образом? 'state' делает необязательным, в конце концов.

Допустим, я хотел передать другое значение в вызов запроса, например строку 'eBay Seller', и ожидать, что такая же точная строка будет возвращена в ответе. Я хочу использовать это значение, чтобы помочь моему приложению определить, какой учетной записи назначить возвращаемые токены (в зависимости от того, какой профиль учетной записи инициировал ссылку перенаправления).

Является ли 'state' допустимым местом для передачи переменной, которую я ожидаю вернуть точно в том виде, в котором она была отправлена? Я решил использовать переменные Session для обработки этого сценария, но быстро понял, что это не сработает, поскольку процесс OAuth выводит меня за пределы домена моего проекта.

OAuth поддерживает передачу переменных, которые, как ожидается, будут возвращены как отправленные? Разрешено или даже рекомендуется отправлять мою переменную как «состояние» (или абсолютно не рекомендуется ?) Есть ли лучший способ добиться того, что я хочу сделать, не включая обновление значений базы данных?

Спасибо!

1 Ответ

0 голосов
/ 02 мая 2018

Вы можете отправить, что вы хотите, как state. Тем не менее, вы должны попытаться убедиться в том, что это невозможно предположить, чтобы смягчить атаки CSRF.

Если вы хотите вернуть полезную информацию, такую ​​как «продавец ebay», добавьте что-нибудь для CSRF (например, хэш идентификатора ключа сеанса) и текст «продавец ebay» и разделите их, например,

2CF24DBA5FB0A30E26E83B2AC5B9E29E1B161E5C1FA7425E73043362938B9824|ebay seller

Теперь у вас есть лучшее из обоих миров: полезная информация о состоянии + защита от CSRF. Ваша логика конечной точки перенаправления может проверить хэш совпадений идентификатора сеанса, а также подтвердить тип учетной записи из первоначального запроса.

...