diff --git a/pl/cross/messaging/kafka/integrations/docker.txt b/pl/cross/messaging/kafka/integrations/docker.txt index ff528aff0..164a7402e 100644 --- a/pl/cross/messaging/kafka/integrations/docker.txt +++ b/pl/cross/messaging/kafka/integrations/docker.txt @@ -1,3 +1,6 @@ +https://github.com/Amplicode/amplicode-tutorials/blob/main/http-client-demo/app/docker-compose-dev.yaml + + kafka-ui + 2022 https://www.baeldung.com/ops/kafka-docker-setup ! tip about healthcheck in comment diff --git a/pl/cross/tools/ide/jetbrains/idea/plugins/api/openapi.txt b/pl/cross/tools/ide/jetbrains/idea/plugins/api/openapi.txt new file mode 100644 index 000000000..c07d26cc8 --- /dev/null +++ b/pl/cross/tools/ide/jetbrains/idea/plugins/api/openapi.txt @@ -0,0 +1,2 @@ +https://plugins.jetbrains.com/plugin/14837-openapi-swagger-editor +https://plugins.jetbrains.com/plugin/8347-zalando-openapi-editor diff --git a/pl/cross/tools/ide/jetbrains/idea/plugins/pl/java/amplicode.txt b/pl/cross/tools/ide/jetbrains/idea/plugins/pl/java/amplicode.txt index 4aa52a02d..bcfcdc5db 100644 --- a/pl/cross/tools/ide/jetbrains/idea/plugins/pl/java/amplicode.txt +++ b/pl/cross/tools/ide/jetbrains/idea/plugins/pl/java/amplicode.txt @@ -18,7 +18,15 @@ https://amplicode.ru/guides/flyway-spring-boot-nastroika-i-napisanie-migracii-ba https://amplicode.ru/blog/ https://amplicode.ru/download/ +http-client kts-based +https://habr.com/ru/companies/haulmont/articles/868106/ + !!! + 2024 +Amplicode Launch Event + https://habr.com/ru/companies/haulmont/articles/842770/ + https://vkvideo.ru/playlist/-222549074_1 + https://www.youtube.com/playlist?list=PLhN84uC7GMW9emgMggtC-gbZOMoTRwoCH Amplicode - Shustanov - Admin UI 0:00 of 35:12 https://www.youtube.com/watch?v=e-WhYkEYo80 Amplicode - JPA Problems in Spring PetClinic 0:00 of 42:47 diff --git a/pl/java/libfws/mapping/mapstruct.txt b/pl/java/libfws/mapping/mapstruct.txt index b32912612..7f415c518 100644 --- a/pl/java/libfws/mapping/mapstruct.txt +++ b/pl/java/libfws/mapping/mapstruct.txt @@ -1,5 +1,9 @@ http://mapstruct.org/ +spring extensions +https://mapstruct.org/documentation/spring-extensions/reference/html/ +https://github.com/mapstruct/mapstruct-spring-extensions + https://github.com/mapstruct/mapstruct https://github.com/mapstruct/mapstruct-examples @@ -9,6 +13,16 @@ http://mapstruct.org/documentation/installation/ http://mapstruct.org/documentation/reference-guide/ http://mapstruct.org/documentation/stable/reference/html/ +lombok-int +'org.projectlombok:lombok-mapstruct-binding:0.2.0' +provided + If you are using Lombok 1.18.16 or newer you also need to add lombok-mapstruct-binding in order to make Lombok and MapStruct work together. +https://www.baeldung.com/java-mapstruct-lombok + +idea-plugin +https://plugins.jetbrains.com/plugin/10036-mapstruct-support +https://github.com/mapstruct/mapstruct-idea + https://www.baeldung.com/tag/mapstruct 2024 diff --git a/pl/java/libfws/spring/boot/features/cfg/config.txt b/pl/java/libfws/spring/boot/features/cfg/config.txt index 7bcf07a79..f02094f77 100644 --- a/pl/java/libfws/spring/boot/features/cfg/config.txt +++ b/pl/java/libfws/spring/boot/features/cfg/config.txt @@ -1,4 +1,5 @@ https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-disabling-specific-auto-configuration +https://github.com/spring-projects/spring-boot/tree/main/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure export JAVA_OPTS=-Xmx1024m -XX:MaxPermSize=128M diff --git a/pl/java/libfws/spring/boot/integration/docker/docker-compose.txt b/pl/java/libfws/spring/boot/integration/docker/docker-compose.txt index a9c4f3819..abb4005c2 100644 --- a/pl/java/libfws/spring/boot/integration/docker/docker-compose.txt +++ b/pl/java/libfws/spring/boot/integration/docker/docker-compose.txt @@ -4,5 +4,25 @@ https://docs.spring.io/spring-boot/reference/features/dev-services.html#features 2024 Amplicode - Spring Boot Applications Conterization of 3:49 https://www.youtube.com/watch?v=f_eyfLVgoq8 + https://habr.com/ru/companies/haulmont/articles/848696/ + !!! 2023 https://spring.io/blog/2023/06/21/docker-compose-support-in-spring-boot-3-1 + +https://github.com/spring-projects/spring-boot/tree/main/spring-boot-project/spring-boot-docker-compose + + +dependencies { + implementation ( + ... + 'org.springframework.boot:spring-boot-docker-compose' + ) +} + +multiple compose files (from 3.4) +spring: + docker: + compose: + file: + - "compose-postgres.yml" + - "compose-redis.yml" diff --git a/pl/java/libfws/spring/data/flyway.txt b/pl/java/libfws/spring/data/flyway.txt deleted file mode 100644 index 33bece658..000000000 --- a/pl/java/libfws/spring/data/flyway.txt +++ /dev/null @@ -1,2 +0,0 @@ -https://github.com/spring-projects/spring-boot/blob/v3.4.1/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayProperties.java - table diff --git a/pl/java/libfws/spring/data/jpa/features/types/jsonb.txt b/pl/java/libfws/spring/data/jpa/features/types/jsonb.txt new file mode 100644 index 000000000..330ef05ec --- /dev/null +++ b/pl/java/libfws/spring/data/jpa/features/types/jsonb.txt @@ -0,0 +1 @@ +https://www.baeldung.com/spring-boot-jpa-storing-postgresql-jsonb diff --git a/pl/java/libfws/spring/data/migration/flyway.txt b/pl/java/libfws/spring/data/migration/flyway.txt new file mode 100644 index 000000000..c4d9ae32d --- /dev/null +++ b/pl/java/libfws/spring/data/migration/flyway.txt @@ -0,0 +1,11 @@ +https://github.com/spring-projects/spring-boot/blob/v3.4.1/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayProperties.java + table + +https://www.baeldung.com/database-migrations-with-flyway +https://www.baeldung.com/flyway-roll-back +https://www.baeldung.com/flyway-callbacks + +2024 +https://habr.com/ru/companies/haulmont/articles/829782/ + !!! amplicode, jpa-based + equals/hashcode - check objects for HibernateProxy diff --git a/pl/java/libfws/spring/data/migration/liquibase.txt b/pl/java/libfws/spring/data/migration/liquibase.txt new file mode 100644 index 000000000..0e645ce04 --- /dev/null +++ b/pl/java/libfws/spring/data/migration/liquibase.txt @@ -0,0 +1,18 @@ +https://www.liquibase.com +https://www.liquibase.com/pricing + +https://docs.liquibase.com/home.html + +https://github.com/spring-projects/spring-boot/blob/main/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase +https://github.com/spring-projects/spring-boot/blob/main/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseProperties.java + +https://www.baeldung.com/tag/liquibase +https://www.baeldung.com/liquibase-refactor-schema-of-java-app +https://www.baeldung.com/liquibase-vs-flyway +https://www.baeldung.com/liquibase-rollback +https://www.baeldung.com/java-liquibase-list-sql-types +https://www.baeldung.com/java-postgresql-create-schema-before-liquibase + +2024 +https://habr.com/ru/companies/haulmont/articles/826188/ + ! amplicode diff --git a/security/server/keycloak/docker.txt b/security/server/keycloak/docker.txt new file mode 100644 index 000000000..eb095b539 --- /dev/null +++ b/security/server/keycloak/docker.txt @@ -0,0 +1,4 @@ +https://www.keycloak.org/server/containers +https://www.keycloak.org/getting-started/getting-started-docker +docker run -p 8081:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:17.0.1 start-dev +https://hub.docker.com/r/bitnami/keycloak/ diff --git a/security/server/keycloak/docs/articles.txt b/security/server/keycloak/docs/articles.txt new file mode 100644 index 000000000..fc9da7a63 --- /dev/null +++ b/security/server/keycloak/docs/articles.txt @@ -0,0 +1,39 @@ +2023 +https://habr.com/ru/companies/axenix/articles/780422/ +https://habr.com/ru/articles/779170/ +https://habr.com/ru/articles/772010/ +https://habr.com/ru/articles/716232/ +https://habr.com/ru/articles/772010/ +https://habr.com/ru/articles/716232/ + ! +ABAC + https://github.com/mgalaktionov/keycloak-demo-2 +https://itnext.io/what-is-new-in-jakarta-security-3-98db53317e19 +https://habr.com/ru/companies/otus/articles/733404/ +https://habr.com/ru/articles/546428/ +https://habr.com/ru/companies/kaspersky/articles/756812/ +https://habr.com/ru/companies/nixys/articles/752994/ +https://habr.com/ru/articles/735076/ +https://www.baeldung.com/spring-boot-keycloak + https://github.com/eugenp/tutorials/tree/master/spring-boot-modules/spring-boot-keycloak +https://www.baeldung.com/spring-boot-keycloak-integration-testing + with testcontainers + +https://habr.com/ru/post/724738/ + refresh-token, bad ideology +https://habr.com/ru/post/720070/ + application.yaml, KeycloakWebSecurityConfigurerAdapter is depr-ted + spring-security-oauth2-resource-server +2022 +https://habr.com/ru/articles/661541/ + https://www.keycloak.org/2022/02/adapter-deprecation +https://habr.com/ru/companies/alfastrah/articles/651861/ +2021 +https://habr.com/ru/companies/reksoft/articles/552346/ +https://habr.com/ru/articles/550704/ +https://www.baeldung.com/java-keycloak-custom-user-providers +https://www.baeldung.com/keycloak-embedded-in-spring-boot-app + https://github.com/Baeldung/spring-security-oauth/tree/master/oauth-rest/oauth-authorization-server +2020 +https://www.baeldung.com/postman-keycloak-endpoints +https://habr.com/ru/companies/southbridge/articles/511380/ + HA diff --git a/security/server/keycloak/docs/books.txt b/security/server/keycloak/docs/books.txt new file mode 100644 index 000000000..fbe3261a8 --- /dev/null +++ b/security/server/keycloak/docs/books.txt @@ -0,0 +1,3 @@ +2023 +ThorgersenSilva - Keycloak - Identity and Access Management for Modern Applications 2nd ed + 2FCEDB79A750149203A1E5CEA5118AA2 diff --git a/security/server/keycloak/docs/courses.txt b/security/server/keycloak/docs/courses.txt new file mode 100644 index 000000000..4603d08a7 --- /dev/null +++ b/security/server/keycloak/docs/courses.txt @@ -0,0 +1,6 @@ +2024 +BoualiAli - [NEW] KEYCLOAK Integration with Spring Boot & Angular 0:00 of 2:28:54 + https://www.youtube.com/watch?v=Ppkys9dKadA +2023 +RealManual - Egorov - ArgoCD+Keycloak + nnm:1692389 diff --git a/security/server/keycloak/docs/docs.txt b/security/server/keycloak/docs/docs.txt new file mode 100644 index 000000000..9067d19fa --- /dev/null +++ b/security/server/keycloak/docs/docs.txt @@ -0,0 +1,4 @@ +https://www.keycloak.org/documentation.html +https://www.keycloak.org/docs-api/21.1.2/javadocs/index.html +https://www.keycloak.org/docs/latest/authorization_services/index.html + https://github.com/keycloak/keycloak-quickstarts/tree/latest/app-authz-rest-springboot diff --git a/security/server/keycloak/docs/guides.txt b/security/server/keycloak/docs/guides.txt new file mode 100644 index 000000000..efe76dbfa --- /dev/null +++ b/security/server/keycloak/docs/guides.txt @@ -0,0 +1 @@ +https://github.com/keycloak/keycloak-quickstarts/blob/latest/docs/getting-started.md diff --git a/security/server/keycloak/docs/presentations.txt b/security/server/keycloak/docs/presentations.txt new file mode 100644 index 000000000..afab13f5c --- /dev/null +++ b/security/server/keycloak/docs/presentations.txt @@ -0,0 +1,50 @@ +2024 +Amplicode - Koslov - Spring Security and KC 0:00 of 39:15 + https://www.youtube.com/watch?v=CYfzwTt755Q +2023 +https://www.youtube.com/watch?v=vmEWywGzWbA + https://github.com/ali-bouali/keycloak-integration-with-spring-boot-3 + boot 3, secur 6 + 23:00 + 25:30 + 32:30 - jwt.io debugger + We can assign client roles to realm roles (composite:true) + realmroles->for-specific-role->menu-action->Add associated roles + now it is composite role + # jwt.io: .resource_access.myclient11.roles=client11_admin,client11_user + # https://github.com/ali-bouali/keycloak-integration-with-spring-boot-3/blob/main/src/main/java/com/alibou/keycloak/JwtAuthConverter.java + # JwtGrantedAuthoritiesConverter -> SCOPE_, split(by space) "scope" attr of jwt + + user can also be a composite + /realms//well-known/openid-configuration + token_endpoint + grant_type: password + client_id: ... + username: ... + password: ... + -> refresh_token is also provided + token can be pasted to jwt.io + @PreAuthorize("hasRole('client_role')") + defaultRolePrefix="ROLE_" // !!! +2022 +https://www.youtube.com/watch?v=rbKzR6QWKLI&list=PLSVW22jAG8pBnhAdq9S8BpLnZ0_jVBj0c&index=5 +2021 +Spilca - Software Architecture Fundamentals - Episode 16 - OAuth 2 and OpenID Connect 0:00 of 55:00 + https://www.youtube.com/watch?v=j1yOkj2JzwM&list=PLEocw3gLFc8VYPSFuQfTbqsK-0q2wDCoR&index=17 + /auth/realms/master/.well-known/openid-configuration + /auth/realms/master/protocol/openid-connect/certs + /auth/realms/master/protocol/openid-connect/token + curl -XPOST "http://localhost:8080/auth/realms/master/protocol/openid-connect/token" \ + -H "Content-Type: application/x-www-form-urlencoded" \ + --data-urlencode "grant_type=password" \ + --data-urlencode "username= \ + --data-urlencode "password= \ + --data-urlencode "scope=" \ + --data-urlencode "client_id=" + application.properties + jwkSetUri=.../certs + new JwkTokenStore(jwkSetUri) // obsolete + ...JwtDecoder + Provider +Slurm - Keycloak Exp ru of 3:58:09 + https://www.youtube.com/watch?v=Llvnq-n43k0 diff --git a/security/server/keycloak/kc-mvn.txt b/security/server/keycloak/kc-mvn.txt new file mode 100644 index 000000000..537aadc9d --- /dev/null +++ b/security/server/keycloak/kc-mvn.txt @@ -0,0 +1,3 @@ +https://search.maven.org/search?q=a:keycloak-adapter-bom +https://search.maven.org/artifact/org.keycloak.bom/keycloak-adapter-bom/18.0.2/pom + implementation("org.keycloak.bom:keycloak-adapter-bom:18.0.2") diff --git a/security/server/keycloak/keycloak.txt b/security/server/keycloak/keycloak.txt index 5c956ef9c..8809e2653 100644 --- a/security/server/keycloak/keycloak.txt +++ b/security/server/keycloak/keycloak.txt @@ -1,35 +1,16 @@ https://www.keycloak.org/ -https://www.baeldung.com/tag/keycloak/ +https://github.com/keycloak/keycloak -https://www.keycloak.org/documentation.html -https://www.keycloak.org/docs-api/21.1.2/javadocs/index.html -https://www.keycloak.org/docs/latest/authorization_services/index.html - https://github.com/keycloak/keycloak-quickstarts/tree/latest/app-authz-rest-springboot +https://www.baeldung.com/tag/keycloak/ client -> app client scope -> allow to manage common set of perm-s (default) -guides -https://github.com/keycloak/keycloak-quickstarts/blob/latest/docs/getting-started.md - -https://github.com/keycloak/keycloak - token endpoint https://www.baeldung.com/postman-keycloak-endpoints https://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint https://habr.com/ru/companies/flant/articles/670628/ -mvn -https://search.maven.org/search?q=a:keycloak-adapter-bom -https://search.maven.org/artifact/org.keycloak.bom/keycloak-adapter-bom/18.0.2/pom - implementation("org.keycloak.bom:keycloak-adapter-bom:18.0.2") - -docker -https://www.keycloak.org/server/containers -https://www.keycloak.org/getting-started/getting-started-docker -docker run -p 8081:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:17.0.1 start-dev -https://hub.docker.com/r/bitnami/keycloak/ - cfg https://www.keycloak.org/server/all-config https://github.com/keycloak/keycloak/tree/main/quarkus/config-api/src/main/java/org/keycloak/config @@ -45,101 +26,3 @@ https://www.keycloak.org/server/logging spring-boot https://www.keycloak.org/docs/latest/securing_apps/index.html#_spring_boot_adapter - -books -2023 -ThorgersenSilva - Keycloak - Identity and Access Management for Modern Applications 2nd ed - 2FCEDB79A750149203A1E5CEA5118AA2 - -courses -2024 -BoualiAli - [NEW] KEYCLOAK Integration with Spring Boot & Angular 0:00 of 2:28:54 - https://www.youtube.com/watch?v=Ppkys9dKadA -2023 -RealManual - Egorov - ArgoCD+Keycloak - nnm:1692389 - -2023 -https://habr.com/ru/companies/axenix/articles/780422/ -https://habr.com/ru/articles/779170/ -https://habr.com/ru/articles/772010/ -https://habr.com/ru/articles/716232/ -https://habr.com/ru/articles/772010/ -https://habr.com/ru/articles/716232/ - ! +ABAC - https://github.com/mgalaktionov/keycloak-demo-2 -https://itnext.io/what-is-new-in-jakarta-security-3-98db53317e19 -https://habr.com/ru/companies/otus/articles/733404/ -https://habr.com/ru/articles/546428/ -https://habr.com/ru/companies/kaspersky/articles/756812/ -https://habr.com/ru/companies/nixys/articles/752994/ -https://habr.com/ru/articles/735076/ -https://www.youtube.com/watch?v=vmEWywGzWbA - https://github.com/ali-bouali/keycloak-integration-with-spring-boot-3 - boot 3, secur 6 - 23:00 - 25:30 - 32:30 - jwt.io debugger - We can assign client roles to realm roles (composite:true) - realmroles->for-specific-role->menu-action->Add associated roles - now it is composite role - # jwt.io: .resource_access.myclient11.roles=client11_admin,client11_user - # https://github.com/ali-bouali/keycloak-integration-with-spring-boot-3/blob/main/src/main/java/com/alibou/keycloak/JwtAuthConverter.java - # JwtGrantedAuthoritiesConverter -> SCOPE_, split(by space) "scope" attr of jwt - - user can also be a composite - /realms//well-known/openid-configuration - token_endpoint - grant_type: password - client_id: ... - username: ... - password: ... - -> refresh_token is also provided - token can be pasted to jwt.io - @PreAuthorize("hasRole('client_role')") - defaultRolePrefix="ROLE_" // !!! - -https://www.baeldung.com/spring-boot-keycloak - https://github.com/eugenp/tutorials/tree/master/spring-boot-modules/spring-boot-keycloak -https://www.baeldung.com/spring-boot-keycloak-integration-testing - with testcontainers - -https://habr.com/ru/post/724738/ - refresh-token, bad ideology -https://habr.com/ru/post/720070/ - application.yaml, KeycloakWebSecurityConfigurerAdapter is depr-ted - spring-security-oauth2-resource-server -2022 -https://www.youtube.com/watch?v=rbKzR6QWKLI&list=PLSVW22jAG8pBnhAdq9S8BpLnZ0_jVBj0c&index=5 -https://habr.com/ru/articles/661541/ - https://www.keycloak.org/2022/02/adapter-deprecation -https://habr.com/ru/companies/alfastrah/articles/651861/ -2021 -Slurm - Keycloak Exp ru of 3:58:09 - https://www.youtube.com/watch?v=Llvnq-n43k0 -https://habr.com/ru/companies/reksoft/articles/552346/ -https://habr.com/ru/articles/550704/ -https://www.baeldung.com/java-keycloak-custom-user-providers -https://www.baeldung.com/keycloak-embedded-in-spring-boot-app - https://github.com/Baeldung/spring-security-oauth/tree/master/oauth-rest/oauth-authorization-server -Spilca - Software Architecture Fundamentals - Episode 16 - OAuth 2 and OpenID Connect 0:00 of 55:00 - https://www.youtube.com/watch?v=j1yOkj2JzwM&list=PLEocw3gLFc8VYPSFuQfTbqsK-0q2wDCoR&index=17 - /auth/realms/master/.well-known/openid-configuration - /auth/realms/master/protocol/openid-connect/certs - /auth/realms/master/protocol/openid-connect/token - curl -XPOST "http://localhost:8080/auth/realms/master/protocol/openid-connect/token" \ - -H "Content-Type: application/x-www-form-urlencoded" \ - --data-urlencode "grant_type=password" \ - --data-urlencode "username= \ - --data-urlencode "password= \ - --data-urlencode "scope=" \ - --data-urlencode "client_id=" - application.properties - jwkSetUri=.../certs - new JwkTokenStore(jwkSetUri) // obsolete - ...JwtDecoder - Provider -2020 -https://www.baeldung.com/postman-keycloak-endpoints -https://habr.com/ru/companies/southbridge/articles/511380/ - HA