Мы разрабатываем социальные приложения для мобильных устройств. Каждое приложение использует веб-сервисы API RESTful. Когда я использую логин, я обычно храню имя пользователя и пароль где-то на устройстве. Затем я отправляю их и в ответ получаю доступ к своему профилю. Но я также знаю, что есть другой способ сделать это.
Кто-то генерирует токен с определенным алгоритмом, а затем отправляет его вместо имени пользователя и пароля для получения доступа.
Как мне это реализовать? Должен ли я отправлять этот токен вместе с любым другим запросом, кроме входа в систему?
Ответы:
Существует несколько способов реализации аутентификации в контексте RESTful, и более безопасно отправлять только токены вместо логина / пароля: вы можете легко сделать токены недействительными по таймауту или по некоторым другим критериям и попросить пользователя повторно пройти аутентификацию ,
Например, аутентификация REST-запросов с использованием HMAC . При таком подходе клиент будет иметь открытый и секретный ключи . Для всех запросов, требующих аутентификации , вы должны добавить публичный ключ и использовать секретный ключ для вычисления хеша вашего запроса.
Теперь сервер может идентифицировать запрос по открытому ключу и сам рассчитать requestHash . Если оба хэша равны, то пользователь авторизуется.
Кстати, вы также должны использовать https для защиты связи через компьютерную сеть - это значительно уменьшит количество возможных проблем.
источник
oAuth является стандартом для этого, но есть и другие решения.
Не пытайтесь реализовать безопасность, токены и т. Д. Самостоятельно, поскольку это сложная и рискованная тема. Взять, например, посмотреть здесь:
/programming/4574868/securing-my-rest-api-with-oauth-while-still-allowing-authentication-via-third-pa
источник