Клиенту OAuth 2 действительно нужен TLS? - PullRequest
2 голосов
/ 05 декабря 2011

Я собираюсь создать делегированную систему входа в систему для существующего приложения. Я буду реализовывать как клиент OAuth (в веб-приложении), так и сервер OAuth (простой сервер авторизации и ресурсов, у которого на данный момент действительно есть только пользовательский ресурс).

Имея это в виду, я натолкнулся на следующий раздел в текущем проекте OAuth 2 (версия 22):

3.1.2.1.  Endpoint Request Confidentiality

   If a redirection request will result in the transmission of an
   authorization code or access token over an open network (between the
   resource owner's user-agent and the client), the client SHOULD
   require the use of a transport-layer security mechanism.

   Lack of transport-layer security can have a severe impact on the
   security of the client and the protected resources it is authorized
   to access.  The use of transport-layer security is particularly
   critical when the authorization process is used as a form of
   delegated end-user authentication by the client (e.g. third-party
   sign-in service).

Это специально предупреждает меня, что я должен использовать TLS на клиенте. Конечно, мы будем использовать HTTPS на сервере, но включить HTTPS на всех клиентах будет сложно, если не невозможно.

Из моего ограниченного понимания безопасности я полагаю, что кто-то может украсть разрешение. Это подводит меня к моему вопросу:

Не будет ли аутентификация клиента (с использованием секрета клиента) не позволит перехватчику использовать грант авторизации? (Поскольку, надеюсь, злоумышленник не узнает секрет клиента). )

Если этого не произойдет, или если здесь нет другого вектора атаки, могу ли я что-нибудь сделать, чтобы это работало безопасно без HTTPS на клиентах? Поможет ли, например, OAuth 1? (Возможно, потому что у него есть дополнительный шаг токена запроса.)

P.S .: Я планировал провести аутентификацию клиента, используя сертификаты клиента TLS, а не секреты, если это улучшит ситуацию.

1 Ответ

2 голосов
/ 05 декабря 2011

Я думаю, вы неверно истолковали часть этого предупреждения.Это предупреждение OAuth касается нарушений OWASP A9 .Это говорит о том, что даже если вы используете OAuth, вам все еще нужен безопасный транспортный уровень для связи с клиентом.Клиенту не требуется пара ключей для аутентификации, OAuth - это форма аутентификации клиента.Тем не менее, браузер по-прежнему аутентифицируется в вашем приложении, используя идентификатор сеанса, который хранится в виде значения cookie.Проблема заключается в том, что если злоумышленник сможет перехватить это значение, он получит такой же доступ, что и пострадавший клиент.

...