|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Привет хабр! Для всех тех кто свято верит в авторитет массы, вот пример когда такой массовый (а следовательно авторитетный) фреймворк имеет модуль с концептуально неверной архитектурой. Итак - Spring Security. В нём мы определям правила доступа на уровне ресурса. Это противоречит здравому смыслу: откуда конкретному ресурсу знать кому разрешено им пользоваться? Пример ресурса: товар в магазине. Товар не знает какую цену за него назначил магазин. И не может сам себе проверить цену. Как должно быть правильно (а не как в Spring Security)? - Цену проверяет кассир по ценнику, и он же определяет достаточно ли денег у покупателя на данный товар Подход в Spring Security вызывает целую массу явных и неявных проблем: - Платформозависимость (работает только с ресурсами реализованными в Spring) - Правила доступа захардкожены в коде (это просто пипец, дожили) - Децентрализация правил авторизации - правила аутентификации настраиваются отдельно от правил доступа (и возможно разными людьми в разных серверах) - Сама сущность User Role противоречит естественной объектной модели - по факту это как делать доп. поле "type" в каком-то классе: получается декларативный полиморфизм. Правильно было бы выделять каждую отдельную роль в свой класс (например User, Admin) - потому что Роль - это поведение объекта, а не его данные. - Токены проверяются ресурсном сервере, что нагружает его и базу (особенно в случае хакерских атак) В результате имеем следующее: - Authorization хедер по факту является аутентификационным - Все REST API становятся stateful из-за этого (берётся роль юзера из базы каждый раз) - что противоречит само себе - Полный хаос в терминологии и реализации - а значит риск потенциальных уязвимостей - Техническая отсталость функциональности контроля доступа - Фактическое отсутствие общепринятных решений для Step-up авторизации Выводы: 1) Не надо доверять авторитету массы 2) Концепции заложенные в WWW ещё далеки от технологически совершенной реализации на практике Ваши мысли? PS: я тут уже сделал платформонезависимый протокол авторизации который всё это исправляет. Кому интересно: https://github.com/INFINITE-TECHNOLOGY/ASCEND (технически доделано на 100%, но документации нет - и возвожно и не будет никогда, т.к. никому это походу не интересно, а сил и времени не хватает) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 08:41 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Вот так например выглядит Ascend JWT: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37.
Тут и в явном виде ресурсы разрешённые, и поле prerequisite для step up, и поле refresh, и приципалы в структурированном виде... Это нормальный формат. А не то, что нам предлагает OAuth2. Там вообще отбито напрочь, expiry date это "claim". CLAIM, Карл!!! У того кто это придумывал явно были нелады с Англ. языком, потому что ни в одном из значений слова Claim, оно не подходит по смыслу того как его используют в OAuth2. И тоже самое с другой терминологией там... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 08:49 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Ну и чтобы добить, всё это stateless и поддерживает discoverability. Просто перейдите по ссылке: https://ascend-secaas.herokuapp.com/ascend/public/granting/inquire?scopeName=registeredUserScope&serverNamespace=OrbitSaaS Чтобы узнать как нужно юзеру авторизоваться, чтобы получить доступ к scope "registeredUserScope" на сервере ресурсов "OrbitSaas". Ссылка выше рабочая, смелее - нажмите. Там интересно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 08:52 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras В нём мы определям правила доступа на уровне ресурса. Это противоречит здравому смыслу: откуда конкретному ресурсу знать кому разрешено им пользоваться? Пример ресурса: товар в магазине. Товар не знает какую цену за него назначил магазин. И не может сам себе проверить цену. Вот с этого момента сразу непонятно. При чем здесь Spring Security и товар. Очевидно что автор пропустил целый слой абстракций и сразу прыгнул в предметную область. Это странно и для читающих совершенно неочевидно. Это - твоя предметная область. И бизнес устанавливает на нее свои правила. И если у тебя сыр знает сколько он стоит - то значит это выгодно для бизнеса и это ничего не нарушает. А если ты не смог SpringSec абстракции притянуть к этому умному сыру то скорее всего тебе либо SpringSec не нужен либо ты чего-то сам неверно спроектировал. В инфо-безопасности есть принцип Role-Based-Control когда следующий сет рулов управляет объектными привилениями всей системы. Типа Код: java 1. 2. 3.
Есть еще развитие с сессиями и т.д и есть бумажные версии этого стандарта которые детализируют этот куб свойств. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 10:59 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras - Децентрализация правил авторизации - правила аутентификации настраиваются отдельно от правил доступа (и возможно разными людьми в разных серверах) Это нормально. Так и работают современные системы. Яркий пример - многофакторная аутентификация проверяет кто - ты. И назначает тебе токен (или тикет). Далее ты ходишь с этим токеном и заходишь в разные интерфейсы и интерфейсы уже зная тебя и твою роль в токене авторизуют - проверяют можешь ли ты делать какое-то действие. Или еще пример. Ты приехал на конференцию. Прошел в здание через проходную. Офицер тебя проверил и выдал бейджик на котором написано "dakeiras/member". Аутентификация. Далее ты поднимаешься в конферец-холл и следующий офицер проверяет что ты участник конфы (докладчик) и пропускает тебя в рум для докладчиков. Это авторизация. Ты авторизован чтобы докладывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 11:04 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras - Правила доступа захардкожены в коде (это просто пипец, дожили) Тем хардкода в Spring - это отдельная и сложная тема. И можно топик создавать. Но если у тебя рулы безопасности определены через роли - то такой хардкод я-бы одобрил. Тоесть если сыр входит в роль "price-readers" тогда правило разрешения может выглядеть так. Код: java 1.
И такой role-based-access-contol (RBAC) можно спокойно хардкодить в код. Он не будет меняться десятки лет. Или если изменится то только с изменениями самого кода. Что само по себе нормально. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 11:10 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras - Все REST API становятся stateful из-за этого (берётся роль юзера из базы каждый раз) - что противоречит само себе Если рассматривать хедеры Rest и сам смысл Request отдельно то никакого противоречия нет. Если ты правильно проектировал Rest API как stateless то он таковым и остался. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 11:25 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Мне кажется ТС плохо читал документацию. Spring Security вполне может работать c jwt (к примеру keycloak). Если его мало, то вполне можно реализовать свой spring-security-провайдер, который будет работать с твоим токеном. Плюс даже без завязки на базу данных/хардкод чего-либо в коде/без обращений на сервер авторизации и всех этих страшных вещей P.S. не особо понял, что в твоем jwt-токене такого особенного, чтобы к примеру такую же функциональность нельзя было бы реализовать в keycloak или т.п. ? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 12:37 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Я не вижу в сорцах чтобы автор использовал аннотации @Secured, @RolesAllowed. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 12:59 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Ну пока вообще не ясно, что есть кроме токена. Как с этим должен работать человек, который захочет прикрутить эту штуку себе? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 13:05 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Непонянто. Автору я предлагаю добавить в README.md краткий пример на 5-10 строчек. Как подключить в свой проект его штуку. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 13:08 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
всем спасибо за комментарии, на свежую голову отвечу сегодня чуть позже подробно. По использованию - тоже покажу. Интерес есть, это оч. радует - значит буду делать документацию и рассказывать тут. Из особенностей - в токене есть регулярные выражения для валидаци доступа к URL (с %подстановками%), т.е. токен самовалидируемый. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 13:21 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Я кстати обнаружил вредноносный код у тебя. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 13:36 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
mayton Я кстати обнаружил вредноносный код у тебя. какой из: Class.forName или context.getBean? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 20:15 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Вот этот. Надо срочно убрать из кода. Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 20:20 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
авторИ если у тебя сыр знает сколько он стоит - то значит это выгодно для бизнеса и это ничего не нарушает. Правильно пишете, с точки зрения традиционного понимания Web безопасности. Но что мы тут предлагаем - поменять это понимимание: вынести безопасность в отдельный инфраструктурный слой, прозрачный для приложений. Т.е. то, как это и было задумано изначально при проектировании Веба (но к сожалению не было осилено до сих пор). авторЭто нормально. Так и работают современные системы. Яркий пример - многофакторная аутентификация проверяет кто - ты. И назначает тебе токен (или тикет). Далее ты ходишь с этим токеном и заходишь в разные интерфейсы и интерфейсы уже зная тебя и твою роль в токене авторизуют - проверяют можешь ли ты делать какое-то действие. Или еще пример. Ты приехал на конференцию. Прошел в здание через проходную. Офицер тебя проверил и выдал бейджик на котором написано "dakeiras/member". Аутентификация. Далее ты поднимаешься в конферец-холл и следующий офицер проверяет что ты участник конфы (докладчик) и пропускает тебя в рум для докладчиков. Это авторизация. Ты авторизован чтобы докладывать. Да, но и в реальном мире это уязвимость в JWT. Вот пример сценария из платёжного мира: Как сделано в EMV (правильно): 1) Криптограмма (авторизационный токен) транзакции атомарна и содержит в себе аутентификационные данные (PVV или PIN Offset - проверочные значения ПИНа), и сумму покупки. При этом сумма показывается на терминале в момент ввода ПИНа. Как это было бы сделано в JWT (неправильно): 1) Всё тоже самое, но Вы не видите для какой суммы Вы вводите ПИН. И эта информация (авторизационная) не включается в JWT токен (аутентификационный). В итоге с Вас списывают больше денег чем нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 21:13 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
del ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 21:13 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
авторЯ не вижу в сорцах чтобы автор использовал аннотации @Secured, @RolesAllowed. Потому что они как раз и замещаются. См. ниже ссылки. авторЕсли рассматривать хедеры Rest и сам смысл Request отдельно то никакого противоречия нет. Если ты правильно проектировал Rest API как stateless то он таковым и остался. В широком смысле: если используется контекст, это уже не Stateless. Роль пользователя в контексте хранится. В общем, это неидеальная ситуация. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 21:22 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
авторМне кажется ТС плохо читал документацию. Spring Security вполне может работать c jwt (к примеру keycloak). Если его мало, то вполне можно реализовать свой spring-security-провайдер, который будет работать с твоим токеном. Плюс даже без завязки на базу данных/хардкод чего-либо в коде/без обращений на сервер авторизации и всех этих страшных вещей P.S. не особо понял, что в твоем jwt-токене такого особенного, чтобы к примеру такую же функциональность нельзя было бы реализовать в keycloak или т.п. ? И всё это остаётся узко связанным с кодом приложения. авторНу пока вообще не ясно, что есть кроме токена. Как с этим должен работать человек, который захочет прикрутить эту штуку себе? авторНепонянто. Автору я предлагаю добавить в README.md краткий пример на 5-10 строчек. Как подключить в свой проект его штуку. Очень просто, и максимально отвязанно от самих приложений. Клиентская часть (Ascend Granting Client Java SDK): Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Вот всё, что требуется. Такой код сделает следующее внутри: 1) Спросит у Авторизационного сервера, какие есть варианты для авторизации для scope "OrbitSaas" 2) Автоматически даст юзеру выбрать желаемый вариант аутентификации и авторизации (интерактивно) 3) Поищет в клиентском хранилище, есть ли уже такие активные (non-expired, not exceeded usage count) авторизации (или Refresh к ним) 4) Если нет - Соберёт данные для аутентификации (включая пользовательский ввод) 5) Пошлёт авторизационный запрос на Authorization Granting Server. 6) Получит авторизационный токен, сохранит его в пользовательское хранилище 7) Включит его в запрос к защищённому ресурсу (и увеличит счётчик использований в клиентском хранилище) Сейчас делается клиентский SDK для JavaScript. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 21:37 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
На сервере (защищённом ресурсе): https://github.com/INFINITE-TECHNOLOGY/ORBIT/tree/master/orbit-sdk/src/main/groovy/io/infinite/orbit/configurations/security Т.е. фильтр: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
Но по факту это может быть платформонезависимый реверс прокси. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 21:43 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
И таких картинок много, документация готова на 70%. Не хватает времени добить :( ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 21:52 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Сорри, sql.ru не даёт картинку изменить в редактировании сообщения. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 22:00 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras И всё это остаётся узко связанным с кодом приложения. Права довольно часто и есть часть логики приложения. Как быть с правами, которые даются пользователю не напрямую? К примеру: пользователь может видеть/редактировать все объекты у подчиненных ему других пользователей. Или на объекты из определенных регионов и т.п. Довольно много систем, которые не могут быть завязаны только на урлы ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 22:21 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras авторЯ не вижу в сорцах чтобы автор использовал аннотации @Secured, @RolesAllowed. Потому что они как раз и замещаются. См. ниже ссылки. Где конкретнее смотреть? На что они замещаются? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 22:34 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
ТС имеет в виду, что все проверки замещаются одним фильтром OrbitJwtTokenAuthenticationFilter ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 22:38 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
mayton dakeiras пропущено... Потому что они как раз и замещаются. См. ниже ссылки. Где конкретнее смотреть? На что они замещаются? Вот пример приложения, защищённого с помощью Ascend: https://github.com/INFINITE-TECHNOLOGY/ORBIT Конкретнее, вот тут вся конфигурация Spring Security, делегирующая проверки в Ascend. https://github.com/INFINITE-TECHNOLOGY/ORBIT/tree/master/orbit-sdk/src/main/groovy/io/infinite/orbit/configurations/security ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 22:39 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
SpringMan ТС имеет в виду, что все замещается одним фильтром OrbitJwtTokenAuthenticationFilter Да, спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 22:39 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
А, кстати вот пример клиентской реализации в Swing. (код самого GUI плохой, прошу не ругаться - он для демонстрации концепта только). https://github.com/INFINITE-TECHNOLOGY/ORBIT/tree/master/orbit-gui ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 22:42 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras mayton пропущено... Где конкретнее смотреть? На что они замещаются? Вот пример приложения, защищённого с помощью Ascend: https://github.com/INFINITE-TECHNOLOGY/ORBIT Конкретнее, вот тут вся конфигурация Spring Security, делегирующая проверки в Ascend. https://github.com/INFINITE-TECHNOLOGY/ORBIT/tree/master/orbit-sdk/src/main/groovy/io/infinite/orbit/configurations/security Разве так делаются презентации? Чувак ты серъезно? Ты пришел критиковать SpringSecurity и вместо 3 слайдов - ты предлагаешь ОЗНАКОМИТЬСЯ с исходным кодом чегото там такого. И после этого сделать выводы что фреймворк с мировым именем имеет неверную архитектуру? Ты серъезно, родной? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 22:43 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
mayton dakeiras пропущено... Вот пример приложения, защищённого с помощью Ascend: https://github.com/INFINITE-TECHNOLOGY/ORBIT Конкретнее, вот тут вся конфигурация Spring Security, делегирующая проверки в Ascend. https://github.com/INFINITE-TECHNOLOGY/ORBIT/tree/master/orbit-sdk/src/main/groovy/io/infinite/orbit/configurations/security Разве так делаются презентации? Чувак ты серъезно? Ты пришел критиковать SpringSecurity и вместо 3 слайдов - ты предлагаешь ОЗНАКОМИТЬСЯ с исходным кодом чегото там такого. И после этого сделать выводы что фреймворк с мировым именем имеет неверную архитектуру? Ты серъезно, родной? Не делаются, согласен 100%. Интерес есть, я очень рад. Теперь есть мотивация сделать норм. документацию и презентацию. Чуть подождите (1-2 месяца). Ещё раз спасибо за комментарии. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 22:49 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Мне кажется за тобой должок. Ты еще по своему Толстому Робину-Бобину обещал выкатить доклад. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 22:51 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
энтузиазм похвален и в чем-то даже вызывает зависть. но позиционирование в стиле "Д'артаньян прибывает в Париж" неизменно наталкивают на мысли, что имеешь дело с каким-то городским сумасшедшим. Ничего личного ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2020, 11:46 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
chpasha энтузиазм похвален и в чем-то даже вызывает зависть. но позиционирование в стиле "Д'артаньян прибывает в Париж" неизменно наталкивают на мысли, что имеешь дело с каким-то городским сумасшедшим. Ничего личного ;) я сам себя очень долго убеждал что я не поехал. И даже до сих пор немного убеждаю. Но вроде всё срослось и решение отлично работает на омологационном проекте. Это при том что это же решение несколько лет в банке на проде крутится (реализованное индусами по моему ТЗ). И тогда та же самая ситуация была. Это реально опасно для мозга такими проектами заниматься, ночами не спишь - продумываешь решения. Кстати поэтому и такая интонация у меня, немного с чувством несправедливости :) С другой стороны, сделав прошлой осенью мега проект на много миллиардов баксов без единого бага (написав транспилятор Кобола в Яву), уверенность в себе оч. возраста, да... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2020, 14:15 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras chpasha энтузиазм похвален и в чем-то даже вызывает зависть. но позиционирование в стиле "Д'артаньян прибывает в Париж" неизменно наталкивают на мысли, что имеешь дело с каким-то городским сумасшедшим. Ничего личного ;) я сам себя очень долго убеждал что я не поехал. И даже до сих пор немного убеждаю. По поводу всех велосипедов связанных с безопасностью. Я брошу 5 копеек. Очень многие Кулибины и Бахметьевы делают свои фреймворки и библиотечки. Но их разработки не имеют никакого значения до тех пор пока не будет экспертизы со стороны людей которые инфо-безопасностью занимаются. И ругать здесь Spring - не продуктивно. Spring это связующий клей для фреймворков. Он просто предлагает самый верхний уровень абстракций. Если я аннотирую метод @Secured - то я не регламентирую никоим образом ни алгоритм ни протокол проверки сертификата пользователя. Я отдаю его на откуп библиотеке и конфигурации. Сюда-же до кучи фильтры сервлетов и прочее. Это просто абстракции. Ответсвтенность за реализацию и за то как сконфигурировано девелопер берет на себя. Это тоже самое что внедрить неправильно симметричное шифрование и спалить ключ прямо в сорцах. Вроде ты и юзал сертифицированные технологии. Но спалился по глупости. А если ты нашел в JWT Token дефект безопасности - пожалуйста пиши баги сюда https://github.com/lcobucci/jwt/issues если это действительно баг или предложения по изменениям. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2020, 14:31 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Mayton, насчёт "не изобретать свой фреймворк безопасности и не экспериментировать" - это правильно и общеизвестный факт. И я с ним согласен. Кстати я занимаюсь безопасностью в частности. Но это не отменяет вышенаписанное. Могу сказать одно: есть разрыв между теоретическим аппаратом Веб Безопасности и прикладными моделями предметных областей (ООП, та же Java). Это кстати вызвано отмороженностью (отбитостью) некоторых безопасников, за ними замечено уже :) Но тем не менее эта проблема имеет место и применима и к Spring Security. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2020, 14:38 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Дада. Это в первую очередь относится к теме топика Spring Security имеет неверную архитектуру Тема слишком громкая и вызывающая. Я думаю что ее стоит смягчить. Этот топик - закрыть. А тебе - поднять новый. По безопасности карточных продуктов. Насколько я понял это твой основной поинт. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2020, 14:46 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras, Кстати, посмотрел мельком код вашего очередного решения Правильно ли я понимаю: 1) При изменении пути к контроллеру в случае вашего решения необходимо так же писать скрипт для обновления базы данных (изменение urlTemplate или как он там) 2) Если у меня в body передается что-то в формате, не представимом в виде строки (например - protobuf) - ваше решение не позволяет проверить содержимое body 3) Что с проверкой безопасности в случае multipart request? 4) Что с проверкой безопасности, если в body text/plain, но размеров в пару гигабайт?:) 5) Кеширования регулярных выражений нет, то есть паттерны разбираются на каждый запрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 12:21 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Lelouch, Привет, спасибо за хорошие вопросы. автор1) При изменении пути к контроллеру в случае вашего решения необходимо так же писать скрипт для обновления базы данных (изменение urlTemplate или как он там) Это будет делаться через гуй, которого пока нет. Поэтому пока через базу там. Гуй уже в процессе создания, на Vue.js. автор2) Если у меня в body передается что-то в формате, не представимом в виде строки (например - protobuf) - ваше решение не позволяет проверить содержимое body Проверка Body концептуально хитрая задача. Взять хотя бы Spring ACL - это ужас, и к тому же не все случаи поддерживает (HATEOAS тот же нормально не поддержать). Поэтому предлагается следующая конвенция: - Ownership of parent entity проверяется через URL regex, при этом рекомендуется "Myself" approach: "{chanelName}/videos" - Ownership of nested entities проверяется через Body regex, но при этом используется только HATEOAS/HAL, т.к. это позволяет избежать нормализации Body и всяких атак на regex. Т.е. вот так предлагается делать (пишу по памяти): Код: sql 1. 2. 3. 4. 5. 6. 7.
Где john.doe это authorizedCredential в токене. И т.о. настройка безопасности: "urlRegex": "https:\/\/somehost\/someroot\/%username%\/.*" "bodyRegex": "https:\/\/somehost\/someroot\/%username%\/.*" Даёт юзеру ключать только свои ресурсы в свои ресурсы. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 09:47 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
авторЧто с проверкой безопасности в случае multipart request bodyRegex работает с прочитанным inputStream. Но как выше написано, предлагается bodyRegex использовать только с HATEOAS/HAL. Иначе легко допустить уязвимость в написании regex для JSON или XML. авторЧто с проверкой безопасности, если в body text/plain, но размеров в пару гигабайт?:) Кастомный валидатор нужен будет вместо regex. В реализации которую индусы делали по моим спекам так было сделано. Я пока это убрал для простоты. авторКеширования регулярных выражений нет, то есть паттерны разбираются на каждый запрос? Завёл задачу: https://github.com/INFINITE-TECHNOLOGY/ASCEND/issues/2 Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 09:54 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras Lelouch, Привет, спасибо за хорошие вопросы. автор1) При изменении пути к контроллеру в случае вашего решения необходимо так же писать скрипт для обновления базы данных (изменение urlTemplate или как он там) Это будет делаться через гуй, которого пока нет. Поэтому пока через базу там. Гуй уже в процессе создания, на Vue.js. Нежизнеспособно. Разработчик должен при выполнении рефакторинга каким-то образом узнать, что нужно пойти в какой-то там UI/базу и поменять там URL. При этом еще и требуется написать инструкцию для обновления (например, для релизного стенда - "при выкатывании версии 2 сходите в UI и поменяйте URL"). dakeirasПроверка Body концептуально хитрая задача. Только вот в случае спринга я могу это сделать в контроллере, аспектом, HandlerInterceptor. Скорее всего есть еще способы, лень искать. У вас - только во внешней системе. И кастомный фильтр не спасает - в таком случае мне необходимо обновлять этот фильтр всякий раз при изменении контракта. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 14:43 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 14:54 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
авторНежизнеспособно. Разработчик должен при выполнении рефакторинга каким-то образом узнать, что нужно пойти в какой-то там UI/базу и поменять там URL. в этом весь смысл. Разработчик НЕ должен управлять доступом. Им должен управлять офицер безопасности. авторТолько вот в случае спринга я могу это сделать в контроллере, аспектом, HandlerInterceptor. Повторюсь, Спринг не предоставляет никаких встроенных механизмов автоматизации проверки доступа в ACL, это отдаётся на усмотрение разработчика и сводится к написанию кода безопасности. Это создаёт риск ошибок, вовлекает разработчиков в управление доступом, а также не платформонезависимо и не централизованно. А также разрывает атомарность авторизационной транзакции, деля её на Аутентификацию (JWT) и будущую Авторизацию по факту каждого обращения к ресурсу. Это приводит к тому, что изменения правил доступа получают Обратную Силу, т.е. аутентифицированные пользователи получают новые права автоматически - что нежелательно из-за меньшей предсказуемости и контроля настройки. Ну и нагружает бизнес предложение, которое вынуждено отрабатывать атаки по доступу, т.к. безопасность смешана с бизнес логикой. А правильно было бы проверять доступ в гейтвее, на уровне инфраструктуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 14:59 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Ну нету гуя пока, уже делаю. Даже Vue.js освоил ради этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 15:01 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras Причем тут гуй? 1) Ключ вообще лучше хранить в настройках 2) Для накатывания состояния базы есть liquibase например 3) Вы чистите состояние при каждом рестарте приложения, то есть любые изменения стираются dakeirasА правильно было бы проверять доступ в гейтвее, на уровне инфраструктуры. И что делать с вашим "решением", если логика работы зависит от прав пользователя?:) dakeirasРазработчик НЕ должен управлять доступом. Им должен управлять офицер безопасности. 1) Разработчик должен корректно реализовать ПРОВЕРКИ доступа пользователя. Управлять доступом конкретных пользователей он естественно не должен 2) Что делать в случае не http протокола?:) Например в одном из моих проектов можно взаимодействовать с системой через JDBC/ODBC драйвер. Каким образом это вообще реализуемо в вашей системе - никаким?:) dakeiras Спринг не предоставляет никаких встроенных механизмов автоматизации проверки доступа в ACL, это отдаётся на усмотрение разработчика и сводится к написанию кода безопасности. 1) Ну то есть вы в этом топике сравниваете апельсин и лопату? 2) @PreAuthorize("isFullyAuthenticated() and @mySecurityBean.hasAccessTo(#objectId)") - не является "автоматизацией проверки доступа в acl"? или имеется в виду, что таки нужно реализовать этот самый mySecurityBean? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 15:17 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
авторПричем тут гуй? 1) Ключ вообще лучше хранить в настройках 2) Для накатывания состояния базы есть liquibase например 3) Вы чистите состояние при каждом рестарте приложения, то есть любые изменения стираются Это публичный ключ, его без разницы где хранить. Как только появится гуй, этот класс вообще исчезнет, т.к. настройки будут правится через ГУЙ только. Зато видно наглядно как настраивается на кокнетных примерах. авторИ что делать с вашим "решением", если логика работы зависит от прав пользователя?:) Это неправильная архитектура. Логика не должна зависеть от прав доступа. Т.е. Админ - это не Юзер, совсем. Это - другая сущность и другая identity. И у админа должно быть отдельное админское приложение. Всё что должно быть - авторизация и step up авторизация. При этом step up не влияет на логику никак - лишь даёт доступ к существующей логике, но не меняет её. Пример - менюшки. Неправильно делать так: Код: java 1. 2. 3. 4. 5. 6.
Правильно делать отдельные приложения для юзеров и отдельные для админов. Это улучшает качество кода, упрощает тестирование и внесение изменений. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 15:31 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
авторРазработчик должен корректно реализовать ПРОВЕРКИ доступа пользователя. Управлять доступом конкретных пользователей он естественно не должен Логика проверки доступа является частью управления доступом, т.е. разработчик может умышленно сделать backdoor. авторЧто делать в случае не http протокола?:) Например в одном из моих проектов можно взаимодействовать с системой через JDBC/ODBC драйвер. Каким образом это вообще реализуемо в вашей системе - никаким?:) Ascend - система Веб безопасности, поддерживает только протокол HTTP. авторили имеется в виду, что таки нужно реализовать этот самый mySecurityBean? Да, имеется в виду реализация логики. Вообще, давайте на секунду абстрагируемся от Спринга. Ascend встроенный в Reverse Proxy или в гейтвей платформонезависим, и обеспечивает безопасность любых Веб приложений, например PHP, Python, и т.д. Достаточно контейнеризовать legacy приложение и спрятать его в частной подсети в контейнере. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 15:36 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras аутентифицированные пользователи получают новые права автоматически - что нежелательно из-за меньшей предсказуемости и контроля настройки. Приведите пример, когда это плохо? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 15:39 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras, dakeirasЛогика не должна зависеть от прав доступа. Логика легко может зависеть от роли пользователя. Вы видимо считаете, что роли безопасности не могут быть частью "бизнес процессов". Это не так. dakeirasПравильно делать отдельные приложения для юзеров и отдельные для админов. Это улучшает качество кода, упрощает тестирование и внесение изменений. "Менеджер" в автосалоне может сделать 2 скидки в день, а "старший менеджер" - 10. Одновременно с этим "менеджер" не может продать машину без одобрения "старшего менеджера". 1) Видимо кто-то из них "админ", а кто-то "юзер"?:) 2) Вы видимо предлагаете реализовать 1 ограничение минуя правовую модель, а второе - в ней? А как у вас можно проверить состояние одобрения? 3) нужно для каждого по отдельному приложению сделать?:) P.S. Пример выше - выдуманный У меня ощущение что вы взяли из нормальных SECAAS только 1 функцию - ограничение доступа к ресурсам - и пытаетесь ее продать githubMonthly: 0-5000 successfully granted authorizations - free Each extra: $0.01 per each successful authorization grant Кстати, а что будет, если я защищу что-либо вашей системой, а ее взломают? Сколько вы мне денег в таком случае заплатите? P.S. А что если у меня приложение с сессиями и url + body ни разу не достаточны для понимания, что делает пользователь? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 15:42 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
mayton dakeiras аутентифицированные пользователи получают новые права автоматически - что нежелательно из-за меньшей предсказуемости и контроля настройки. Приведите пример, когда это плохо? Вы купили Единый проездной на 1 неделю, он включает: - Автобус - Трамвай - Метро Но через 3 дня из тарифа убирают Трамвай. Ваш Единый это тоже затрагивает, т.к. он содержит только привязку к тарифу, но не указывает какие конкретно он разрешает виды транспорта. А по хорошему, должно было затронуть только билеты выпущенные после изменения правил доступа. Можно добавить проверку на дату\время конечно, но это костыль в данном случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 15:52 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras mayton пропущено... Приведите пример, когда это плохо? Вы купили Единый проездной на 1 неделю, он включает: - Автобус - Трамвай - Метро Но через 3 дня из тарифа убирают Трамвай. Ваш Единый это тоже затрагивает, т.к. он содержит только привязку к тарифу, но не указывает какие конкретно он разрешает виды транспорта. А по хорошему, должно было затронуть только билеты выпущенные после изменения правил доступа. Можно добавить проверку на дату\время конечно, но это костыль в данном случае. Классный пример из сторонней области. Вот вам более релевантный: 1) Злоумышленник узнал мой логин и пароль. Я срочно звоню админу с просьбой срезать мне все права. Злоумышленник продолжает спокойно работать со старым токеном. Прекрасное решение, я считаю. 2) Стажеру Васе случайно дали право на функцию "Achtung!!! Налоговая! Отправить сервер с черной бухгалтерией в космос!!!", но спохватились и через 10 секунд забрали. Но у Васи видимо доступ должен остаться :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 15:54 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
авторP.S. А что если у меня приложение с сессиями и url + body ни разу не достаточны для понимания, что делает пользователь? Пока условно пусть будет что Stateful не поддерживается. авторКстати, а что будет, если я защищу что-либо вашей системой, а ее взломают? Сколько вы мне денег в таком случае заплатите? Это надо страховую вовлекать для покрытия рисков. автор"Менеджер" в автосалоне может сделать 2 скидки в день, а "старший менеджер" - 10. Одновременно с этим "менеджер" не может продать машину без одобрения "старшего менеджера". 1) Видимо кто-то из них "админ", а кто-то "юзер"?:) 2) Вы видимо предлагаете реализовать 1 ограничение минуя правовую модель, а второе - в ней? А как у вас можно проверить состояние одобрения? 3) нужно для каждого по отдельному приложению сделать?:) P.S. Пример выше - выдуманный Да. Это разные классы\сущности: Код: java 1. 2. 3.
Возможно в общей иерархии наследования, но не обязательно. Никаких флагов "isSeniorManager" не должно быть. Это неправильное объектное моделирование. Роль пользователя это его поведение, а не статус. Это кстати одна из основных ошибок в Spring Security - у них какой-то декларативный полиморфизм в виде hasRole(..) сделан. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 16:03 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras, dakeirasДа. Это разные классы\сущности: А если в другом автосалоне 5 ролей - то им нужно отдельную версию с 5 классами делать? Coolstory. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 16:06 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Lelouch dakeiras, dakeirasДа. Это разные классы\сущности: А если в другом автосалоне 5 ролей - то им нужно отдельную версию с 5 классами делать? Coolstory. Да. А что, Вам классов жалко? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 16:07 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras mayton пропущено... Приведите пример, когда это плохо? Вы купили Единый проездной на 1 неделю, он включает: - Автобус - Трамвай - Метро Но через 3 дня из тарифа убирают Трамвай. Ваш Единый это тоже затрагивает, т.к. он содержит только привязку к тарифу, но не указывает какие конкретно он разрешает виды транспорта. А по хорошему, должно было затронуть только билеты выпущенные после изменения правил доступа. Можно добавить проверку на дату\время конечно, но это костыль в данном случае. Я не вижу тут особой проблемы. Уменьшай действие токена до 1 суток или до 1 часа и получишь безопасность управляемую с нужной филегранностью. Искать перфекционизма здесь невозможно т.к. все алгоритмы криптографии и инфо-безопасности являются компромиссом между нагрузкой на вычисления и полезным эффектом. Вряд-ли законы меняются чаще чем 1 раз в сутки. И если человек уволен сегодня то через сутки его токен экспарится (чел к тому времени подписал обходной лист и получил на руки расчет) и все доступы для него уже закрыты. Тоесть это не идеологическая проблема а настроечная. Настраивай срок токена так как тебе удобно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 16:10 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras Lelouch dakeiras, пропущено... А если в другом автосалоне 5 ролей - то им нужно отдельную версию с 5 классами делать? Coolstory. Да. А что, Вам классов жалко? :) Нет. Я коробку продавать хочу, а не допиливать классы в зависимости от того, кто к кому за подписью ходит. При том что эта структура еще и изменяться будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 16:11 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
[quot mayton#22136481] dakeiras Я не вижу тут особой проблемы. Уменьшай действие токена до 1 суток или до 1 часа и получишь безопасность управляемую с нужной филегранностью. Искать перфекционизма здесь невозможно т.к. все алгоритмы криптографии и инфо-безопасности являются компромиссом между нагрузкой на вычисления и полезным эффектом. Вряд-ли законы меняются чаще чем 1 раз в сутки. И если человек уволен сегодня то через сутки его токен экспарится (чел к тому времени подписал обходной лист и получил на руки расчет) и все доступы для него уже закрыты. Тоесть это не идеологическая проблема а настроечная. Настраивай срок токена так как тебе удобно. Согласен, текущая схема существует, это не критично. Но просто иллюстрирует продуманность решения в "Ascend", именно с точки зрения предсказуемой абстрактной модели безопасности. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 16:13 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras Это надо страховую вовлекать для покрытия рисков. Ну так вовлекайте. Или вы предлагаете клиенту платить вам + самостоятельно страховать риски?) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 16:14 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Lelouch dakeiras пропущено... Да. А что, Вам классов жалко? :) Нет. Я коробку продавать хочу, а не допиливать классы в зависимости от того, кто к кому за подписью ходит. При том что эта структура еще и изменяться будет. Можно параметризовать однотипные Identity. Это избавит от необходимости делать отдельные сущности в CRM. И ещё сильнее сократит настройку. Но админ это 100% другая сущность. Админ не должен иметь доступ к функционалу пользователя (например фин. трасферы). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 16:17 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Lelouch dakeiras Это надо страховую вовлекать для покрытия рисков. Ну так вовлекайте. Или вы предлагаете клиенту платить вам + самостоятельно страховать риски?) Я пока инвестора не нашёл для этого проекта. И не уверен что вообще найду. Возможно придётся самому всё доделывать своими силами. Тогда там будет отказ от отвественности в T&Cs. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 16:19 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras Правильно делать отдельные приложения для юзеров и отдельные для админов. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 16:25 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras Lelouch пропущено... Нет. Я коробку продавать хочу, а не допиливать классы в зависимости от того, кто к кому за подписью ходит. При том что эта структура еще и изменяться будет. Можно параметризовать однотипные Identity. Это избавит от необходимости делать отдельные сущности в CRM. И ещё сильнее сократит настройку. Но админ это 100% другая сущность. Админ не должен иметь доступ к функционалу пользователя (например фин. трасферы). Вообще-то мой вопрос был в том, как это реализовать, базируясь на вашей системе. Видимо никак. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 16:26 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Lelouch Вообще-то мой вопрос был в том, как это реализовать, базируясь на вашей системе. Видимо никак. Там же есть в том же файле настроечном админский доступ. Всё видно как делать. Ascend абстрактно спроектирован, он ничего не знает ни о пользователях, ни о ролях и т.д. Он оперирует только 5 сущностями: - Authorization - Identity - Authentication - Scope - Grant авторКлассный пример из сторонней области. Вот вам более релевантный: 1) Злоумышленник узнал мой логин и пароль. Я срочно звоню админу с просьбой срезать мне все права. Злоумышленник продолжает спокойно работать со старым токеном. Прекрасное решение, я считаю. 2) Стажеру Васе случайно дали право на функцию "Achtung!!! Налоговая! Отправить сервер с черной бухгалтерией в космос!!!", но спохватились и через 10 секунд забрали. Но у Васи видимо доступ должен остаться :) Сорри пропустил этот комментарий. Для этого существует опциональный механизм Refresh, он нативно поддерживается в Ascend. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 16:34 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
авторПотом окажется, что у пользователей существуют функциональные и организационные роли, для которых тоже "надо делать отдельные приложения"? Это чрезвычайно плохая практика менять ГУЙ в зависимости от "роли пользователя". Древнее зло бизнес анализа, до сих пор живущее - при том по всему миру. Надо показывать все существующие опции в теории доступные юзеру в его иерархии step up авторизаций. Даже если он не является кем-то, кто имеет доступ до этих опций. Т.е. Менеджер видит меню Старшего Менеджера - и может позвать его чтобы тот от своего имени провёл операцию. Это - хорошая практика. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 16:39 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
В общем полиморфирующий ГУЙ это неправильно концептуально. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 16:50 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras Lelouch Вообще-то мой вопрос был в том, как это реализовать, базируясь на вашей системе. Видимо никак. Там же есть в том же файле настроечном админский доступ. Всё видно как делать. Ascend абстрактно спроектирован, он ничего не знает ни о пользователях, ни о ролях и т.д. Он оперирует только 5 сущностями: - Authorization - Identity - Authentication - Scope - Grant Получается, для достижения указанных целей разработчик должен 1) Иметь возможность получить объект с информацией о разрешениях пользователя (я могу сильно ошибаться, но сейчас "разрешения" это набор регулярных выражений. Работать с этим на уровне кода нереально) 2) Написать код, который будет выполнять эти проверки ( вы считаете такой код - ошибкой дизайна ) P.S. Я все таки хочу получить ответ, как с помощью вашего решения реализовать указанный сценарий. Причем, без кода на уровне защищаемого приложения. На данный момент я считаю что это невозможно. На тему сравнения вашего решения со Spring Security: сравнение с Keycloak было бы более релевантно ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 16:58 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Lelouch, Посмотрите классы AdminValidator и UserValidator. Всё что требуется от CRM системы - опубликовать публичный сервис валидации идентичности по GUID: validateUser/{guid}: 2xx либо 500 в случае неспешной валидации. validateAdmin/{guid} Там полностью настроенный пример лежит в файле, с админом и юзером. Proof of concept уже был сделан полностью и отлично работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 17:09 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras Lelouch, Посмотрите классы AdminValidator и UserValidator. Всё что требуется от CRM системы - опубликовать публичный сервис валидации идентичности по GUID: validateUser/{guid}: 2xx либо 500 в случае неспешной валидации. validateAdmin/{guid} Там полностью настроенный пример лежит в файле, с админом и юзером. Proof of concept уже был сделан полностью и отлично работает. При чем тут идентичность по ID? Каким образом эта идентичность позволит мне проверить что пользователь не может сделать 11 скидку или для текущего действия надо обратиться для подтверждения к другому пользователю? Пример посмотрел, API ужасен (метод принимает 2 мапы и возвращает 1 мапу). Привязаться к действию там тоже нельзя. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 17:28 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Lelouch, это вы на уровне PrototypeAuthorization настраиваете. Аутентификация сделано полностью абстрактно от её использования. Про Мапы: принимает Public и Private credentials, возвращает Authorized credentials. Я оч. долго перебирал как это упаковать, но лучшего варианта не нашёл, чем в просто мамы. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 17:32 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras Lelouch, это вы на уровне PrototypeAuthorization настраиваете. Аутентификация сделано полностью абстрактно от её использования. Про Мапы: принимает Public и Private credentials, возвращает Authorized credentials. Я оч. долго перебирал как это упаковать, но лучшего варианта не нашёл, чем в просто мамы. Все еще жду примера настройки на уровне чего угодно в вашей системе. Предупреждая дальнейшие "на уровне": PrototypeAuthorization - содержит информацию о PrototypeIdentity и PrototypeScope. PrototypeScope - содержит информацию о PrototypeGrant, который представляет из себя несколько регулярных выражений. Как мне набором регулярных выражений выполнить указанные проверки. Приведите пример пожалуйста. Естественно в запросе на скидку нет количества скидок, уже сделанных за сегодня - мы ведь не доверяем состоянию клиента. Или вы согласны, что ваше решение позволяет только проверить есть или нет доступа к конкретному ресурсу, больши ничего не умеет и ни для чего другого не предназначено. В таком случае хотелось бы увидеть сравнение с другими решениями, которые тоже это умеют. Например, можете сравнить с keycloak (по-моему, он это тоже умеет) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 17:41 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Lelouch, Понял, что требуется пример. Подготовил (ниже это PrototypeAuthorizations): Manager (3 скидки): Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Senior Manager (10 скидок): Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 18:03 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
В ServerAuthorizationValidationService проверяется maxUsageCount. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 18:06 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras Это чрезвычайно плохая практика менять ГУЙ в зависимости от "роли пользователя". Ещё можно было получить пронумерованный список команд. И тоже с дырками в нумерации. Если хоть чуть-чуть подумать, то это очень удобно: если вы помните, что у команды номер 231, то этот номер не будет зависеть от уровня ваших полномочий, хотя вы можете никогда не узнать, какие команды "скрыты" под номерами 230 или 232. С терминалом тоже самое - вы можете быть уверены, что F16 это всегда одно и тоже действие и даже можете "тыкать мышкой" в одно и тоже место экрана, не опасаясь "неожиданной реакции".Древнее зло бизнес анализа, до сих пор живущее - при том по всему миру.Это вы ничего слаще морковки не пробовали.Надо показывать все существующие опции в теории доступные юзеру в его иерархии step up авторизаций. Даже если он не является кем-то, кто имеет доступ до этих опций."Да за это убивать надо!" (ц) судья из анекдота про преферансиста. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 19:36 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras, Это ни разу не решение. Скидка считается применённой после формирования заказа, а не просто от нажатия кнопки на фронте. То есть условный вызов выглядит примерно так: POST /order { ..., discount: true, ... } Кстати, заказ может быть отменён после формирования. Ваш maxUsage от этого тоже обратно не увеличится. Итого пока что ваше решение позволяет только защищать ресурсы и для реализации более менее простой логики вне этого сценария не расширяемо. P.S. Ваш подход теоретически возможен, но потребует передачи идентификатора заказа в url и сессии на be. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 19:44 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Lelouch dakeiras, Это ни разу не решение. Скидка считается применённой после формирования заказа, а не просто от нажатия кнопки на фронте. То есть условный вызов выглядит примерно так: POST /order { ..., discount: true, ... } Кстати, заказ может быть отменён после формирования. Ваш maxUsage от этого тоже обратно не увеличится. Итого пока что ваше решение позволяет только защищать ресурсы и для реализации более менее простой логики вне этого сценария не расширяемо. P.S. Ваш подход теоретически возможен, но потребует передачи идентификатора заказа в url и сессии на be. В данном случае количество скидок - конечный ресурс. Поэтому его надо располагать на стороне ресурсного сервера, а не в авторизационном сервере. Доступ к ресурсам даётся по идентичности, но наличие ресурсов контролируется в ресурсном сервере - что логично. Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
авторКстати, заказ может быть отменён после формирования. Ваш maxUsage от этого тоже обратно не увеличится. Это уже есть в плане на доработку, для неиспользованных expired авторизаций вызывать откат аутентификаций. Пока только начинаю продумывать как это сделать правильно концептуально. Это классический пример счётчиков\лимитов\доступного остатка\баланса. Это то для чего в первую очередь эта система создавалась - чтобы гарантировать отработку функционального API при валидной авторизации. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 20:04 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, Раз вы работали на мейнфрейме, Вам понравится мой транспилятор Кобола: https://github.com/INFINITE-TECHNOLOGY/COBOL ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 20:25 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Классное слово. Похоже от "распиливать" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 20:26 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras Надо показывать все существующие опции в теории доступные юзеру в его иерархии step up авторизаций. Даже если он не является кем-то, кто имеет доступ до этих опций. Basil A. Sidorov "Да за это убивать надо!" (ц) судья из анекдота про преферансиста. это раскрытие всей структуры всем, даже тем кому и знать не положено/запрещено. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 23:37 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras Lelouch dakeiras, Это ни разу не решение. Скидка считается применённой после формирования заказа, а не просто от нажатия кнопки на фронте. То есть условный вызов выглядит примерно так: POST /order { ..., discount: true, ... } Кстати, заказ может быть отменён после формирования. Ваш maxUsage от этого тоже обратно не увеличится. Итого пока что ваше решение позволяет только защищать ресурсы и для реализации более менее простой логики вне этого сценария не расширяемо. P.S. Ваш подход теоретически возможен, но потребует передачи идентификатора заказа в url и сессии на be. В данном случае количество скидок - конечный ресурс. Поэтому его надо располагать на стороне ресурсного сервера, а не в авторизационном сервере. Доступ к ресурсам даётся по идентичности, но наличие ресурсов контролируется в ресурсном сервере - что логично. Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
авторКстати, заказ может быть отменён после формирования. Ваш maxUsage от этого тоже обратно не увеличится. Это уже есть в плане на доработку, для неиспользованных expired авторизаций вызывать откат аутентификаций. Пока только начинаю продумывать как это сделать правильно концептуально. Это классический пример счётчиков\лимитов\доступного остатка\баланса. Это то для чего в первую очередь эта система создавалась - чтобы гарантировать отработку функционального API при валидной авторизации. 1) каким образом ресурсный сервис узнаёт роль пользователя, если ваша система ее не предоставляет. И в том числе не предоставляет api для ее получения? 2) то есть вы наконец признаёте, что «защитить» что-либо кроме «ресурсов» ваша система не может. И в сложную логику тоже не может. Из чего вытекает не «защитите своё приложение легко и бесплатно без регистрации и смс» а «слелайте так, чтобы обойти ограничения моего решения и может быть будет вам счастье (только не забудьте закинуть денег)» 3) сравнения с keycloak ждать? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 00:53 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Кстати, хотелось бы уточнить - в вашей реальности есть какой-то «офицер безопасности» который одновременно знает все урлы в приложении и умеет в регулярки. Мне интересно, в каком месте можно вообще найти человека с должностью «офицер безопасности»? Банки? Других задач и клиентов в природе нет? Это намёк на то, что большинство клиентов хотят или все в одном, или интеграцию с чем-то стандартным и распространённым, например AD. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 01:07 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
вадя dakeiras Надо показывать все существующие опции в теории доступные юзеру в его иерархии step up авторизаций. Даже если он не является кем-то, кто имеет доступ до этих опций. Basil A. Sidorov "Да за это убивать надо!" (ц) судья из анекдота про преферансиста. это раскрытие всей структуры всем, даже тем кому и знать не положено/запрещено. Зачем структуру то? Просто балете в шапке ссылки: /manager /seniorManager И т.д. При нажатии проверяется доступ к этому функционалу. Если нет - не пускает и всё. А делать кашу в общей вьюшке меняющуюся и скачущую - вот за это надо убивать. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 04:39 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
mayton Классное слово. Похоже от "распиливать" ? Transpiler никогда не слышали? Babel там? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 06:08 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Lelouch Кстати, хотелось бы уточнить - в вашей реальности есть какой-то «офицер безопасности» который одновременно знает все урлы в приложении и умеет в регулярки. Мне интересно, в каком месте можно вообще найти человека с должностью «офицер безопасности»? Банки? Других задач и клиентов в природе нет? Это намёк на то, что большинство клиентов хотят или все в одном, или интеграцию с чем-то стандартным и распространённым, например AD. Да что там знать то, при нормально спроектированном API всё что требуется: - User: \/secured\/user\/%username\/.* - Admin: \/secured\/admin\/%adminname%\/.* автор1) каким образом ресурсный сервис узнаёт роль пользователя, если ваша система ее не предоставляет. И в том числе не предоставляет api для ее получения? 2) то есть вы наконец признаёте, что «защитить» что-либо кроме «ресурсов» ваша система не может. И в сложную логику тоже не может. Из чего вытекает не «защитите своё приложение легко и бесплатно без регистрации и смс» а «слелайте так, чтобы обойти ограничения моего решения и может быть будет вам счастье (только не забудьте закинуть денег)» 3) сравнения с keycloak ждать? Конечно признаю, я этого не отрицал а наоборот подчёркивал. Система для контроля доступа к веб ресурсам (HTTP->REST, SOAP, HTML (?)). Она простая как топор сама по себе. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 06:13 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Т.е. аналогия следующая: охранник (security) пускает вас в банковское хранилище, но он не знает сколько у вас на счету денег. Это знает бухгалтер, который выдаст вам деньги уже в хранилище. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 07:13 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras Раз вы работали на мейнфрейме Ну и кобола я не знаю. Не помню даже - был ли он в нашей системе. Даже RPG/400 не знаю, хотя он - точно был. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 08:43 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Basil A. Sidorov dakeiras Раз вы работали на мейнфрейме Ну и кобола я не знаю. Не помню даже - был ли он в нашей системе. Даже RPG/400 не знаю, хотя он - точно был. Да, почитал, это не мейнфрейм, другой тип компьютера. Кобол в нём кстати тоже поддерживался. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 08:48 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras Кобол в нём кстати тоже поддерживался. С другой стороны, примерно в это время, разработчики OS/400 мигрировали встроенную базу данных с "нативного" API на SQL, как основной язык манипуляции данными. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 08:51 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras mayton Классное слово. Похоже от "распиливать" ? Transpiler никогда не слышали? Babel там? Бабель? Читал Одесские рассказы Бабеля. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 11:02 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras, dakeirasДа что там знать то, при нормально спроектированном API всё что требуется: - User: \/secured\/user\/%username\/.* - Admin: \/secured\/admin\/%adminname%\/.* Сравнения с keycloak то ждать или нет?:) Или понимайте, что там без шансов?) dakeirasОхранник (security) пускает вас в банковское хранилище, но он не знает сколько у вас на счету денег. Это знает бухгалтер, который выдаст вам деньги уже в хранилище. Только в случае вашего "решения" охранник слишком туп, чтобы сообщить что на входе вип-клиент, к которому надо позвать старшего бухгалтера. (Ваше решение не позволяет получить роль пользователя, бред про передачу этого параметру в URL оставьте при себе. Это все равно что охранник на входе спрашивает "вы вип-клиент?") Кстати, тупой вопрос - как в вашем решении вообще корректно перенаправить пользователя после входа на "правильный" url (пусть будет ваш любимый /user или /admin) ?:) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 18:08 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
авторСравнения с keycloak то ждать или нет?:) Или понимайте, что там без шансов?) оно очень похоже. ОЧЕНЬ похоже. Но у меня более продуманно. Собственно оно подтверждает полностью всё написанное мной в этом топике насчёт концепции веб безопасности и как её осуществлять. И правильность моего дизайна. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 19:51 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
авторКстати, тупой вопрос - как в вашем решении вообще корректно перенаправить пользователя после входа на "правильный" url (пусть будет ваш любимый /user или /admin) ?:) Это REST URLы. Веб сайты с ГУЁм будут отдельные: https://mycoolsystem.com https://admin.mycoolsystem.com или https://mycoolsystem.com/admin (без автоматической переадресации и без доступа к юзерскому бизнес функционалу) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 19:56 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
И пара абстрактных моментов: - keycloak и ascend одновременно примерно начали делать в ~2016 - keycloak делает вроде redhat, по идее нормальная организация - поэтому вроде неплохо у них получилось - OAuth2, IETF/RFC - это шизофазийный лингвистический ужас. - Всё это вместе (Okta, Keycloak, Auth0, etc) разрозненно, плохо кореллируется с Spring Security и OAuth2 и Openidconnect. В результате возникает каша. Я о keycloak узнал только от вас. Хотя темой занимаюсь с 2016 года, по мере своих сил делал исследования решений. Надо сказать отдельное спасибо stackoverflow который засрал выборки в поисковиках. Вы считаете индусы осилят это всё? Или они осилят RFC? А кто должен кодить тогда за копейки? Если это такой хороший формат, почему он не общепринятый? (а если он общепринятый, где об этом инфа везде?) Это кризис веб безопасности. REST существует уже 15 лет. А безопасность до сих пор не стандартизированна на инфраструктурном уровне. Где RESTS (REST Secured), я вас спрашиваю? Какова стоимость внедрения и поддержки этих решений? Каковы риски уязвимостей из-за неправильной настройки и не полноценной модели безопасности? И вишенка на торте: 99% людей уверены что всё заебись и всё чётко, надо лишь зайти на stackoverflow - там за 5 минут будет рецепт как сделать безопасность :) Индусы свято верят в то что Спринг умеет вообще всё на свете. Страшно подумать сколько уязвимостей на этом уровне существует. Хакеры просто пока не дошли до этих атак. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 20:18 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
PS: только безопасникам это не говорите, пусть будут блаженны в своём неведении. Ну и кому организации должны доверять веб безопасность? Чтобы философски осмыслить всё это, требуется годы. Вы посадите человека реального эксперта по Яве, думаете он будет вникать в тонкости создания модели безопасности? Любой человек поскорее накидает что-то в настройках, лишь бы QA прошло, и всё. И спит спокойно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 20:32 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras Страшно подумать сколько уязвимостей на этом уровне существует. Хакеры просто пока не дошли до этих атак. Ну расскажи хотя-бы об одной атаке. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 21:47 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras авторСравнения с keycloak то ждать или нет?:) Или понимайте, что там без шансов?) оно очень похоже. ОЧЕНЬ похоже. Но у меня более продуманно. Шикарно. В чем же? dakeirasREST существует уже 15 лет. IP существует уже 39 лет! Где IP-secured я вас спрашиваю (LOL). Кстати, REST - не протокол:) dakeirasВсё это вместе (Okta, Keycloak, Auth0, etc) разрозненно, плохо кореллируется с Spring Security и OAuth2 и Openidconnect. В случае Keycloak интеграция на уровне "добавьте зависимость и заведется" (в том числе и со Spring Security). dakeirasХотя темой занимаюсь с 2016 года, по мере своих сил делал исследования решений. Странно, я его за 10 минут год назад нашел... dakeiraskeycloak и ascend одновременно примерно начали делать в ~2016 То есть за 4 года вы написали решение, которое умеет только защиту по URL. Объем кода за 4 года составил 126 файлов. По 41,5 файлу в год. Вы в теме бобина заливали что груви позволяет "быстро разрабатывать". Что-то не похоже) dakeirasЭто REST URLы. Веб сайты с ГУЁм будут отдельные: https://mycoolsystem.com https://admin.mycoolsystem.com или https://mycoolsystem.com/admin (без автоматической переадресации и без доступа к юзерскому бизнес функционалу) То есть если у меня пара десятков функциональных ролей я должен 20 интерфейсов нарисовать? И единую точку входа ваше "решение" тоже не умеет - необходимо изначально зайти на корректный сайт. Спасибо, хоть рассмешили:) Серьезно воспринимать это я больше не могу. Особенно после заявления о том, что keycloak не продуман, в отличии от вашего шедевра, который без спринга и чихнуть не может, в том числе на клиенте. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 23:20 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
авторТо есть если у меня пара десятков функциональных ролей я должен 20 интерфейсов нарисовать? Да. При этом это хорошая практика. Видите, Ascend вас заставляет следовать конвенции правильной. Но конечно 20 маппингов не надо делать. Делаете такой просто: Код: java 1. 2.
Т.е. предиката безопасности должна присутствовать на ифраструктурном уровне (на транспортном уровне - в URL). Это именно то как задумывался изначально REST, и я вам более того скажу - это было специально изначально заложено в HTTP его создателями. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 06:04 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras, Кстати, keycloak был выпущен в 2014 году, а не "начал разрабатываться" в 2016. Видимо с поиском у вас не задалось от слова совсем. dakeirasДа. При этом это хорошая практика. Видите, Ascend вас заставляет следовать конвенции правильной. Пока эта "конвенция" правильна только с ваших слов. Можно ссылки на что-то поавторитетнее? И пожалуйста - не в теме разделения "пользователь/администратор", а именно для ролей типа менеджер/старший менеджер. dakeiras@GetMapping("/{userRole}/{user}/documents") А если у пользователя несколько ролей? В том числе зависящих, откуда он в систему заходит? (Да, такое бывает, в одном филиале ты менеджер, в другом - старший менеджер. Где находится АРМ в который входит пользователь - известно). Хотя о чем я спрашиваю, вы опять будете что-то веселое рассказывать вместо ответов. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 10:48 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
авторКстати, keycloak был выпущен в 2014 году Это они пусть не лечат. Может где-то в недрах Red Hat (который платный вполне себе). авторПока эта "конвенция" правильна только с ваших слов. Можно ссылки на что-то поавторитетнее? Нету. Но согласитесь конвенция правильная? авторА если у пользователя несколько ролей? В том числе зависящих, откуда он в систему заходит? (Да, такое бывает, в одном филиале ты менеджер, в другом - старший менеджер. Где находится АРМ в который входит пользователь - известно). Хотя о чем я спрашиваю, вы опять будете что-то веселое рассказывать вместо ответов. Основной юскейс Ascend - единственная роль пользователя + Step Up (многоуровневый: T&Cs + Privacy Policy + Login +SMS OTP + ...) То о чём Вы говорите - наверное лучше какие-то другие решения использовать (возможно тот же Spring Security). Я никогда не говорил что Ascend универсален в чистом виде. Всё что я говорил - что Spring Security для наиболее частого юскейса веб приложений и мобильных приложений - неправилен. Keycloak только подтвердил это. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 11:30 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Наверное Вы хотите сказать: Веб безопасность: Keycloak + одновременно Функциональный доступ: Spring Security Наверное соглашусь. Ascend здесь альтернатива Keycloak. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 11:32 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Я по прежнему жду презнетацию по Робину-Бобину и по твоей супер-секюрной системе которая порвет Spring Security методы как Тузик грелку. Должок.... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 12:03 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeirasЭто они пусть не лечат. Может где-то в недрах Red Hat (который платный вполне себе). keycloak git log --reversecommit 1586f461bef88721a42e866dcbd8a4e8abbf9ce0 Author: Bill Burke <bburke@redhat.com> Date: Fri Jul 5 14:23:16 2013 -0400 dakeirasНету. Но согласитесь конвенция правильная? Бредовая конвенция на мой вкус. dakeirasВсё что я говорил - что Spring Security для наиболее частого юскейса веб приложений и мобильных приложений - неправилен. Keycloak только подтвердил это. Что именно keycloak и каким образом подтвердил? Имея в виду, что он тоже умеет "защиту ресурсов по url", просто помимо этого предоставляет, например, API для получения данных о пользователе? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 12:13 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
автор Имея в виду, что он тоже умеет "защиту ресурсов по url Именно эту идею он и подтвердил. То что она правильная. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 13:28 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras автор Имея в виду, что он тоже умеет "защиту ресурсов по url Именно эту идею он и подтвердил. То что она правильная. А то что он позволяет делать не только по урлам - это вы видимо пропустили) Мысли "это подтверждает идею того, что урлов не достаточно" не возникло? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 16:37 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Lelouch dakeiras пропущено... Именно эту идею он и подтвердил. То что она правильная. А то что он позволяет делать не только по урлам - это вы видимо пропустили) Мысли "это подтверждает идею того, что урлов не достаточно" не возникло? я и не говорил, что достаточно только URL. Но для юскейса "Мобильный банк" - достаточно и правильно. А этот топик пусть будет референсом если кто-то свято верит что Спринг всемогущ и всё кроме него не существует\не правильно. Кстати им необходимо чётко внести это в документацию. А то не очень красиво там написано: авторSpring Security is a powerful and highly customizable authentication and access-control framework. It is the de-facto standard for securing Spring-based applications. Spring Security is a framework that focuses on providing both authentication and authorization to Java applications. Like all Spring projects, the real power of Spring Security is found in how easily it can be extended to meet custom requirements https://spring.io/projects/spring-security ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 16:48 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras Lelouch пропущено... А то что он позволяет делать не только по урлам - это вы видимо пропустили) Мысли "это подтверждает идею того, что урлов не достаточно" не возникло? я и не говорил, что достаточно только URL. Но для юскейса "Мобильный банк" - достаточно и правильно. А этот топик пусть будет референсом если кто-то свято верит что Спринг всемогущ и всё кроме него не существует\не правильно. Кстати им необходимо чётко внести это в документацию. А то не очень красиво там написано: авторSpring Security is a powerful and highly customizable authentication and access-control framework. It is the de-facto standard for securing Spring-based applications. Spring Security is a framework that focuses on providing both authentication and authorization to Java applications. Like all Spring projects, the real power of Spring Security is found in how easily it can be extended to meet custom requirements https://spring.io/projects/spring-security Ваше решение повторяется стандартными средствами Спринг, причем не то чтобы сложно. dakeirasвсё кроме него не существует\не правильно. Перестань сравнивать апельсин и лопату. Спринг - это библиотека, а не "решение". Сравнивайте пожалуйста с другими решениями - например с keycloak ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 16:52 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Вот когда автор доберётся до SpringWeb, SpringData... И окажется что под капотом - херовый томкат с хибером. И тогда мы все узнаем какое говно этот Spring... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 16:56 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
mayton И тогда мы все узнаем какое говно этот Spring... пфф...это и так всем известно ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 20:09 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
mayton Вот когда автор доберётся до SpringWeb, SpringData... И окажется что под капотом - херовый томкат с хибером. И тогда мы все узнаем какое говно этот Spring... Ну почему сразу tomcat?! Там где-то притаились jetty с netty. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 06:21 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Вот именно что притаились. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 08:15 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Lelouch, >Сравнивайте пожалуйста с другими решениями +1 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 10:33 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
mayton Вот именно что притаились. Ну помниться во времена Spring Boot 1.2-1,4 с embadded Tomcat были проблемы, а вот Jetty нормально работал. А для React Spring кроме netty вообще алтернатив нет. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 12:41 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Я с год назад тестил (в этом же форуме) что собирается в сборку для Spring/Rest. Выяснили что tomcat. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 12:48 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
mayton Я с год назад тестил (в этом же форуме) что собирается в сборку для Spring/Rest. Выяснили что tomcat. Да по умолчанию, вставляется ebedded Tomcat, Но можно указать, чтобы вместо Tomcat использовать Jetty. Сам так, делал, т.к. по началу embedded tomcat глючил со Spring Data JPA. В принципе из SpringBoot можно "выбросить" и Hibernate. Можно использовать только Jdbc, через JdbcTemplate. Норм в принципе. А используя лямбды, для RowMapping, вообще красота получается. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 13:36 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Я думаю что дефолтная поставка томката в качестве веб-контейнера - как-то связана с сертификацией. Видимо он - более стандартный штоли. С Jetty - возможно есть какие-то нестыковки. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 13:42 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
mad_nazgul mayton Я с год назад тестил (в этом же форуме) что собирается в сборку для Spring/Rest. Выяснили что tomcat. Да по умолчанию, вставляется ebedded Tomcat, Но можно указать, чтобы вместо Tomcat использовать Jetty. Сам так, делал, т.к. по началу embedded tomcat глючил со Spring Data JPA. В принципе из SpringBoot можно "выбросить" и Hibernate. Можно использовать только Jdbc, через JdbcTemplate. Норм в принципе. А используя лямбды, для RowMapping, вообще красота получается. :-) Groovy SQL тоже посмотрите, если нужен чистый SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 13:51 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
mayton Я думаю что дефолтная поставка томката в качестве веб-контейнера - как-то связана с сертификацией. Видимо он - более стандартный штоли. С Jetty - возможно есть какие-то нестыковки. jetty не менее стандартный чем tomcat. А сейчас вообще, всех пересаживают потихоньку на netty (Spring React) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 14:55 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras Groovy SQL тоже посмотрите, если нужен чистый SQL. Прошу прощения, но нет. Мне больше Kotlin нравиться. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 14:56 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
mad_nazgul dakeiras Groovy SQL тоже посмотрите, если нужен чистый SQL. Прошу прощения, но нет. Мне больше Kotlin нравиться. :-) ни разу не пользовался kotlin, т.к. в Груди всё устраивает. А чем он вам больше нравится? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 17:48 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras mad_nazgul пропущено... Прошу прощения, но нет. Мне больше Kotlin нравиться. :-) ни разу не пользовался kotlin, т.к. в Груди всё устраивает. А чем он вам больше нравится? Котлин относится к классу строго-типизированных. Значит ошибок рантайма в нем будет меньше чем в Groovy. Кроме того его делает очень хорошая команда Jetbrains. Тоесть интеграция со средой будет на высоком уровне. И в котлине есть полезный синтаксический сахар которого давно ждали в Java. И есть красивые конструкции которые зашли из ФП. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 18:25 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
mayton dakeiras пропущено... ни разу не пользовался kotlin, т.к. в Груди всё устраивает. А чем он вам больше нравится? Котлин относится к классу строго-типизированных. Значит ошибок рантайма в нем будет меньше чем в Groovy. Кроме того его делает очень хорошая команда Jetbrains. Тоесть интеграция со средой будет на высоком уровне. И в котлине есть полезный синтаксический сахар которого давно ждали в Java. И есть красивые конструкции которые зашли из ФП. Всё это есть в Groovy. Насчёт команды - да, отличная проприетарная команда :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 22:20 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras mayton пропущено... Котлин относится к классу строго-типизированных. Значит ошибок рантайма в нем будет меньше чем в Groovy. Кроме того его делает очень хорошая команда Jetbrains. Тоесть интеграция со средой будет на высоком уровне. И в котлине есть полезный синтаксический сахар которого давно ждали в Java. И есть красивые конструкции которые зашли из ФП. Всё это есть в Groovy. Насчёт команды - да, отличная проприетарная команда :) Groovy далеко не строготипизированный, ну как минимум не static ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 22:31 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras mad_nazgul пропущено... Прошу прощения, но нет. Мне больше Kotlin нравиться. :-) ни разу не пользовался kotlin, т.к. в Груди всё устраивает. А чем он вам больше нравится? Я неприязненно отношусь к ЯП с не строгой типизацией. А Kotlin это та же Java, только Kotlin. :-) Много синтаксического сахара. Корутины. Команда Spring Framework работает над совместимостью с Kotlin. В отличии от Scala, где с работой Spring'ом не очень. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 06:13 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras mayton пропущено... Котлин относится к классу строго-типизированных. Значит ошибок рантайма в нем будет меньше чем в Groovy. Кроме того его делает очень хорошая команда Jetbrains. Тоесть интеграция со средой будет на высоком уровне. И в котлине есть полезный синтаксический сахар которого давно ждали в Java. И есть красивые конструкции которые зашли из ФП. Всё это есть в Groovy. Насчёт команды - да, отличная проприетарная команда :) Да я уже видел твои Бобины на груви. Мне хватило ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 09:49 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Вот демо телеграм бот, построенный на моём стеке i-t.io: http://t.me/david_it_bot - Логгер Бобина - AST для логирования (Чёрный Ящик) - CRM Орбита - Безопасность (Восход) - Базовый бот (David) Новый сайт уже готовится (можно подглядеть тут как оно будет выглядеть: https://i-t.io/website ), как и гуй для Восхода. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 12:20 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 12:33 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Ради интереса посмотрите код logback или log4j2. Тогда Бобина покажется раем. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 12:50 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras Как минимум код logback содержит комментарии и unit-тесты) Да и код бобины с публичными изменяемыми полями (или это свойства?) - тот еще адок. Как будто студент накидал. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 13:29 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Lelouch dakeiras пропущено... Ради интереса посмотрите код logback или log4j2. Тогда Бобина покажется раем. Как минимум код logback содержит комментарии и unit-тесты) Да и код бобины с публичными изменяемыми полями (или это свойства?) - тот еще адок. Как будто студент накидал. это концепция: no test, no doc. Код настолько понятен и прост, что не требует ни тестов ни документации. По этому принципу у меня весь код построен. Просто иначе в одиночку было бы не осилить такие объёмы. А что не так с публичными полями? Приватные поля это приватные ключи прочие секреты типа отп и JWT. А то что private стали использовать чтобы автокомплитом управлять в ide - ну чтош. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 13:59 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras Просто иначе в одиночку было бы не осилить такие объёмы. Приватные поля это приватные ключи прочие секреты типа отп и JWT. А то что private стали использовать чтобы автокомплитом управлять в ide - ну чтош. :) 1) Чем приватные поля помогают не давать доступ к секретам? 2) Каким образом из вашего API (например, при создании "зависимой" работы) я должен понять, что Destination#bobbinEngine должен быть установлен до начала работы Destination? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 14:10 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Lelouch dakeiras Просто иначе в одиночку было бы не осилить такие объёмы. Приватные поля это приватные ключи прочие секреты типа отп и JWT. А то что private стали использовать чтобы автокомплитом управлять в ide - ну чтош. :) 1) Чем приватные поля помогают не давать доступ к секретам? 2) Каким образом из вашего API (например, при создании "зависимой" работы) я должен понять, что Destination#bobbinEngine должен быть установлен до начала работы Destination? 1) Никак не помогают, я и не говорил что они помогают. Они предотвращают случайное обращение к ним (например при сериализации). 2) Вы про комментарии в коде или документацию? Документация есть, вот она: https://github.com/INFINITE-TECHNOLOGY/BOBBIN/wiki/3---Usage Я имел в виду документацию кода (комментарии и Java doc). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 14:16 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras Lelouch пропущено... 1) Чем приватные поля помогают не давать доступ к секретам? 2) Каким образом из вашего API (например, при создании "зависимой" работы) я должен понять, что Destination#bobbinEngine должен быть установлен до начала работы Destination? 1) Никак не помогают, я и не говорил что они помогают. Они предотвращают случайное обращение к ним (например при сериализации). 2) Вы про комментарии в коде или документацию? Документация есть, вот она: https://github.com/INFINITE-TECHNOLOGY/BOBBIN/wiki/3---Usage Я имел в виду документацию кода (комментарии и Java doc). 1) Если я "случайно" установлю bobbinEngine = null - это я ССЗБ? Или API не продумано? ИМХО 2 2) Указанная документация не отвечает на поставленный мной вопрос ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 14:18 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Lelouch dakeiras пропущено... 1) Никак не помогают, я и не говорил что они помогают. Они предотвращают случайное обращение к ним (например при сериализации). 2) Вы про комментарии в коде или документацию? Документация есть, вот она: https://github.com/INFINITE-TECHNOLOGY/BOBBIN/wiki/3---Usage Я имел в виду документацию кода (комментарии и Java doc). 1) Если я "случайно" установлю bobbinEngine = null - это я ССЗБ? Или API не продумано? ИМХО 2 2) Указанная документация не отвечает на поставленный мной вопрос Не нужно самому ничего инициализировать/устанавливать: https://github.com/INFINITE-TECHNOLOGY/BOBBIN/wiki/3---Usage#standalone-usage ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 14:39 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras Lelouch пропущено... 1) Если я "случайно" установлю bobbinEngine = null - это я ССЗБ? Или API не продумано? ИМХО 2 2) Указанная документация не отвечает на поставленный мной вопрос Не нужно самому ничего инициализировать/устанавливать: https://github.com/INFINITE-TECHNOLOGY/BOBBIN/wiki/3---Usage#standalone-usage Я специально написал - при создании зависимой работы. Например, хочу добавить свой Destination, который является оберткой для остальных Destination. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 14:47 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
del ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 16:07 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
[quot Lelouch#22139779] dakeiras Я специально написал - при создании зависимой работы. Например, хочу добавить свой Destination, который является оберткой для остальных Destination. https://github.com/INFINITE-TECHNOLOGY/BOBBIN/wiki/4---Configuration#destinations авторDestination configuration represents serialized instance of a class extending io.infinite.bobbin.config.AbstractDestinationConfig. At the moment Bobbin supports 2 Destinations out of the box: ConsoleDestinationConfig FileDestinationConfig Custom Destinations can be added by Bobbin users by extending io.infinite.bobbin.config.AbstractDestinationConfig class. Destination configuration class is specified using name field, i.e.: destinations: - name: my.own.DestinationImplementationConfig ... Не надо никакие BobbinEngine инициализировать. Всё это автоматом делается. Вот пример destination, всё примитивно: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 16:14 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras, ясвой Destination, который является оберткой для остальных Destination. https://ru.wikipedia.org/wiki/Декоратор_(шаблон_проектирования) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 18:53 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
забыл ник dakeiras пропущено... Всё это есть в Groovy. Насчёт команды - да, отличная проприетарная команда :) Groovy далеко не строготипизированный, ну как минимум не static А как же https://docs.groovy-lang.org/latest/html/gapi/groovy/transform/CompileStatic.html ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 18:56 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Lelouch, предполагаю что Вы имеете в виду паттерн декоратор. Но это не точно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 18:56 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras Lelouch, предполагаю что Вы имеете в виду паттерн декоратор. Но это не точно. Да, именно. Как я должен понять, что должен присвоить bobbinEngine внутренней реализации Destination? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 18:58 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
[quot betelgeizex#22139976] забыл ник Да, уже 100 раз это говорилось. Как и то что Груви лучше всего использовать со строгой типизацией при работе в IDE. Нестрогая типизация это для SRE всяких и жир. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 19:02 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras У тебя - детские ошибки мультипоточности нашли. На первом-же review в этом форуме. Ты пофиксил нехотя. Еле-еле. Как будто одолжение сделал. А должен был - стремительно набросится. И после этого доказать что "годен к строевой". Должен был рвать и метать и ре-а-би-ли-ти-роваться. Бенчмарки. Презентация. И форки в гитхабе и репо. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 19:04 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Lelouch dakeiras Lelouch, предполагаю что Вы имеете в виду паттерн декоратор. Но это не точно. Да, именно. Как я должен понять, что должен присвоить bobbinEngine внутренней реализации Destination? Хм, если не затруднит, можно пример кода в виде репозитория если будет время? Просто любые реализации Destination инстанциируются на базе конфига через factory, включая и обёртки (т.к. они потомки класса Destination). Factory заботится об инициализации bobbinEngine автоматически. Т.е. Вам беспокоится о внутренностях совсем не нужно. Только о функционале. Но я похоже недопонимаю. Буду рад улучшить код или документацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 19:06 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
тему не читал,так как времени нет но судя по паре первых постов ты неверно этот фреймворк имплементируешь это очень крутой и гибкий инструмент настройки секурити для любого уровня доступа по слоям/классам и тд тоесть как я тебе в другой теме написал - ты явно упустил что то по теме interface ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 19:07 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
betelgeizex забыл ник пропущено... Groovy далеко не строготипизированный, ну как минимум не static А как же https://docs.groovy-lang.org/latest/html/gapi/groovy/transform/CompileStatic.html ? While faster than normal Groovy, it can compile only a subset of Groovy and behaves a bit different. Especially all the dynamic features are not available anymore. В чем смысл тогда? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 19:13 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
[quot dakeiras#22139984] betelgeizex пропущено... Да, уже 100 раз это говорилось. Как и то что Груви лучше всего использовать со строгой типизацией при работе в IDE. Нестрогая типизация это для SRE всяких и жир. Нет, не согласен. Если Groovy использовать только со строгой типизацией, то нафиг он нужен? Для этого есть Kotlin, Scala, да и сама Java 8+ вполне ничего так уже :) Прелесть Groovy именно в том, что он позволяет оба варианта типизации.. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 19:14 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
забыл ник betelgeizex пропущено... А как же https://docs.groovy-lang.org/latest/html/gapi/groovy/transform/CompileStatic.html ? While faster than normal Groovy, it can compile only a subset of Groovy and behaves a bit different. Especially all the dynamic features are not available anymore. В чем смысл тогда? Вот только что ответил :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 19:15 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Посмотрите мои репозитории. Например Ascend тот же. Весь код @CompleStatic (через глобальный плагин), кроме явно выделенных @CompileDynamic функций - в которых собран необходимый динамический код (билдеры, парсеры и пр.). А так в Груви при @CompileStatic основные фичи: - Closure - Сам SDK с кучей полезностей - Конструкторы с явным указанием полей - AST Посмотрите мой проект @BlackBox - этот AST добавляет логирование в методы автоматически на этапе компиляции. Экономлю 50% кода и времени. Получая логирование высочайшего качества. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 19:20 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
asv79 тему не читал,так как времени нет но судя по паре первых постов ты неверно этот фреймворк имплементируешь это очень крутой и гибкий инструмент настройки секурити для любого уровня доступа по слоям/классам и тд тоесть как я тебе в другой теме написал - ты явно упустил что то по теме interface это не я был там. По Spring Security - тут пришли коллективно к такому резюме: авторВеб безопасность: Keycloak + одновременно Функциональный доступ: Spring Security (role-based) Т.е. когда нужно хитрые правила доступа реализовать (смешав с бизнес логикой) - Spring Security подойдёт. Например ERP. Для юскейса веб приложение\мобильное приложение - Keycloak (и его альтернатива - Ascend). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 19:24 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras Посмотрите мои репозитории. Например Ascend тот же. Весь код @CompleStatic (через глобальный плагин), кроме явно выделенных @CompileDynamic функций - в которых собран необходимый динамический код (билдеры, парсеры и пр.). А так в Груви при @CompileStatic основные фичи: - Closure - Сам SDK с кучей полезностей - Конструкторы с явным указанием полей - AST Посмотрите мой проект @BlackBox - этот AST добавляет логирование в методы автоматически на этапе компиляции. Экономлю 50% кода и времени. Смотрел уже... Библиотека логирования, тянущая за собой Groovy runtime в каждый Java-проект - это лютый оверхед. Не интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 19:24 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
betelgeizex dakeiras Посмотрите мои репозитории. Например Ascend тот же. Весь код @CompleStatic (через глобальный плагин), кроме явно выделенных @CompileDynamic функций - в которых собран необходимый динамический код (билдеры, парсеры и пр.). А так в Груви при @CompileStatic основные фичи: - Closure - Сам SDK с кучей полезностей - Конструкторы с явным указанием полей - AST Посмотрите мой проект @BlackBox - этот AST добавляет логирование в методы автоматически на этапе компиляции. Экономлю 50% кода и времени. Смотрел уже... Библиотека логирования, тянущая за собой Groovy runtime в каждый Java-проект - это лютый оверхед. Не интересно. Вы путаете с Бобиной. BlackBox чисто Груви проект, в Java не работает. Тут просто спрашивали какие фишки крутые в Груви. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 19:26 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Знаешь где заканчивается мета-программирование? Там где разработчик кричит - Воц а фак! Это не мой код! Я этого не писал. И я за это не хочу отвечать! А ответственность - это когда ты досконально понимаешь что в фазе компилляции или класслоадера происходит. Особенно когда продуктовый баг. И все бегают и ищут сайдэффекты. А так да... Конешно. Лупи больше минералов аннотаций ! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 19:26 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras, Код: java 1. 2. 3. 4. 5. 6. 7. 8.
Проблема в том, что из конструктора SomeOtherDestination нельзя понять, что bobbinEngine необходим для его работы. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 19:28 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras betelgeizex пропущено... Смотрел уже... Библиотека логирования, тянущая за собой Groovy runtime в каждый Java-проект - это лютый оверхед. Не интересно. Вы путаете с Бобиной. BlackBox чисто Груви проект, в Java не работает. Тут просто спрашивали какие фишки крутые в Груви. А, прошу прощения, не понял. Тут не могу не согласиться - Groovy, как ЯП, намного мощнее, чем Java (да и чем Kotlin тоже, насколько мои знания позволяют сравнивать) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 19:34 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
betelgeizex,очень смешно читать такое) язык построеный на джава мощнее чем джава)) твой груви через пару лет будет там же где и все остальные поющие писуары- тоесть в писуаре) а джава еще лет 20 протянет благодаря спринг ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 19:49 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
asv79 betelgeizex,очень смешно читать такое) язык построеный на джава мощнее чем джава)) твой груви через пару лет будет там же где и все остальные поющие писуары- тоесть в писуаре) а джава еще лет 20 протянет благодаря спринг Бггг.. Java - 25 лет, Groovy - 17 лет. Пару лет, говорите?.. И да, постарайтесь понять разницу между "построенный на Java" и "построенный на JVM". Пригодится. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 19:56 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
asv79 betelgeizex,очень смешно читать такое) язык построеный на джава мощнее чем джава)) твой груви через пару лет будет там же где и все остальные поющие писуары- тоесть в писуаре) а джава еще лет 20 протянет благодаря спринг Джава превратилась в ужас стараниями индусов из Оракла. По факту джава это ходячий труп вместе со Спрингом и Spring Data Flow. Это такой COBOL или PL/SQL только поновее. Это доказывается переходом Андройда на котлин. Просто у Груви нету бабла за плечами и PR. Опен сорс он такой, как художник нищий его каждый может обидеть. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 19:59 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Я бы тут сказал про Graal VM но уверен что Оракл и его засрёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 20:01 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Тема Spring-Security закончилась. Уже пошли непотребства. Пора закрывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 20:09 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras asv79 betelgeizex,очень смешно читать такое) язык построеный на джава мощнее чем джава)) твой груви через пару лет будет там же где и все остальные поющие писуары- тоесть в писуаре) а джава еще лет 20 протянет благодаря спринг Джава превратилась в ужас стараниями индусов из Оракла. По факту джава это ходячий труп вместе со Спрингом и Spring Data Flow. Это такой COBOL или PL/SQL только поновее. Это доказывается переходом Андройда на котлин. Просто у Груви нету бабла за плечами и PR. Опен сорс он такой, как художник нищий его каждый может обидеть. Вы озвучиваете другую крайность. Java кому-то кажется устаревшей, но исключительно из-за отличной обратной совместимости. Не помню ни одной другой платформы, которая может этим похвастаться. PS. Android - это не Java ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 20:11 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
mayton Тема Spring-Security закончилась. Уже пошли непотребства. Пора закрывать. Так давно уже mayton dakeiras пропущено... Всё это есть в Groovy. Насчёт команды - да, отличная проприетарная команда :) Да я уже видел твои Бобины на груви. Мне хватило ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 20:16 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Андроид - вообще не показателен. Т.к. многие решения в его дизайне были сделаны под давлением американских законов и судов. И для Google было выгодно завлечь аудиторию молодых разработчиков уже знакомым языком. А потом - суды. С Oracle. Изменение спецификации байткода. По сути - новая виртуалка которая бинарно вообще не похожа на JVM. И сегодня - у них уже есть возможность спокойно менять языки т.к. lifecycle обычных приложений для телефонов - короткий. 3-5 лет и капец. Это же не сравнить с банковским ПО которое живет по 20 лет и его не то что заменить ... на него дыхнуть боятся потому-то 24/7 и PO заинтересован чтоб оно просто жило себе и приносило прибыли. А о миграциях на Груви или Котлин может думать только сумашедний. Ну не верите мне - спросите ваших знакомых архитекторов которые сидят в ент. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 20:19 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
mayton Андроид - вообще не показателен. Т.к. многие решения в его дизайне были сделаны под давлением американских законов и судов. И для Google было выгодно завлечь аудиторию молодых разработчиков уже знакомым языком. А потом - суды. С Oracle. Изменение спецификации байткода. По сути - новая виртуалка которая бинарно вообще не похожа на JVM. И сегодня - у них уже есть возможность спокойно менять языки т.к. lifecycle обычных приложений для телефонов - короткий. 3-5 лет и капец. Это же не сравнить с банковским ПО которое живет по 20 лет и его не то что заменить ... на него дыхнуть боятся потому-то 24/7 и PO заинтересован чтоб оно просто жило себе и приносило прибыли. А о миграциях на Груви или Котлин может думать только сумашедний. Ну не верите мне - спросите ваших знакомых архитекторов которые сидят в ент. В банках до сих пор Кобол во многих западных (и восточных тоже). Он хуже Явы только потому что дороже его экосистема, причём оч. сильно. Ну и трудности с веб интеграцией (хотя это преодолено более менее). Так что такой вещи как миграция языков в банках нет вообще ( за исключением Кобола по вышеописанной причине). И архитекторы тут не причём. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 20:28 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Это прекрасно. Раз жив кобол то по поводу Груви можно не беспокоиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 20:33 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
betelgeizex asv79 betelgeizex,очень смешно читать такое) язык построеный на джава мощнее чем джава)) твой груви через пару лет будет там же где и все остальные поющие писуары- тоесть в писуаре) а джава еще лет 20 протянет благодаря спринг Бггг.. Java - 25 лет, Groovy - 17 лет. Пару лет, говорите?.. И да, постарайтесь понять разницу между "построенный на Java" и "построенный на JVM". Пригодится. я вижу вакансии и вижу проекты в нашей конторе их сотни и ни 1 на груви и ни 1 вакансии сюда же тоесть ты можешь утверждать что угодно,но бизнесу твой груви не впился в одно место) все эти jvm языки в силу отсутвия комьюнити как были гомном ,так им и останутся а java цветет и пахент благодаря ребят из спринг,ломбок и прочим а вы продолжайте кушать кактусы ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 21:15 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
mayton Это прекрасно. Раз жив кобол то по поводу Груви можно не беспокоиться. да и бейсик жив где то в андеграунде)) пс.в энтерпрайзе рулит джава .в энтерпрайзе все деньги ну а инди проекты могут существовать и на чистом байт коде))) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 21:20 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
asv79 betelgeizex пропущено... Бггг.. Java - 25 лет, Groovy - 17 лет. Пару лет, говорите?.. И да, постарайтесь понять разницу между "построенный на Java" и "построенный на JVM". Пригодится. я вижу вакансии и вижу проекты в нашей конторе их сотни и ни 1 на груви и ни 1 вакансии сюда же тоесть ты можешь утверждать что угодно,но бизнесу твой груви не впился в одно место) все эти jvm языки в силу отсутвия комьюнити как были гомном ,так им и останутся а java цветет и пахент благодаря ребят из спринг,ломбок и прочим а вы продолжайте кушать кактусы Вы почему-то агрессивно противопоставляете Java и Groovy. Юношеский максимализм? Попробуйте хоть раз написать Unit Test'ы для Java-классов на Groovy (всё это прекрасно уживается в одном проекте) Возможно, в вашей закостенелой конторе такие вещи не приветствуются - жаль... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 21:48 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
asv79 betelgeizex пропущено... Бггг.. Java - 25 лет, Groovy - 17 лет. Пару лет, говорите?.. И да, постарайтесь понять разницу между "построенный на Java" и "построенный на JVM". Пригодится. я вижу вакансии и вижу проекты в нашей конторе их сотни и ни 1 на груви и ни 1 вакансии сюда же тоесть ты можешь утверждать что угодно,но бизнесу твой груви не впился в одно место) все эти jvm языки в силу отсутвия комьюнити как были гомном ,так им и останутся а java цветет и пахент благодаря ребят из спринг,ломбок и прочим а вы продолжайте кушать кактусы повторюсь, ломбок это пародия на Груви. А истинная причина почему много core java - люди боятся "а как бы шо не вышло", это всё от незнания. Я видел пример как не стали внедрять Котлин в андроид приложение "патамушта новый, стрёмно' ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 22:12 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
И последнее, моё личное мнение: Груви это не язык, это SDK. Такой же как например Apache Commons, только намного обширнее. Глупо не пользоваться одним их крупнейших и продвинутых SDK, правильно? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 22:14 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras Я видел пример как не стали внедрять Котлин в андроид приложение "патамушта новый, стрёмно' Я очень хотел бы услышать стенограмму этого обсуждения. Впрочем ... очень похоже на шутку. JetBrains им вообще не стрёмно использовать? И свои воцапы и вайберы не стрёмно? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 22:55 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
dakeiras И последнее, моё личное мнение: Груви это не язык, это SDK. Такой же как например Apache Commons, только намного обширнее. Глупо не пользоваться одним их крупнейших и продвинутых SDK, правильно? Что вы скажете на то, что groovy в индексе tiobe занимает предпоследнее с конца место среди 5 известных jvm-based языков (Java, Kotlin, Scala, Groovy, Clojure)? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 23:14 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
Если-б я был Дейкстрой то я-бы сказал что программирование на Коболе калечит разум. А на Groovy - портит нрав. И приучает к глупостям. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 23:23 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
mayton dakeiras Я видел пример как не стали внедрять Котлин в андроид приложение "патамушта новый, стрёмно' Я очень хотел бы услышать стенограмму этого обсуждения. Впрочем ... очень похоже на шутку. JetBrains им вообще не стрёмно использовать? И свои воцапы и вайберы не стрёмно? Тогда было мало разработчиков под Котлин и люди очканули что не смогут с вендора спрыгнуть потом (код был выкуплен). В принципе понятна логика но получилось хуже только. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2020, 01:07 |
|
Spring Security имеет неверную архитектуру
|
|||
---|---|---|---|
#18+
mayton Если-б я был Дейкстрой то я-бы сказал что программирование на Коболе калечит разум. А на Groovy - портит нрав. И приучает к глупостям. def сыграл злую шутку. Основная фича для девопсов отпугнула разработчиков. А надо было просто описать юскейсы изначально им в style guide: для разработчиков и для девопсов. Если руки дойдут сделаю... Помимо def там нет вредных вещей. А полезного там куча: быстрые шаблоны с интернализацией, json/xml, литералы """, строки с ${}, sql, AST, макросы. Да тот же picocli. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2020, 01:17 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2120795]: |
0ms |
get settings: |
8ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
52ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
2917ms |
get tp. blocked users: |
0ms |
others: | 301ms |
total: | 3289ms |
0 / 0 |