Как лучше всего авторизоваться на ресурсе в angular 8 - PullRequest
1 голос
/ 24 января 2020

Я пытаюсь обработать авторизацию на основе ресурсов (или утверждений) в angular 8. Я обнаружил CASL angular управления способностями действий.

Итак, я хочу защитить все грубые действия с использованием авторизации на основе действий в angular 8.

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

Каков наилучший способ сделать авторизацию на основе действий в angular 8?

Спасибо

Ответы [ 2 ]

1 голос
/ 24 января 2020

CASL кажется ACL и выполняется на стороне сервера. Он определяет разрешение для каждой стороны сервера ресурсов. Angular - это клиентская структура.

Вопросы «как лучше» обычно закрываются довольно быстро, поскольку это субъективно.

Нет разницы в том, как вы получаете доступ к ресурсу, если он защищен ACL, RBA C или чем-то еще. Если запрос http возвращает ошибку, вы можете обработать ответ и вывести любые сообщения, которые вы наберете sh. На основе «утверждений» вы, вероятно, думаете, что openid-connect / oauth2 или ваша собственная аутентификация JWT, отправляющая утверждения на стороне сервера.

Ваша собственная реализация проще для понимания, так как вы ее написали, верно? Но для написания и правильной работы требуется больше времени.

Мне известны только 2 сервера openid connect с открытым исходным кодом, это keycloak и identityserver4

Есть библиотеки для Angular, но все это очень шатко. Есть универсальная библиотека oidc / oauth2 для Angular от Манфреда Штайера, но у нее есть проблемы с потоком кода, только поток паролей и неявный поток действительно работают, а затем становится все сложнее выяснить, почему молчит refre sh не работает. Chrome готовит ie обновляет систему безопасности SameSite в ближайшее время, которая взломает многие сайты.

Есть адаптер js keycloak и репозиторий ngx-keycloak, но у них также есть свои проблемы, особенно снова token refre sh до истечения срока действия.

Существуют коммерческие провайдеры со своими библиотеками, которые я не тестировал, например, auth0 и okta.

Разработка собственной аутентификации, отдельной от ACL и / или RBA C, требует времени как на стороне сервера, так и на стороне клиента, но вы можете контролировать все. Вы можете имитировать c некоторые функции oauth2 / oid c, например конечную точку информации токена, поскольку вы отправляете JsonWebTokens (JWT).

Чем больше распределено, тем меньше монолитности c Ваше приложение тем сложнее.

Что лучше? Это всегда зависит.

0 голосов
/ 03 февраля 2020

CASL изоморфен c, поэтому может использоваться как на внутреннем, так и на внешнем интерфейсе. Для Angular @ casl / angular существует отдельный пакет, который помогает легче интегрировать CASL.

В настоящее время общая философия CASL вращается вокруг действий (или претензий) и субъектов. Сейчас я работаю над CASL v4, который будет иметь лучшую поддержку TypeScript и поддержку авторизации на основе утверждений.

Вы можете использовать CASL даже прямо сейчас, посмотрите этот комментарий для получения информации. как настроить Ability для использования базы утверждений

Обновление : кстати, есть пример интеграции между CASL и Angular. Соответствующая статья в README

...