Защита секрета приложения для использования exteAccessToken - PullRequest
2 голосов
/ 04 марта 2012

Я разрабатываю для Android и в настоящее время использую facebook-android-sdk для аутентификации.Из того, что я вижу, в этом коде нет никакого смысла в секрете приложения.

Теперь, когда Facebook собирается удалить разрешение offline_access, мне нужно расширить маркер доступа.К сожалению, метод exteAccessToken sdk не является самостоятельным и требует установки официального приложения Facebook, что для меня неприемлемо.

Поэтому я решил напрямую внедрить exteAccessToken (аналогично реализации iphone sdk).Проблема в том, что HTTP-запрос на расширение токена доступа требует поля client_secret, что означает, что мне нужно поместить секрет приложения в сам код.Это совсем не безопасно для приложений Android / Java, которые можно легко перепроектировать.

Есть ли альтернативы?

Ответы [ 2 ]

0 голосов
/ 18 сентября 2012

Итак, вот что я обнаружил до сих пор о SDK для Android / iOS в отношении создания / расширения токенов.

Я нашел 2 метода для генерации токенов на стороне клиента с помощью SDK и 3 метода для расширения токенов.

Создание:

1) приложения Facebook.Создает маркер единого входа

2) веб-браузер (iOS) / веб-диалог (Android / BB).Создает токен SSO для iOS и токен не SSO для Android / BB

Все эти токены являются долгосрочными токенами.

Расширение:

1) Приложение для iOS / Android.В случае Android только в том случае, если пользователь вошел в приложение, в противном случае вызов привязанного сервиса никогда не вернет ничего, даже ошибки.Не тестировал iOS для этого сценария.

2) auth.extendSSOAccessToken.Это конечная точка для старого API, который, насколько я могу судить, iOS SDK все еще использует, если официальное приложение отсутствует.Теперь, если вы используете эту конечную точку на токене, который не был создан с помощью SSO (всплывающее диалоговое окно Android), вы получите код ошибки 10 с сообщением о том, что токен не был сгенерирован с помощью SSO.Это может заставить вас заподозрить, что он может работать до тех пор, пока ваш токен генерируется через SSO.Ваше подозрение будет неверным, оно выдает код ошибки 100 с сообщением «Токен доступа для приложения Facebook не поставляется».Насколько я могу судить, этот метод совершенно бесполезен для Android.

3) oauth / access_token.Это конечная точка, которую FB говорит нам использовать в их дорожной карте .Конечно, этот метод a) предоставляет ваш APP_SECRET (который FB настоятельно рекомендует не делать) через apk-декомпиляцию / распаковку и b) работает только для расширения краткосрочных токенов в долгосрочные токены.Поэтому, если вы начинаете с долгосрочного токена, который по умолчанию возвращается в Android / iOS, вам необходимо сначала создать краткосрочный токен, а затем расширить его с помощью этого метода на стороне клиента (небезопасно) или на стороне сервера (недля всех).Как вы генерируете краткосрочный токен из долгосрочного токена?Жаль, что я не знал = (.

До сих пор не было возможности найти какие-либо идеи для выполнения этого где-либо. Если кто-то знает, пожалуйста, поделитесь!

Это по крайней мере даст людям с серверамибезопасный метод для расширения долгосрочных токенов.

0 голосов
/ 05 марта 2012

Почему бы не разместить код для выполнения этого на своем собственном сервере, и чтобы клиент продлил токен посредством вызова на ваш сервер?

...