У меня есть следующие объекты:
- Мобильное приложение
- собственный API-сервер
- собственный OAuth-сервер
Мне нужно внедрить OAuth в мобильном приложении на OAuth-сервере и получить доступ к пользовательской информации на сервере API после , и у меня возникли проблемы с тем, как этого можно достичь безопасно , Я думаю только о следующих методах:
Способ 1. Передача идентификатора пользователя непосредственно из мобильного приложения на сервер API
- Войти в систему через OAuth в мобильном приложении (используя библиотеку, например, AppAuth)
- Сохранить идентификатор пользователя, полученный из OAuth, в мобильном приложении
- Мобильное приложение отправляет идентификатор пользователя на сервер API, чтобы они могли извлечь нужные ресурсы обратно в мобильное приложение
Однако этот метод выглядит небезопасным, , поскольку злоумышленник может подделать свой идентификатор пользователя при передаче в API.
Способ 2: передать OAuth access_token на сервер API, позволить серверу API снова вызвать сервер OAuth
- Войти в систему через OAuth в мобильном приложении (используя библиотеку, например, AppAuth)
- Сохранить маркер доступа, полученный из OAuth
- Мобильное приложение отправляет access_token на сервер API
- API-сервер передает access_token серверу OAuth
- OAuth-сервер возвращает информацию о пользователе обратно на API-сервер
- Теперь сервер API имеет информацию о пользователе и может возвращать нужные ресурсы обратно в мобильное приложение.
Метод 2 кажется более безопасным, однако я не вижу, чтобы кто-то предлагал такую инфраструктуру. Этот метод также требует значительных ресурсов, поскольку серверу API необходимо каждый раз вызывать сервер OAuth для вызова API.
Итак, мой вопрос:
- Каков наилучший способ доступа к API-серверу в мобильном приложении, которое регистрируется с помощью OAuth?
- Если есть лучшая практика, есть ли ссылка на эти ресурсы?
Спасибо!