2015-04-24 2 views
0

Я выполняю потоки oAuth2 на стороне сервера.OAuth2: redirect_uri post LinkedIn & Facebook

я заметил, что Google добавил прохладную особенность их oauth2 API, которые зарегистрировались является redirect_uri=postmessage поэтому мы не показываем реальную redirect_uri на панели браузера URL-адрес и authorization code не будут включены в URL переадресации.

Для LinkedIn, когда пользователи соглашается делиться своими личными данными с приложением, URL-адрес ответа выглядит следующим образом:

http://dev.localhost.com:8080/auth/linkedin?code=xxxxxxxxxxx&state=yyyyyyyyyyyyy

это то же самое для Google, если не заменить реальный redirect_uri на postmessage.

Если redirect_uri + код ответа задан в URL-адресе Каждый вредоносный скрипт может получить возвращаемый code с URL-адреса и выполнить его собственные проверки подлинности.

Итак, есть ли способ скрыть возвращаемые параметры и redirect_uri для LinkedIn и Facebook?

+1

_ «Каждый вредоносный скрипт сможет извлекать возвращаемый код из URL-адреса и выполнять свои собственные проверки подлинности» _ - нет, они не могут, потому что для обмена «кодом» для токена доступа требуется секретное приложение. (И если у вас есть сторонние скрипты, тогда у вас больше проблем.) – CBroe

+0

Я понимаю. Это проясняет все, спасибо. – Copernic

ответ

2

LinkedIn и Facebook не уязвимы для злонамеренных скриптов, обращающихся к redirect_uri.

Предполагая, что вы используете рекомендованные response_type=code, оба API требуют, чтобы вы сделали запрос с вашего сервера, который содержит ваш секрет API и значение code, чтобы получить токен пользователей. LinkedIn описывает это в Exchange Authorization Code for a Request Token, а Facebook описывает это в Exchanging code for an access token.

Дополнительную защиту с помощью Facebook можно включить с требованием every request be signed with your API secret. Дополнительную защиту в целом можно получить, используя сильный Content Security Policy, чтобы предотвратить запуск вредоносных скриптов. И не забудьте разместить свой сайт исключительно через TLS, чтобы ваш собственный JavaScript не был изменен.

+0

Понимаю, это было поучительно. Спасибо! – Copernic

Смежные вопросы