RESTful API скрывает hibernate id и версию - PullRequest
0 голосов
/ 22 апреля 2011

Допустим, у меня есть объект User с идентификатором и версией, управляемой hibernate, плюс имя и фамилия.

Я хочу иметь операции CRUD на экземплярах пользователя с RESTful API, но я неЯ не хочу, чтобы клиент получал идентификатор пользователя и версию, хранящиеся в базе данных.

Упрощенное решение, о котором я могу подумать, - это отправить представление пользователя с измененным идентификатором и версией и отобразить «публичные» значениясо значениями базы данных в HashMap, который живет в памяти сервера.Я также думаю о куки, но я не думаю, что это безопасное решение, так как они могут быть взломаны клиентом.AFAIK, чистый RESTful API не должен обрабатывать состояние сеанса на сервере.

Существует ли безопасный, масштабируемый и RESTful способ публикации ресурсов без раскрытия их реальных идентификаторов и версий?

Ответы [ 3 ]

1 голос
/ 22 апреля 2011

Сложный.Вам нужен идентификатор или какое-то его представление где-то в URI для выполнения запросов GET.

Почему вы беспокоитесь о том, что ваши пользователи получают реальный идентификатор?

Одна вещь, которую вы могли бы сделать, - это зашифроватьидентификатор пользователя перед его отправкой во внешний интерфейс и расшифровка идентификатора на внутреннем конце с использованием алгоритма симметричного шифрования, такого как AES.

См. Алгоритм симметричного ключа

1 голос
/ 22 апреля 2011

Лучшее решение - разделить ваши UserEntity и UserData:

@Embeddable
class UserData {
    String firstName;
    String lastName;
    ... // getters and setters
}

// your mapped class
class UserEntity {
    int id;
    int version;
    UserData data;
    // getters and setters
}
0 голосов
/ 22 апреля 2011

Если вы установили «истинный» REST, то вам нужно предоставить клиенту все состояние объекта, которое ему потребуется для выполнения действия с ним в более позднее время.Рассматривали ли вы просто применение соли и некоторого симметричного шифрования к полям, которые вы не хотите, чтобы пользователи могли изменять?Передача хешей, очевидно, увеличит размер вашей полезной нагрузки, но все идет с затратами, особенно с безопасностью!

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