Проверка подлинности токена и SSL - PullRequest
1 голос
/ 10 марта 2019

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

Читая о JWT и Identity Server, я понял роль подписи и необходимость разделения авторизации и аутентификации. Но одна вещь кажется мне странной: Если мой пользователь собирается получить подписанный токен и использовать его для аутентификации себя, и есть «Человек посередине», который прослушивает и копирует этот токен, может ли он выдать себя за моего пользователя? (Я верю, что ответ - да) Поэтому мой лучший вариант здесь - использовать SSL при каждом вызове моего API. Маркер является временным, и все это не намного меньше угрозы безопасности.

Итак, мой вопрос здесь: Если я в конечном итоге использую SSL для своих вызовов API, для чего нужна подпись? с SSL трафик все равно скрыт, и никто не может его подделать. Браузер может использовать имя пользователя и пароль в виде простого текста, и они не будут отображаться. Что мне здесь не хватает?

1 Ответ

0 голосов
/ 11 марта 2019

Я думаю, что все сводится к тому, для чего JWT служит в OpenID Connect протокол (OIDC).

В OIDC ID токен является JWT. И если вы пройдете через RFC7519 - JSON Web Token , то вы попадете в раздел Решения о доверии .

На содержание JWT нельзя положиться в решении о доверии если его содержимое не было криптографически защищено и не контекст, необходимый для решения о доверии

С точки зрения OIDC, решение о доверии заключается в аутентификации конечного пользователя на основе утверждений, содержащихся в токене ID. Это может быть сделано, только если валидация соответствует спецификации JWT. Так что в основном это требование протокола OIDC и спецификации JWT.

Теперь о SSL. OIDC содержит несколько других вызовов, необходимых для получения окончательного ответа токена. Эти вызовы содержат идентификаторы клиента, секреты и код авторизации (в зависимости от потока). OIDC построен на OAuth 2.0 и OAuth 2.0 и требует SSL (новое имя - TLS). При этом OIDC тоже требует SSL.

В сочетании SSL (TLS) предотвращает атаки во время передачи запросов и ответов по проводам. И подпись JWT гарантирует подлинность токена независимо от того, как он был получен или какой компонент вашего приложения обрабатывает его.

...