Как это выглядит, когда OAuth2 используется для аутентификации - PullRequest
0 голосов
/ 19 июня 2019

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

Если я позвоню из app / users / 1 / detail и передам соответствующий заголовок Bearer, как OAuth используется дляпроверить, действительно ли у пользователя id 1?Требуется ли использование JWT для возможности декодирования токена доступа и сравнения с идентификатором, содержащимся внутри?

Ответы [ 2 ]

0 голосов
/ 19 июня 2019

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

Чтобы понять, почему OAuth и MyAuth различаются, сначала знайте, что у них обоих есть токены обновления, которые являются долгоживущими, и токены доступа, которые являются недолговечными. Кроме того, если party1 необходим доступ к party2, party2 должен будет сгенерировать эти токены, а party1 должен каким-то образом хранить оба этих токена для поддержания доступа.

Об OAuth:

  • У нас есть три стороны (есть и другие типы): бэкэнд App1, веб-интерфейс App1 и бэкэнд App2.

  • Здесь цель состоит в том, чтобы предоставить доступ к бэкенду и веб-интерфейсу App1, доступ к бэкенду App2 от имени пользователя.

  • Только здесь бэкэнду App1 и бэкенду App2 можно доверять как защищенным сторонам.

О MyAuth:

  • У нас есть две стороны: бэкэнд App1, фронтенд App1.

  • Здесь цель состоит в том, чтобы предоставить веб-интерфейсу App1 доступ к бэкенду App1 от имени пользователя (это относится ко всем приложениям после входа пользователя в приложение).

  • Здесь только бэкэнд App1 является доверенной стороной.

Поскольку токены обновления являются долгоживущими, получение несанкционированного доступа к ним может быть серьезной проблемой. Таким образом, в потоке OAuth он спроектирован таким образом, что токены обновления бэкэнда App2 хранятся только на бэкэнде App1 (который является доверенной стороной). И только маркер доступа бэкэнда App2 (который недолговечен) отправляется на веб-интерфейс App1. В MyAuth у нас нет доверенной стороны для хранения токена обновления бэкэнда App1. Это означает, что вы храните токен обновления в месте, где его можно относительно легко украсть, что является проблемой безопасности. Таким образом, хотя OAuth не должен решать эту проблему как таковой, MyAuth делает.

Чтобы узнать больше о безопасности сеанса и различных типах потоков, см. https://hackernoon.com/all-you-need-to-know-about-user-session-security-ee5245e6bdad

0 голосов
/ 19 июня 2019

OAuth 2.0 НЕ является протоколом аутентификации .(Но вы можете создать один поверх OAuth 2.0, как это делается с OpenID Connect )

OAuth - это открытый стандартный масштабируемый протокол RESTful для делегирования Авторизация к ресурсам сервера по HTTP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...