У меня есть дилемма авторизации на архитектуре угловых узлов:
После входа пользователь запрашивает разрешения у конечной точки REST узла. После этого клиент Angular берет его и сохраняет в LocalStorage
. Это все хорошо, но я обеспокоен тем, что есть вероятность, что злонамеренный пользователь сможет найти разрешения в LocalStorage
и, довольно легко, повысить свои разрешения, скажем, до allowdelete: true
и так далее. Затем Angular с радостью использует это новое разрешение и позволит пользователю делать все, что он выберет (до тех пор, пока он не попадет на сервер API, где разрешение будет проверено еще раз, прежде чем оно будет выполнено).
Я рассмотрел два варианта
Вариант 1: обернуть разрешение как JWT
Это позволяет pdr-api подписать токен, чтобы мы могли проверить, не был ли он подделан.
Выбрав этот вариант, я понял, что мне нужно:
1) Всегда проверяйте токен, прежде чем доверять полезной нагрузке
2) Согласно этому сообщению SO ( JWT Verify на стороне клиента? ), проверка подписи должна происходить только на сервере.
Вариант 2: Просто в любом случае получите разрешения и не беспокойтесь об этом
Это будет известное ограничение. Риск относительно низкий, потому что даже если они могут проникнуть в неавторизованные части приложения, сервер API даже не выделит ему время суток, поскольку они не авторизованы.
.
Если я пойду с Option A
, то в этот момент я мог бы просто спрашивать сервер API каждый раз, когда нам нужно разрешение, потому что это было бы похоже на нажатие на сервер для проверки токена ... верно?
Я склоняюсь к Option B
. Это правильное (безопасное) решение? У кого-нибудь есть другие идеи? Аутентификация обрабатывается с помощью файлов cookie и passport.js
, так что я даже не беспокоюсь об этом .... Просто авторизация.