@Filoret256
начинающий JS developer

На сколько безопасен workflow oAuth 2?

Всем привет
тут нашел такой workflow авторизации oAuth2
https://github.com/sahat/satellizer/wiki/Login-wit...

Client: Open a popup window via $auth.authenticate('provider name').
Client: Sign in with that provider, if necessary, then authorize the application.
Client: After successful authorization, the popup is redirected back to your app, e.g. localhost:3000, with the code (authorization code) query string parameter.
Client: The code parameter is sent back to the parent window that opened the popup.
Client: Parent window closes the popup and sends a POST request to /auth/provider withcode parameter.
Server: Authorization code is exchanged for access token.
Server: User information is retrived using the access token from Step 6.
Server: Look up the user by their unique Provider ID. If user already exists, grab the existing user, otherwise create a new user account.
Server: In both cases of Step 8, create a JSON Web Token and send it back to the client.
Client: Parse the token and save it to Local Storage for subsequent use after page reload.


у меня вопрос про безопасность такого workflow
ведь на шаге 3 можно сэмулировать ответ от внешнего сайта в дочернем окне
например если делаем авторизацию steam
steam auth возвращает steamcommunity.com/openid/id/7xxxxxxxxxxxxxx
т.е. так же можно передать любой нужный тебе url в родительское окно
или я ошибаюсь? или в этом и есть секьюрность?

можете объяснить?
сколько читаю не могу понять как организовывается безопасность такой авторизации
спасибо за ранее

PS на клиенте angular, на сервере nodejs
  • Вопрос задан
  • 250 просмотров
Решения вопроса 1
@Kano
Вы имеете ввиду подделку authcode который возвращает провайдер авторизации в дочернее окно, которое в свою очередь возвращает его родительскому окну?
Не забывайте что этот код еще нужно обменять на access token используя server to server запрос с подписью приватным ключем.
Подделаете authcode то его просто отвергнет сервер провайдера, а если его перехватить то третья сторона не сможет подписать запрос для получения access token т.к не знает приватного ключа
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы