Аутентификация REST API для мобильных приложений iOS и Android - PullRequest
0 голосов
/ 04 марта 2019

Я хочу получить безопасный доступ к REST API (.net) через мобильное приложение (реактивный).У меня были следующие решения, но у каждого есть свой недостаток.Может кто-нибудь предложить мне решение проблемы?

1.

REST API: безопасный отдых API с именем пользователя и паролем.

Мобильное приложение:отправлять имя пользователя и пароль при каждом вызове API остальных.

Недостаток : При обратном проектировании получается имя пользователя и пароль, которые хранятся в мобильном приложении.Код был запутан и пароль хранился в местах, но хакерам удалось получить пароль после определенных усилий.

2.

REST API: реализована авторизация 2

Мобильное приложение: вызовите API Rest для получения токена для будущего использования, но в первый раз требуетсяпередать аутентификационные данные для получения токена.Те же проблемы имя пользователя и пароль могут быть получены путем обратного инжиниринга.

Как мы можем удалить секреты приложения из приложения и получить безопасный доступ к REST API из мобильного приложения?

Ответы [ 2 ]

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

Три вещи для вас:

1) Я бы определенно рекомендовал OAuth2 для многократной отправки имени пользователя и пароля.Это хорошо понято, и есть как открытые, так и бесплатные коммерческие реализации.На мобильных устройствах PKCE очень важен для предотвращения атак перехвата кода авторизации.

2) Использование HTTPS для вызовов REST API - это само собой разумеющееся, но я бы посоветовал вам также закрепить эти соединения.Злоумышленник может легко скомпрометировать мобильное устройство и, в противном случае, стать посредником в вызовах API.Пиннинг сложно для React Native;взгляните на пакет response-native-cert-pinner npm и / или прочитайте Укрепление TLS в React Native с помощью закрепления сертификатов (Android) или iOS .

3) OAuth2 с PKCE не остановит атаку олицетворением, и особенно если вы создаете пользователей с доверием при первом использовании, вы будете еще более уязвимы к атакам ботов.Вы должны сделать больше, чем просто ключи API.Я бы порекомендовал некоторые хорошо запутанные подписи вызовов API или, что еще лучше, некоторую форму аттестации приложений.Для React Native см. Первые опыты с React Native: соединение собственного модуля Android для аутентификации приложения или аналогично для iOS .

0 голосов
/ 04 марта 2019

Вам нужно реализовать реализацию кода авторизации с PKCE .

Вот пример проекта , выполняющего что-то похожее.

...