REST-аутентификация / авторизация - PullRequest
13 голосов
/ 28 апреля 2011

Мне нужны советы по защите моего приложения:

У меня есть служба REST, использующая Spring MVC 3

У меня есть клиентское приложение, использующее Ext GWT 2.2

Учетные данные пользователей доступны только на стороне сервера.

Доступен SSL

Службы REST должны использоваться только авторизованными пользователями.

Я читал о HTTP Digest, токенна основе авторизации, oAuth и т. д., но мне нужны некоторые пояснения и советы о том, как защитить мое приложение и какие методы являются лучшими в моем случае.

1 Ответ

26 голосов
/ 28 апреля 2011

вот методология, которую мы создали для наших приложений, она работает очень хорошо и очень надежно.

это очень концептуальное объяснение, есть много кода, подтверждающего это, к вашему сведению

  • Когда пользователь аутентифицирует или создает учетную запись, сервер возвращает сертификат x.509 в кодировке base64, который является уникальным для пользователя. Сервер хранит копию.

  • Каждый раз, когда клиенту требуется доступ к REST API, клиент создает строку JSON, состоящую из следующих элементов.

  • Уникальный идентификатор пользователя (UserID)

  • GUID или UUID, который гарантирует, что этот вызов является уникальным, (CallID) (защищает от атак воспроизведения)
  • Словарь (набор Key / Value) каждого параметра оставшегося вызова

Затем мы зашифровываем эту строку с помощью открытого ключа x.509, кодируем ее обратно в строку base64, принимаем это зашифрованное значение и добавляем UserID к объекту json, который мы называем токеном.

затем мы помещаем токен в заголовок каждого вызова и называем его следующим образом: X-Auth-UserToken

При каждом вызове сервер принимает токен, просматривает сертификат пользователя на основе идентификатора пользователя, а затем проверяет, что зашифрованная часть токена может быть расшифрована с помощью закрытого ключа, который сервер хранит для пользователя.

после расшифровки сервер берет CallID и проверяет его уникальность по своей базе данных calllog.

если получено, пользователь аутентифицирован.

после аутентификации пользователя вы можете применять свои собственные правила авторизации на основе уникального идентификатора пользователя.

конечно, все вышеперечисленное происходит через SSL.

дайте мне знать, если вам нужно, чтобы я сверлял детали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...