2014-09-11 2 views
0

В настоящее время я собираюсь выяснить, как правильно использовать провайдера OAuth 2.0 строго из клиентского javascript, и у вас есть опасения по поводу разоблачения client_secret приложения. Это, по сути, «пароль» клиента OAuth.Как hello.js избегает хранения client_secret?

Как hello.js избегать client_secret все вместе?

Эти провайдеры полагаются на реферер и домен приложения для проверки (идентификации) клиентских запросов?

+1

вам просто нужно использовать ваш client_id, а не секрет. провайдеры _may_ проверяют реферер, но это не нужно, потому что они должны перенаправляться на страницу на сайте, которым вы управляете в любом случае. эта целевая страница получает информацию от третьей стороны, используя location.hash, которая не переходит через http. если информация целевой страницы соответствует ожидаемому клиенту, запрос считается авторизированным. – dandavis

ответ

1

HelloJS использует Implicit Flow по умолчанию - @dandavis описывает в своем комментарии. Если служба не поддерживает поток неявного потока грантов, возможно, он поддерживает OAuth2 Authentication Code/Explicit Grant или OAuth1 Authentication flow - все вышеперечисленное требует скрытого секретного ключа, который будет использоваться при обработке запросов. HelloJS перенаправляет запрос через OAuth Proxy (см. http://adodson.com/hello.js/#oauth-proxy) задание прокси-сервера заключается в завершении рукопожатия и возврате access_token.

+0

Если я использую прокси OAuth (https://auth-server.herokuapp.com/ или свой собственный) и сохраняю секретный ключ, обратившись к веб-странице Proxy, подписанной с моими учетными данными, как HelloJS получает доступ к этой информации для пользователя, не подписанного с моими учетными данными? И если HelloJS может получить доступ к этой информации без моих учетных данных, тогда почему она не доступна для всех, и поэтому она больше не секретна? – Lindsay

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