Неявный поток предоставления OAuth 2.0 — защита от раскрытия clientId и accessToken

Поскольку OAuth 2.0 Implicit Grant Flow раскрывает свой механизм, например. с помощью JavaScript в клиентском приложении владельцу ресурса предоставляется идентификатор клиента и токен доступа. Я не смог найти четкого ответа, что можно сделать, чтобы предотвратить использование разоблачения.

Какие меры можно предпринять для предотвращения проблем в следующем сценарии? Если очевидно, что я неправильно понимаю поток, пожалуйста, укажите.

Сценарий

Клиент А — легитимный клиент, которому сервер авторизации предоставил собственный уникальный идентификатор клиента.

Клиент Б — клиент, о котором сервер авторизации не знает, копирует идентификатор клиента Клиента А, привлекает невиновных владельцев ресурсов и использует их токены доступа для получения доступа к своей личной информации.

Вот некоторые варианты, которые я могу придумать, чтобы решить проблему.

  1. Создайте белый список IP-адресов и сопоставьте его с каждым известным клиентом. Сверяйтесь с сервером авторизации при авторизации и вызове сервера ресурсов.
  2. Установите регулирование на конечных точках сервера ресурсов, чтобы обнаруживать ненормальные действия.

person wonster    schedule 02.07.2013    source источник


Ответы (2)


Что ж, именно по этой причине спецификация OAuth (RFC 6749) предостерегает от недостатков безопасности неявного потока в Разделе 10.6. Неясно, будут ли контрмеры, которые вы описываете, эффективными в общих условиях в Интернете. Например, заголовки IP небезопасны и могут быть легко подделаны. Я бы использовал неявный поток только для приложений, которым требуется самый низкий уровень безопасности (например, отображение информации только для чтения).

person user3101375    schedule 14.12.2013

Токен защищен с помощью SSL между клиентом и сервером. Поэтому содержимое зашифровано, а URI — нет. Вы можете поместить токен в тело html, потому что он безопасен, за исключением надстроек браузера. Не используйте сторонние контент-серверы для размещения JavaScript, если они скомпрометированы, их скрипты могут читать ваш html. Пользователь может увидеть токен и скопировать его в свое приложение, если захочет, но он защищает свои ресурсы, поэтому... В конечном счете, мне нравится неявный поток из-за его простоты.

В конечном итоге серверы, обрабатывающие токен, могут стать проблемой, не зависящей от вас. Выберите сервер, который не включает токен в URI, это небезопасно. Точно так же вы не должны отправлять на сервер конфиденциальную информацию в URL-адресе.

Если вы найдете библиотеку, которая гарантирует безопасность, пожалуйста, опубликуйте ее.

person kevin    schedule 03.09.2020