Ответ 1
вот методология, которую мы создали для наших приложений, работает очень хорошо и очень безопасна.
Это очень концептуальное объяснение, есть много кода, который поддерживает это, FYI
-
Когда пользователь аутентифицирует или создает учетную запись, сервер возвращает сертификат x.509, закодированный base64, который уникален для пользователя. Сервер хранит копию.
-
Каждый раз, когда клиент должен обращаться к REST API, клиент создает строку JSON, состоящую из следующих.
-
Уникальный идентификатор пользователя (UserID)
- GUID или UUID, который гарантирует, что этот вызов уникален, (CallID) (защищает от повторных атак)
- Словарь (набор ключей/значений) каждого параметра остального вызова
мы затем шифруем эту строку открытым ключом x.509 и кодируем ее обратно в строку base64 и берем это зашифрованное значение и добавляем UserID в объект json, который мы вызываем токен.
Затем мы помещаем токен в заголовок каждого вызова и вызываем его как-то вроде: X-Auth-UserToken
При каждом вызове сервер принимает маркер, просматривает сертификат пользователя на основе идентификатора пользователя, а затем проверяет, может ли зашифрованная часть маркера быть расшифрована с помощью закрытого ключа, который сервер хранит для пользователя.
после дешифрования сервер принимает CallID и проверяет, что он уникален, против своего собственного calllog db.
если он проверяется, пользователь аутентифицируется.
После аутентификации пользователя вы можете применить свои собственные правила авторизации на основе уникального идентификатора пользователей.
конечно, все вышеперечисленное выше SSL.
сообщите мне, если вам нужно, чтобы я развернулся на любых участках.