Я искал некоторое время, но не смог найти ничего, связанного с моими мыслями. Я хочу создать приложение с WPF, которое получает всю пользовательскую информацию, отправляя запросы в скрипт PHP. Для каждого запроса я использую SSL.
Когда пользователь регистрируется, он только представляет свое имя пользователя, пароль и адрес электронной почты. Пароль всегда хранится в виде хэша в приложении, использующем sha256, и этот хеш хранится в виде другого хеша, использующего password_hash в PHP.
После входа в систему приложение отправляет запрос на основе действия пользователя. Для проверки каждого запроса я наткнулся на oAuth2. Является ли oAuth2 «наилучшей практикой» для проверки запросов или есть другой способ сделать это? Нужно проверять каждый запрос после входа в систему.
Существует два распространенных способа защиты запроса API:
основной аутентификация. Заголовок формы
Authorization: Basic base64(username:password)
отправляется вместе с каждым запросом. Это просто реализовать, но и просто атаковать; ты абсолютно должен отправлять запросы по HTTPS (поскольку шифрование не используется).
Некоторая форма OAuth. Вы можете использовать тип предоставления пароля для такого сценария, как ваш: вы отправляете имя пользователя и пароль на сервер OAuth и запрашиваете токен доступа это может быть использовано по каждому запросу. Это более безопасно и более сложно, потому что вам нужно реализовать токен-сервер.
То, что вы выберете, зависит от множества факторов, таких как внутренняя или внешняя служба, сложность, которую вы хотите встроить в проект, и целевые пользователи.
Дальнейшее чтение:
Полное раскрытие: я работаю на Компания который создает API для этого.
OAuth вероятно, будет вашим лучшим выбором. Возможность проверять запросы и отзывать токены является ключевым моментом при работе в приложениях уже несколько дней. Многие ведущие веб-сайты, Facebook, Twitter, Instagram и т. Д. Используют OAuth благодаря надежной аутентификации и гибкости.
Для моей компании у нас есть собственные API и мы используем OAuth для всех из них. Несмотря на то, что они являются частными API, OAuth дает нам возможность использовать их для публичного использования позже, если мы будем рады.
Не уверен, что именно ваш проект или как он работает, и, честно говоря, мне не нужно. На мой взгляд, вы не ошибетесь, используя OAuth.