Я разрабатываю приложение, которое взаимодействует с бэкэнд только через API RESTful. Теперь моя аутентификация/авторизация основана на протоколе OAuth2. Мне интересно, достаточно ли это.Является ли мой пароль OAuth2 достаточно безопасным?
Мой рабочий Логин/выход из системы:
- Номер вызова API, чтобы запросить маркер доступа. Информация включает:
app_key
,app_secret
,username
,password
,grant_type
. Храните этот токен в локальном хранилище, указав, что этот пользователь вошел в систему. - При запросе некоторых ограниченных ресурсов, таких как
/api/profile
, интерфейсный модуль отправляет запрос Ajax сtoken
в заголовок запроса:Authorization [token]
. - Бэкэнд извлекает текущего пользователя из
token
и решает, разрешать ли его. - Для выхода из системы просто удалите токен из локального хранилища.
Я планирую добавить кодировку HTML (для защиты от XSS) и HTTPS (чтобы предотвратить взрыв токена).
Мне интересно, такой «простой» механизм, достаточно ли он защищен, чтобы защитить мой сайт от обычных атак, таких как CSRF?
Спасибо @Erlend. Но OAuth2 не для аутентификации? Я пытаюсь получить систему, похожую на учетную запись Google. Тогда учетная запись Gmail может выполнять аутентификацию, не так ли? Другое дело, я думаю, что клиент прекрасно знает секрет, так как клиент должен зарегистрировать приложение в моей системе, прежде чем войти в систему. Клиент несет ответственность за то, чтобы приложение было безопасным, как приложение Google. Я прав? – Joy
Ваши баллы 2 и 4 определенно имеют смысл, спасибо. – Joy
Google использует соединение OpenID: https://developers.google.com/identity/protocols/OpenIDConnect (он построен поверх OAuth 2) – Erlend