From f0cf16c9e4a408db069405ff43956bd0adb74b80 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 12 Jan 2024 19:18:57 +0300 Subject: [PATCH] 12.01.2024 19:10+03 --- README.md | 1 + .../.env | 28 + .../.gitignore | 4 + .../README.md | 221 + .../README_RUS.md | 218 + .../ory-hydra-oauth2-example.drawio | 474 ++ .../ory-hydra-oauth2-example.png | Bin 0 -> 998635 bytes .../.gitignore | 13 + .../authorization-backend/.editorconfig | 16 + .../authorization-backend/.gitignore | 37 + .../authorization-backend/build.gradle | 98 + .../authorization-backend/build_image.bash | 20 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 60756 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + .../authorization-backend/gradlew | 240 + .../authorization-backend/gradlew.bat | 91 + .../authorization-backend/lombok.config | 1 + .../authorization-backend/settings.gradle | 1 + .../AuthorizationBackendApplication.java | 16 + .../JpaConfiguration.java | 77 + .../SpringSecurityConfiguration.java | 30 + .../ConsentProviderController.java | 182 + .../controllers/GlobalExceptionHandler.java | 108 + .../controllers/LoginProviderController.java | 164 + .../controllers/LogoutProviderController.java | 99 + .../registration/RegistrationController.java | 40 + .../dao/entities/User.java | 49 + .../CustomPersistenceExceptionTranslator.java | 35 + .../dao/repositories/UserRepository.java | 19 + .../AcceptLoginRequestModelException.java | 8 + .../IncorrectPasswordException.java | 8 + .../LoginDoesNotExistException.java | 8 + .../LoginOrOrgExistException.java | 10 + .../ExcludeFromJacocoGeneratedReport.java | 21 + .../models/AcceptConsentRequestModel.java | 31 + .../AcceptConsentRequestModelBuilder.java | 48 + .../models/AcceptLoginRequestModel.java | 36 + .../AcceptLoginRequestModelBuilder.java | 44 + .../authorization_backend/models/Client.java | 159 + .../models/ErrorModel.java | 33 + .../models/ErrorModelBuilder.java | 49 + .../models/GetConsentResponseModel.java | 53 + .../models/GetLoginResponseModel.java | 44 + .../models/GetLogoutResponseModel.java | 36 + .../models/PostLoginModel.java | 27 + .../models/PostRegistrationModel.java | 31 + .../models/PutLogoutModel.java | 14 + .../models/ResponseWithRedirectModel.java | 24 + .../models/SessionForTokenModel.java | 23 + .../models/SessionForTokenModelBuilder.java | 33 + .../services/OryHydraService.java | 308 + .../services/UserService.java | 184 + ...itional-spring-configuration-metadata.json | 5 + .../src/main/resources/application-prod.yml | 10 + .../src/main/resources/application.yml | 37 + .../src/main/resources/banner.txt | 7 + .../authorization_backend/SupportModule.java | 94 + .../TestAccessTokenExtension.java | 23 + .../TestIdTokenExtension.java | 14 + .../ConsentProviderControllerTest.java | 636 +++ .../LoginProviderControllerTest.java | 389 ++ .../LogoutProviderControllerTest.java | 227 + .../RegistrationControllerTest.java | 115 + .../models/AcceptLoginRequestModelTest.java | 45 + .../models/CreateClientModel.java | 61 + .../services/OryHydraServiceTest.java | 835 +++ .../services/UserServiceTest.java | 249 + .../test/resources/ory-hydra-open-api-v3.json | 3689 ++++++++++++ .../test_and_report.bash | 3 + .../authorization-frontend/.editorconfig | 16 + .../authorization-frontend/.gitignore | 44 + .../authorization-frontend/angular.json | 125 + .../authorization-frontend/build_image.bash | 47 + .../authorization-frontend/karma.conf.js | 40 + .../authorization-frontend/mock-data.json | 16 + .../authorization-frontend/mock-server.js | 60 + .../authorization-frontend/package.json | 49 + .../authorization-frontend/server.ts | 60 + .../src/app/app.component.html | 1 + .../src/app/app.component.scss | 7 + .../src/app/app.component.ts | 32 + .../src/app/app.config.server.ts | 11 + .../src/app/app.config.ts | 29 + .../src/app/app.routes.ts | 35 + .../src/app/app.service.spec.ts | 18 + .../src/app/app.service.ts | 20 + .../src/app/consent/consent.component.html | 48 + .../src/app/consent/consent.component.scss | 11 + .../src/app/consent/consent.component.spec.ts | 288 + .../src/app/consent/consent.component.ts | 144 + .../src/app/consent/consent.service.spec.ts | 246 + .../src/app/consent/consent.service.ts | 72 + .../src/app/cookie.service.spec.ts | 61 + .../src/app/cookie.service.ts | 48 + .../src/app/error.service.spec.ts | 50 + .../src/app/error.service.ts | 21 + .../src/app/error/error.component.html | 16 + .../src/app/error/error.component.scss | 9 + .../src/app/error/error.component.spec.ts | 161 + .../src/app/error/error.component.ts | 68 + .../generation-cookie-csrf.service.spec.ts | 51 + .../src/app/generation-cookie-csrf.service.ts | 40 + .../src/app/login/login.component.html | 68 + .../src/app/login/login.component.scss | 77 + .../src/app/login/login.component.spec.ts | 303 + .../src/app/login/login.component.ts | 168 + .../src/app/login/login.service.spec.ts | 119 + .../src/app/login/login.service.ts | 32 + .../logout-handled.component.html | 11 + .../logout-handled.component.scss | 9 + .../logout-handled.component.spec.ts | 192 + .../logout-handled.component.ts | 49 + .../logout-request.component.html | 24 + .../logout-request.component.scss | 13 + .../logout-request.component.spec.ts | 282 + .../logout-request.component.ts | 92 + .../src/app/logout.service.spec.ts | 118 + .../src/app/logout.service.ts | 30 + .../src/app/models/error-on-page.model.ts | 51 + .../app/models/error-response-code.model.ts | 61 + .../models/response-with-redirect.model.ts | 3 + .../app/not-found/not-found.component.html | 12 + .../app/not-found/not-found.component.scss | 0 .../app/not-found/not-found.component.spec.ts | 21 + .../src/app/not-found/not-found.component.ts | 8 + .../registration-routing.module.ts | 11 + .../registration/registration.component.html | 110 + .../registration/registration.component.scss | 20 + .../registration.component.spec.ts | 467 ++ .../registration/registration.component.ts | 183 + .../app/registration/registration.module.ts | 39 + .../registration/registration.service.spec.ts | 128 + .../app/registration/registration.service.ts | 32 + .../src/app/window.service.ts | 11 + .../src/assets/.gitkeep | 0 .../src/assets/cat_401.png | Bin 0 -> 1008276 bytes .../src/assets/cat_logout.jpg | Bin 0 -> 201676 bytes .../src/assets/error.jpg | Bin 0 -> 44979 bytes .../src/assets/logo.png | Bin 0 -> 84009 bytes .../src/assets/stav.jpg | Bin 0 -> 423377 bytes .../environments/environment.development.ts | 4 + .../src/environments/environment.ts | 4 + .../authorization-frontend/src/favicon.ico | Bin 0 -> 15406 bytes .../Roboto/KFOiCnqEu92Fr1Mu51QrEz0dL_nz.woff2 | Bin 0 -> 16412 bytes .../Roboto/KFOiCnqEu92Fr1Mu51QrEz4dL_nz.woff2 | Bin 0 -> 12860 bytes .../Roboto/KFOiCnqEu92Fr1Mu51QrEzAdLw.woff2 | Bin 0 -> 17008 bytes .../Roboto/KFOiCnqEu92Fr1Mu51QrEzQdL_nz.woff2 | Bin 0 -> 10204 bytes .../KFOjCnqEu92Fr1Mu51S7ACc-CsTKlA.woff2 | Bin 0 -> 10888 bytes .../KFOjCnqEu92Fr1Mu51S7ACc0CsTKlA.woff2 | Bin 0 -> 13100 bytes .../KFOjCnqEu92Fr1Mu51S7ACc3CsTKlA.woff2 | Bin 0 -> 16800 bytes .../Roboto/KFOjCnqEu92Fr1Mu51S7ACc6CsQ.woff2 | Bin 0 -> 17316 bytes .../KFOjCnqEu92Fr1Mu51TLBCc-CsTKlA.woff2 | Bin 0 -> 10796 bytes .../KFOjCnqEu92Fr1Mu51TLBCc0CsTKlA.woff2 | Bin 0 -> 13136 bytes .../KFOjCnqEu92Fr1Mu51TLBCc3CsTKlA.woff2 | Bin 0 -> 16984 bytes .../Roboto/KFOjCnqEu92Fr1Mu51TLBCc6CsQ.woff2 | Bin 0 -> 17520 bytes .../KFOjCnqEu92Fr1Mu51TjASc-CsTKlA.woff2 | Bin 0 -> 10708 bytes .../KFOjCnqEu92Fr1Mu51TjASc0CsTKlA.woff2 | Bin 0 -> 13148 bytes .../KFOjCnqEu92Fr1Mu51TjASc3CsTKlA.woff2 | Bin 0 -> 16860 bytes .../Roboto/KFOjCnqEu92Fr1Mu51TjASc6CsQ.woff2 | Bin 0 -> 17448 bytes .../KFOjCnqEu92Fr1Mu51TzBic-CsTKlA.woff2 | Bin 0 -> 10368 bytes .../KFOjCnqEu92Fr1Mu51TzBic0CsTKlA.woff2 | Bin 0 -> 12892 bytes .../KFOjCnqEu92Fr1Mu51TzBic3CsTKlA.woff2 | Bin 0 -> 16296 bytes .../Roboto/KFOjCnqEu92Fr1Mu51TzBic6CsQ.woff2 | Bin 0 -> 17020 bytes .../Roboto/KFOkCnqEu92Fr1MmgVxFIzIFKw.woff2 | Bin 0 -> 14912 bytes .../Roboto/KFOkCnqEu92Fr1MmgVxGIzIFKw.woff2 | Bin 0 -> 12088 bytes .../Roboto/KFOkCnqEu92Fr1MmgVxIIzI.woff2 | Bin 0 -> 15808 bytes .../Roboto/KFOkCnqEu92Fr1MmgVxMIzIFKw.woff2 | Bin 0 -> 9460 bytes .../Roboto/KFOkCnqEu92Fr1Mu51xFIzIFKw.woff2 | Bin 0 -> 16888 bytes .../Roboto/KFOkCnqEu92Fr1Mu51xGIzIFKw.woff2 | Bin 0 -> 13012 bytes .../Roboto/KFOkCnqEu92Fr1Mu51xIIzI.woff2 | Bin 0 -> 17324 bytes .../Roboto/KFOkCnqEu92Fr1Mu51xMIzIFKw.woff2 | Bin 0 -> 10544 bytes .../Roboto/KFOlCnqEu92Fr1MmEU9fABc4EsA.woff2 | Bin 0 -> 10048 bytes .../Roboto/KFOlCnqEu92Fr1MmEU9fBBc4.woff2 | Bin 0 -> 15872 bytes .../Roboto/KFOlCnqEu92Fr1MmEU9fCRc4EsA.woff2 | Bin 0 -> 15200 bytes .../Roboto/KFOlCnqEu92Fr1MmEU9fChc4EsA.woff2 | Bin 0 -> 12060 bytes .../Roboto/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2 | Bin 0 -> 9760 bytes .../Roboto/KFOlCnqEu92Fr1MmSU5fBBc4.woff2 | Bin 0 -> 15784 bytes .../Roboto/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2 | Bin 0 -> 15148 bytes .../Roboto/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2 | Bin 0 -> 12048 bytes .../Roboto/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2 | Bin 0 -> 9760 bytes .../Roboto/KFOlCnqEu92Fr1MmWUlfBBc4.woff2 | Bin 0 -> 15816 bytes .../Roboto/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2 | Bin 0 -> 14952 bytes .../Roboto/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2 | Bin 0 -> 12048 bytes .../Roboto/KFOlCnqEu92Fr1MmYUtfABc4EsA.woff2 | Bin 0 -> 9896 bytes .../Roboto/KFOlCnqEu92Fr1MmYUtfBBc4.woff2 | Bin 0 -> 15712 bytes .../Roboto/KFOlCnqEu92Fr1MmYUtfCRc4EsA.woff2 | Bin 0 -> 15156 bytes .../Roboto/KFOlCnqEu92Fr1MmYUtfChc4EsA.woff2 | Bin 0 -> 12076 bytes .../fonts/Roboto/KFOmCnqEu92Fr1Mu4mxK.woff2 | Bin 0 -> 15736 bytes .../Roboto/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 | Bin 0 -> 9900 bytes .../Roboto/KFOmCnqEu92Fr1Mu72xKOzY.woff2 | Bin 0 -> 15520 bytes .../Roboto/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 | Bin 0 -> 12200 bytes .../fonts/fontawesome-free/fa-brands-400.ttf | Bin 0 -> 187208 bytes .../fontawesome-free/fa-brands-400.woff2 | Bin 0 -> 108020 bytes .../fonts/fontawesome-free/fa-regular-400.ttf | Bin 0 -> 63952 bytes .../fontawesome-free/fa-regular-400.woff2 | Bin 0 -> 24948 bytes .../fonts/fontawesome-free/fa-solid-900.ttf | Bin 0 -> 394628 bytes .../fonts/fontawesome-free/fa-solid-900.woff2 | Bin 0 -> 150124 bytes .../fontawesome-free/fa-v4compatibility.ttf | Bin 0 -> 10172 bytes .../fontawesome-free/fa-v4compatibility.woff2 | Bin 0 -> 4564 bytes .../authorization-frontend/src/index.html | 13 + .../authorization-frontend/src/main.server.ts | 7 + .../authorization-frontend/src/main.ts | 6 + .../src/scss/_shame.scss | 0 .../src/scss/base/_typography.scss | 434 ++ .../src/scss/vendors/_material_io.scss | 35 + .../vendors/fontawesome-free/_animated.scss | 153 + .../fontawesome-free/_bordered-pulled.scss | 20 + .../scss/vendors/fontawesome-free/_core.scss | 43 + .../fontawesome-free/_fixed-width.scss | 7 + .../vendors/fontawesome-free/_functions.scss | 57 + .../scss/vendors/fontawesome-free/_icons.scss | 10 + .../scss/vendors/fontawesome-free/_list.scss | 18 + .../vendors/fontawesome-free/_mixins.scss | 75 + .../fontawesome-free/_rotated-flipped.scss | 31 + .../fontawesome-free/_screen-reader.scss | 14 + .../scss/vendors/fontawesome-free/_shims.scss | 2042 +++++++ .../vendors/fontawesome-free/_sizing.scss | 16 + .../vendors/fontawesome-free/_stacked.scss | 32 + .../vendors/fontawesome-free/_variables.scss | 4961 +++++++++++++++++ .../scss/vendors/fontawesome-free/brands.scss | 30 + .../vendors/fontawesome-free/fontawesome.scss | 21 + .../vendors/fontawesome-free/regular.scss | 26 + .../scss/vendors/fontawesome-free/solid.scss | 26 + .../vendors/fontawesome-free/v4-shims.scss | 11 + .../authorization-frontend/src/styles.scss | 15 + .../test_and_report.bash | 3 + .../authorization-frontend/tsconfig.app.json | 18 + .../authorization-frontend/tsconfig.json | 32 + .../authorization-frontend/tsconfig.spec.json | 14 + .../docker-compose.prod.yaml | 184 + .../docker-compose.yaml | 177 + .../hydra/postgresql.conf | 798 +++ .../nginx/confs/.gitignore | 1 + .../confs/authorization-server.conf.templ | 83 + .../nginx/confs/default.conf | 11 + .../nginx/nginx.conf | 36 + .../user_data/postgresql-init.sql | 73 + .../user_data/postgresql.conf | 798 +++ .../.gitignore | 7 + .../ca-certificates/type | 1 + .../docker-compose.yaml | 159 + .../nginx/confs/client-readonly.conf.templ | 67 + .../nginx/confs/default.conf | 11 + .../nginx/nginx.conf | 37 + .../readonly/readonly-backend/.editorconfig | 16 + .../readonly/readonly-backend/.gitignore | 37 + .../readonly/readonly-backend/build.gradle | 95 + .../readonly-backend/build_image.bash | 20 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 62076 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + .../readonly/readonly-backend/gradlew | 245 + .../readonly/readonly-backend/gradlew.bat | 92 + .../readonly/readonly-backend/lombok.config | 1 + .../readonly/readonly-backend/settings.gradle | 1 + .../ReadonlyBackendApplication.java | 16 + .../SpringSecurityConfiguration.java | 94 + .../controllers/DataController.java | 57 + .../controllers/GlobalExceptionHandler.java | 71 + .../ExcludeFromJacocoGeneratedReport.java | 21 + .../CustomServerLogoutSuccessHandler.java | 23 + ...tomServerAuthenticationFailureHandler.java | 81 + .../AuthenticateFrontendWebFilter.java | 57 + .../IsAuthenticatedCheckWebFilter.java | 85 + ...itional-spring-configuration-metadata.json | 5 + .../src/main/resources/application-prod.yml | 3 + .../src/main/resources/application.yml | 32 + .../src/main/resources/banner.txt | 7 + .../controllers/DataControllerTest.java | 579 ++ .../test/resources/ory-hydra-open-api-v3.json | 3689 ++++++++++++ .../resource-server-open-api-v3.json | 115 + .../readonly-backend/test_and_report.bash | 3 + .../readonly/readonly-frontend/.editorconfig | 16 + .../readonly/readonly-frontend/.gitignore | 44 + .../readonly/readonly-frontend/angular.json | 121 + .../readonly-frontend/build_image.bash | 47 + .../readonly/readonly-frontend/karma.conf.js | 40 + .../readonly/readonly-frontend/mock-data.json | 16 + .../readonly/readonly-frontend/mock-server.js | 24 + .../readonly/readonly-frontend/package.json | 51 + .../readonly/readonly-frontend/server.ts | 60 + .../src/app/app.component.html | 2 + .../src/app/app.component.scss | 0 .../src/app/app.component.spec.ts | 22 + .../src/app/app.component.ts | 13 + .../src/app/app.config.server.ts | 11 + .../readonly-frontend/src/app/app.config.ts | 15 + .../readonly-frontend/src/app/app.routes.ts | 28 + .../src/app/app.service.spec.ts | 116 + .../readonly-frontend/src/app/app.service.ts | 26 + .../src/app/auth.guard.spec.ts | 163 + .../readonly-frontend/src/app/auth.guard.ts | 42 + .../src/app/auth.service.spec.ts | 113 + .../readonly-frontend/src/app/auth.service.ts | 20 + .../src/app/cookie.service.spec.ts | 61 + .../src/app/cookie.service.ts | 48 + .../src/app/error.service.spec.ts | 50 + .../src/app/error.service.ts | 21 + .../src/app/error/error.component.html | 16 + .../src/app/error/error.component.scss | 9 + .../src/app/error/error.component.spec.ts | 161 + .../src/app/error/error.component.ts | 68 + .../generation-cookie-csrf.service.spec.ts | 51 + .../src/app/generation-cookie-csrf.service.ts | 41 + .../src/app/layout/layout.component.html | 8 + .../src/app/layout/layout.component.scss | 0 .../src/app/layout/layout.component.spec.ts | 80 + .../src/app/layout/layout.component.ts | 64 + .../app/line-chart/line-chart.component.html | 9 + .../app/line-chart/line-chart.component.scss | 0 .../line-chart/line-chart.component.spec.ts | 75 + .../app/line-chart/line-chart.component.ts | 82 + .../src/app/models/error-on-page.model.ts | 51 + .../app/models/error-response-code.model.ts | 61 + .../src/app/models/point.model.ts | 9 + .../app/not-found/not-found.component.html | 11 + .../app/not-found/not-found.component.scss | 0 .../app/not-found/not-found.component.spec.ts | 23 + .../src/app/not-found/not-found.component.ts | 13 + .../app/save-future-redirect.service.spec.ts | 87 + .../src/app/save-future-redirect.service.ts | 38 + .../src/app/window.service.ts | 11 + .../readonly-frontend/src/assets/.gitkeep | 0 .../readonly-frontend/src/assets/cat_401.png | Bin 0 -> 1008276 bytes .../readonly-frontend/src/assets/error.jpg | Bin 0 -> 44979 bytes .../readonly-frontend/src/assets/logo.png | Bin 0 -> 84009 bytes .../environments/environment.development.ts | 5 + .../src/environments/environment.ts | 5 + .../readonly-frontend/src/favicon.ico | Bin 0 -> 15406 bytes .../Roboto/KFOiCnqEu92Fr1Mu51QrEz0dL_nz.woff2 | Bin 0 -> 16412 bytes .../Roboto/KFOiCnqEu92Fr1Mu51QrEz4dL_nz.woff2 | Bin 0 -> 12860 bytes .../Roboto/KFOiCnqEu92Fr1Mu51QrEzAdLw.woff2 | Bin 0 -> 17008 bytes .../Roboto/KFOiCnqEu92Fr1Mu51QrEzQdL_nz.woff2 | Bin 0 -> 10204 bytes .../KFOjCnqEu92Fr1Mu51S7ACc-CsTKlA.woff2 | Bin 0 -> 10888 bytes .../KFOjCnqEu92Fr1Mu51S7ACc0CsTKlA.woff2 | Bin 0 -> 13100 bytes .../KFOjCnqEu92Fr1Mu51S7ACc3CsTKlA.woff2 | Bin 0 -> 16800 bytes .../Roboto/KFOjCnqEu92Fr1Mu51S7ACc6CsQ.woff2 | Bin 0 -> 17316 bytes .../KFOjCnqEu92Fr1Mu51TLBCc-CsTKlA.woff2 | Bin 0 -> 10796 bytes .../KFOjCnqEu92Fr1Mu51TLBCc0CsTKlA.woff2 | Bin 0 -> 13136 bytes .../KFOjCnqEu92Fr1Mu51TLBCc3CsTKlA.woff2 | Bin 0 -> 16984 bytes .../Roboto/KFOjCnqEu92Fr1Mu51TLBCc6CsQ.woff2 | Bin 0 -> 17520 bytes .../KFOjCnqEu92Fr1Mu51TjASc-CsTKlA.woff2 | Bin 0 -> 10708 bytes .../KFOjCnqEu92Fr1Mu51TjASc0CsTKlA.woff2 | Bin 0 -> 13148 bytes .../KFOjCnqEu92Fr1Mu51TjASc3CsTKlA.woff2 | Bin 0 -> 16860 bytes .../Roboto/KFOjCnqEu92Fr1Mu51TjASc6CsQ.woff2 | Bin 0 -> 17448 bytes .../KFOjCnqEu92Fr1Mu51TzBic-CsTKlA.woff2 | Bin 0 -> 10368 bytes .../KFOjCnqEu92Fr1Mu51TzBic0CsTKlA.woff2 | Bin 0 -> 12892 bytes .../KFOjCnqEu92Fr1Mu51TzBic3CsTKlA.woff2 | Bin 0 -> 16296 bytes .../Roboto/KFOjCnqEu92Fr1Mu51TzBic6CsQ.woff2 | Bin 0 -> 17020 bytes .../Roboto/KFOkCnqEu92Fr1MmgVxFIzIFKw.woff2 | Bin 0 -> 14912 bytes .../Roboto/KFOkCnqEu92Fr1MmgVxGIzIFKw.woff2 | Bin 0 -> 12088 bytes .../Roboto/KFOkCnqEu92Fr1MmgVxIIzI.woff2 | Bin 0 -> 15808 bytes .../Roboto/KFOkCnqEu92Fr1MmgVxMIzIFKw.woff2 | Bin 0 -> 9460 bytes .../Roboto/KFOkCnqEu92Fr1Mu51xFIzIFKw.woff2 | Bin 0 -> 16888 bytes .../Roboto/KFOkCnqEu92Fr1Mu51xGIzIFKw.woff2 | Bin 0 -> 13012 bytes .../Roboto/KFOkCnqEu92Fr1Mu51xIIzI.woff2 | Bin 0 -> 17324 bytes .../Roboto/KFOkCnqEu92Fr1Mu51xMIzIFKw.woff2 | Bin 0 -> 10544 bytes .../Roboto/KFOlCnqEu92Fr1MmEU9fABc4EsA.woff2 | Bin 0 -> 10048 bytes .../Roboto/KFOlCnqEu92Fr1MmEU9fBBc4.woff2 | Bin 0 -> 15872 bytes .../Roboto/KFOlCnqEu92Fr1MmEU9fCRc4EsA.woff2 | Bin 0 -> 15200 bytes .../Roboto/KFOlCnqEu92Fr1MmEU9fChc4EsA.woff2 | Bin 0 -> 12060 bytes .../Roboto/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2 | Bin 0 -> 9760 bytes .../Roboto/KFOlCnqEu92Fr1MmSU5fBBc4.woff2 | Bin 0 -> 15784 bytes .../Roboto/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2 | Bin 0 -> 15148 bytes .../Roboto/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2 | Bin 0 -> 12048 bytes .../Roboto/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2 | Bin 0 -> 9760 bytes .../Roboto/KFOlCnqEu92Fr1MmWUlfBBc4.woff2 | Bin 0 -> 15816 bytes .../Roboto/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2 | Bin 0 -> 14952 bytes .../Roboto/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2 | Bin 0 -> 12048 bytes .../Roboto/KFOlCnqEu92Fr1MmYUtfABc4EsA.woff2 | Bin 0 -> 9896 bytes .../Roboto/KFOlCnqEu92Fr1MmYUtfBBc4.woff2 | Bin 0 -> 15712 bytes .../Roboto/KFOlCnqEu92Fr1MmYUtfCRc4EsA.woff2 | Bin 0 -> 15156 bytes .../Roboto/KFOlCnqEu92Fr1MmYUtfChc4EsA.woff2 | Bin 0 -> 12076 bytes .../fonts/Roboto/KFOmCnqEu92Fr1Mu4mxK.woff2 | Bin 0 -> 15736 bytes .../Roboto/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 | Bin 0 -> 9900 bytes .../Roboto/KFOmCnqEu92Fr1Mu72xKOzY.woff2 | Bin 0 -> 15520 bytes .../Roboto/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 | Bin 0 -> 12200 bytes .../fonts/fontawesome-free/fa-brands-400.ttf | Bin 0 -> 187208 bytes .../fontawesome-free/fa-brands-400.woff2 | Bin 0 -> 108020 bytes .../fonts/fontawesome-free/fa-regular-400.ttf | Bin 0 -> 63952 bytes .../fontawesome-free/fa-regular-400.woff2 | Bin 0 -> 24948 bytes .../fonts/fontawesome-free/fa-solid-900.ttf | Bin 0 -> 394628 bytes .../fonts/fontawesome-free/fa-solid-900.woff2 | Bin 0 -> 150124 bytes .../fontawesome-free/fa-v4compatibility.ttf | Bin 0 -> 10172 bytes .../fontawesome-free/fa-v4compatibility.woff2 | Bin 0 -> 4564 bytes .../readonly/readonly-frontend/src/index.html | 13 + .../readonly-frontend/src/main.server.ts | 7 + .../readonly/readonly-frontend/src/main.ts | 6 + .../readonly-frontend/src/scss/_shame.scss | 0 .../src/scss/base/_typography.scss | 434 ++ .../src/scss/vendors/_material_io.scss | 36 + .../vendors/fontawesome-free/_animated.scss | 153 + .../fontawesome-free/_bordered-pulled.scss | 20 + .../scss/vendors/fontawesome-free/_core.scss | 43 + .../fontawesome-free/_fixed-width.scss | 7 + .../vendors/fontawesome-free/_functions.scss | 57 + .../scss/vendors/fontawesome-free/_icons.scss | 10 + .../scss/vendors/fontawesome-free/_list.scss | 18 + .../vendors/fontawesome-free/_mixins.scss | 75 + .../fontawesome-free/_rotated-flipped.scss | 31 + .../fontawesome-free/_screen-reader.scss | 14 + .../scss/vendors/fontawesome-free/_shims.scss | 2042 +++++++ .../vendors/fontawesome-free/_sizing.scss | 16 + .../vendors/fontawesome-free/_stacked.scss | 32 + .../vendors/fontawesome-free/_variables.scss | 4961 +++++++++++++++++ .../scss/vendors/fontawesome-free/brands.scss | 30 + .../vendors/fontawesome-free/fontawesome.scss | 21 + .../vendors/fontawesome-free/regular.scss | 26 + .../scss/vendors/fontawesome-free/solid.scss | 26 + .../vendors/fontawesome-free/v4-shims.scss | 11 + .../readonly-frontend/src/styles.scss | 14 + .../readonly-frontend/test_and_report.bash | 3 + .../readonly-frontend/tsconfig.app.json | 18 + .../readonly/readonly-frontend/tsconfig.json | 32 + .../readonly-frontend/tsconfig.spec.json | 14 + .../.gitignore | 7 + .../ca-certificates/type | 1 + .../docker-compose.yaml | 158 + .../confs/client-write-and-read.conf.templ | 70 + .../nginx/confs/default.conf | 11 + .../nginx/nginx.conf | 37 + .../write-and-read-backend/.editorconfig | 16 + .../write-and-read-backend/.gitignore | 37 + .../write-and-read-backend/build.gradle | 95 + .../write-and-read-backend/build_image.bash | 20 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 63375 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 + .../write-and-read-backend/gradlew | 248 + .../write-and-read-backend/gradlew.bat | 92 + .../write-and-read-backend/lombok.config | 1 + .../write-and-read-backend/settings.gradle | 1 + .../SpringSecurityConfiguration.java | 98 + .../WriteAndReadBackendApplication.java | 16 + .../controllers/CalculateController.java | 57 + .../controllers/GlobalExceptionHandler.java | 71 + .../ExcludeFromJacocoGeneratedReport.java | 21 + .../CustomServerLogoutSuccessHandler.java | 23 + ...tomServerAuthenticationFailureHandler.java | 81 + .../AuthenticateFrontendWebFilter.java | 57 + .../IsAuthenticatedCheckWebFilter.java | 85 + ...itional-spring-configuration-metadata.json | 5 + .../src/main/resources/application-prod.yml | 3 + .../src/main/resources/application.yml | 32 + .../src/main/resources/banner.txt | 7 + .../controllers/CalculateControllerTest.java | 580 ++ .../test/resources/ory-hydra-open-api-v3.json | 3689 ++++++++++++ .../resource-server-open-api-v3.json | 115 + .../test_and_report.bash | 3 + .../write-and-read-frontend/.editorconfig | 16 + .../write-and-read-frontend/.gitignore | 44 + .../write-and-read-frontend/angular.json | 121 + .../write-and-read-frontend/build_image.bash | 47 + .../write-and-read-frontend/karma.conf.js | 40 + .../write-and-read-frontend/mock-data.json | 16 + .../write-and-read-frontend/mock-server.js | 28 + .../write-and-read-frontend/package.json | 49 + .../write-and-read-frontend/server.ts | 60 + .../app/add-point/add-point.component.html | 11 + .../app/add-point/add-point.component.scss | 0 .../app/add-point/add-point.component.spec.ts | 105 + .../src/app/add-point/add-point.component.ts | 83 + .../src/app/app.component.html | 2 + .../src/app/app.component.scss | 0 .../src/app/app.component.spec.ts | 17 + .../src/app/app.component.ts | 13 + .../src/app/app.config.server.ts | 11 + .../src/app/app.config.ts | 16 + .../src/app/app.routes.ts | 28 + .../src/app/app.service.spec.ts | 97 + .../src/app/app.service.ts | 28 + .../src/app/auth.guard.spec.ts | 163 + .../src/app/auth.guard.ts | 42 + .../src/app/auth.service.spec.ts | 111 + .../src/app/auth.service.ts | 20 + .../src/app/cookie.service.spec.ts | 61 + .../src/app/cookie.service.ts | 48 + .../src/app/error.service.spec.ts | 50 + .../src/app/error.service.ts | 21 + .../src/app/error/error.component.html | 16 + .../src/app/error/error.component.scss | 9 + .../src/app/error/error.component.spec.ts | 161 + .../src/app/error/error.component.ts | 68 + .../generation-cookie-csrf.service.spec.ts | 51 + .../src/app/generation-cookie-csrf.service.ts | 41 + .../src/app/layout/layout.component.html | 8 + .../src/app/layout/layout.component.scss | 0 .../src/app/layout/layout.component.spec.ts | 80 + .../src/app/layout/layout.component.ts | 64 + .../src/app/models/error-on-page.model.ts | 51 + .../app/models/error-response-code.model.ts | 61 + .../app/not-found/not-found.component.html | 11 + .../app/not-found/not-found.component.scss | 0 .../app/not-found/not-found.component.spec.ts | 23 + .../src/app/not-found/not-found.component.ts | 13 + .../app/save-future-redirect.service.spec.ts | 86 + .../src/app/save-future-redirect.service.ts | 38 + .../src/app/window.service.ts | 11 + .../src/assets/.gitkeep | 0 .../src/assets/cat_401.png | Bin 0 -> 1008276 bytes .../src/assets/error.jpg | Bin 0 -> 44979 bytes .../src/assets/logo.png | Bin 0 -> 84009 bytes .../environments/environment.development.ts | 5 + .../src/environments/environment.ts | 5 + .../write-and-read-frontend/src/favicon.ico | Bin 0 -> 15406 bytes .../Roboto/KFOiCnqEu92Fr1Mu51QrEz0dL_nz.woff2 | Bin 0 -> 16412 bytes .../Roboto/KFOiCnqEu92Fr1Mu51QrEz4dL_nz.woff2 | Bin 0 -> 12860 bytes .../Roboto/KFOiCnqEu92Fr1Mu51QrEzAdLw.woff2 | Bin 0 -> 17008 bytes .../Roboto/KFOiCnqEu92Fr1Mu51QrEzQdL_nz.woff2 | Bin 0 -> 10204 bytes .../KFOjCnqEu92Fr1Mu51S7ACc-CsTKlA.woff2 | Bin 0 -> 10888 bytes .../KFOjCnqEu92Fr1Mu51S7ACc0CsTKlA.woff2 | Bin 0 -> 13100 bytes .../KFOjCnqEu92Fr1Mu51S7ACc3CsTKlA.woff2 | Bin 0 -> 16800 bytes .../Roboto/KFOjCnqEu92Fr1Mu51S7ACc6CsQ.woff2 | Bin 0 -> 17316 bytes .../KFOjCnqEu92Fr1Mu51TLBCc-CsTKlA.woff2 | Bin 0 -> 10796 bytes .../KFOjCnqEu92Fr1Mu51TLBCc0CsTKlA.woff2 | Bin 0 -> 13136 bytes .../KFOjCnqEu92Fr1Mu51TLBCc3CsTKlA.woff2 | Bin 0 -> 16984 bytes .../Roboto/KFOjCnqEu92Fr1Mu51TLBCc6CsQ.woff2 | Bin 0 -> 17520 bytes .../KFOjCnqEu92Fr1Mu51TjASc-CsTKlA.woff2 | Bin 0 -> 10708 bytes .../KFOjCnqEu92Fr1Mu51TjASc0CsTKlA.woff2 | Bin 0 -> 13148 bytes .../KFOjCnqEu92Fr1Mu51TjASc3CsTKlA.woff2 | Bin 0 -> 16860 bytes .../Roboto/KFOjCnqEu92Fr1Mu51TjASc6CsQ.woff2 | Bin 0 -> 17448 bytes .../KFOjCnqEu92Fr1Mu51TzBic-CsTKlA.woff2 | Bin 0 -> 10368 bytes .../KFOjCnqEu92Fr1Mu51TzBic0CsTKlA.woff2 | Bin 0 -> 12892 bytes .../KFOjCnqEu92Fr1Mu51TzBic3CsTKlA.woff2 | Bin 0 -> 16296 bytes .../Roboto/KFOjCnqEu92Fr1Mu51TzBic6CsQ.woff2 | Bin 0 -> 17020 bytes .../Roboto/KFOkCnqEu92Fr1MmgVxFIzIFKw.woff2 | Bin 0 -> 14912 bytes .../Roboto/KFOkCnqEu92Fr1MmgVxGIzIFKw.woff2 | Bin 0 -> 12088 bytes .../Roboto/KFOkCnqEu92Fr1MmgVxIIzI.woff2 | Bin 0 -> 15808 bytes .../Roboto/KFOkCnqEu92Fr1MmgVxMIzIFKw.woff2 | Bin 0 -> 9460 bytes .../Roboto/KFOkCnqEu92Fr1Mu51xFIzIFKw.woff2 | Bin 0 -> 16888 bytes .../Roboto/KFOkCnqEu92Fr1Mu51xGIzIFKw.woff2 | Bin 0 -> 13012 bytes .../Roboto/KFOkCnqEu92Fr1Mu51xIIzI.woff2 | Bin 0 -> 17324 bytes .../Roboto/KFOkCnqEu92Fr1Mu51xMIzIFKw.woff2 | Bin 0 -> 10544 bytes .../Roboto/KFOlCnqEu92Fr1MmEU9fABc4EsA.woff2 | Bin 0 -> 10048 bytes .../Roboto/KFOlCnqEu92Fr1MmEU9fBBc4.woff2 | Bin 0 -> 15872 bytes .../Roboto/KFOlCnqEu92Fr1MmEU9fCRc4EsA.woff2 | Bin 0 -> 15200 bytes .../Roboto/KFOlCnqEu92Fr1MmEU9fChc4EsA.woff2 | Bin 0 -> 12060 bytes .../Roboto/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2 | Bin 0 -> 9760 bytes .../Roboto/KFOlCnqEu92Fr1MmSU5fBBc4.woff2 | Bin 0 -> 15784 bytes .../Roboto/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2 | Bin 0 -> 15148 bytes .../Roboto/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2 | Bin 0 -> 12048 bytes .../Roboto/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2 | Bin 0 -> 9760 bytes .../Roboto/KFOlCnqEu92Fr1MmWUlfBBc4.woff2 | Bin 0 -> 15816 bytes .../Roboto/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2 | Bin 0 -> 14952 bytes .../Roboto/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2 | Bin 0 -> 12048 bytes .../Roboto/KFOlCnqEu92Fr1MmYUtfABc4EsA.woff2 | Bin 0 -> 9896 bytes .../Roboto/KFOlCnqEu92Fr1MmYUtfBBc4.woff2 | Bin 0 -> 15712 bytes .../Roboto/KFOlCnqEu92Fr1MmYUtfCRc4EsA.woff2 | Bin 0 -> 15156 bytes .../Roboto/KFOlCnqEu92Fr1MmYUtfChc4EsA.woff2 | Bin 0 -> 12076 bytes .../fonts/Roboto/KFOmCnqEu92Fr1Mu4mxK.woff2 | Bin 0 -> 15736 bytes .../Roboto/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 | Bin 0 -> 9900 bytes .../Roboto/KFOmCnqEu92Fr1Mu72xKOzY.woff2 | Bin 0 -> 15520 bytes .../Roboto/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 | Bin 0 -> 12200 bytes .../fonts/fontawesome-free/fa-brands-400.ttf | Bin 0 -> 187208 bytes .../fontawesome-free/fa-brands-400.woff2 | Bin 0 -> 108020 bytes .../fonts/fontawesome-free/fa-regular-400.ttf | Bin 0 -> 63952 bytes .../fontawesome-free/fa-regular-400.woff2 | Bin 0 -> 24948 bytes .../fonts/fontawesome-free/fa-solid-900.ttf | Bin 0 -> 394628 bytes .../fonts/fontawesome-free/fa-solid-900.woff2 | Bin 0 -> 150124 bytes .../fontawesome-free/fa-v4compatibility.ttf | Bin 0 -> 10172 bytes .../fontawesome-free/fa-v4compatibility.woff2 | Bin 0 -> 4564 bytes .../write-and-read-frontend/src/index.html | 13 + .../src/main.server.ts | 7 + .../write-and-read-frontend/src/main.ts | 6 + .../src/scss/_shame.scss | 0 .../src/scss/base/_typography.scss | 434 ++ .../src/scss/vendors/_material_io.scss | 35 + .../vendors/fontawesome-free/_animated.scss | 153 + .../fontawesome-free/_bordered-pulled.scss | 20 + .../scss/vendors/fontawesome-free/_core.scss | 43 + .../fontawesome-free/_fixed-width.scss | 7 + .../vendors/fontawesome-free/_functions.scss | 57 + .../scss/vendors/fontawesome-free/_icons.scss | 10 + .../scss/vendors/fontawesome-free/_list.scss | 18 + .../vendors/fontawesome-free/_mixins.scss | 75 + .../fontawesome-free/_rotated-flipped.scss | 31 + .../fontawesome-free/_screen-reader.scss | 14 + .../scss/vendors/fontawesome-free/_shims.scss | 2042 +++++++ .../vendors/fontawesome-free/_sizing.scss | 16 + .../vendors/fontawesome-free/_stacked.scss | 32 + .../vendors/fontawesome-free/_variables.scss | 4961 +++++++++++++++++ .../scss/vendors/fontawesome-free/brands.scss | 30 + .../vendors/fontawesome-free/fontawesome.scss | 21 + .../vendors/fontawesome-free/regular.scss | 26 + .../scss/vendors/fontawesome-free/solid.scss | 26 + .../vendors/fontawesome-free/v4-shims.scss | 11 + .../write-and-read-frontend/src/styles.scss | 14 + .../test_and_report.bash | 3 + .../write-and-read-frontend/tsconfig.app.json | 18 + .../write-and-read-frontend/tsconfig.json | 32 + .../tsconfig.spec.json | 14 + .../.gitignore | 7 + .../ca-certificates/type | 1 + .../docker-compose.yaml | 109 + .../nginx/confs/default.conf | 11 + .../nginx/confs/resource-server.conf.templ | 36 + .../nginx/nginx.conf | 37 + .../resource-server/.editorconfig | 16 + .../resource-server/.gitignore | 37 + .../resource-server/build.gradle | 85 + .../resource-server/build_image.bash | 20 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 62076 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + .../resource-server/gradlew | 245 + .../resource-server/gradlew.bat | 92 + .../resource-server/lombok.config | 1 + .../resource-server/settings.gradle | 1 + .../ResourceServerApplication.java | 16 + .../SpringSecurityConfiguration.java | 42 + .../controllers/CalculateController.java | 29 + .../controllers/GlobalExceptionHandler.java | 75 + .../controllers/StatisticsController.java | 34 + .../ExcludeFromJacocoGeneratedReport.java | 21 + .../resource_server/models/Point.java | 19 + .../services/PointService.java | 47 + .../src/main/resources/application-prod.yml | 3 + .../src/main/resources/application.yml | 22 + .../src/main/resources/banner.txt | 7 + .../controllers/CalculateControllerTest.java | 63 + .../controllers/StatisticsControllerTest.java | 85 + .../resource-server/test_and_report.bash | 3 + .../start.bash | 330 ++ .../stop.bash | 21 + .../stop_and_clear.bash | 73 + 622 files changed, 58693 insertions(+) create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/.env create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/.gitignore create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/README.md create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/README_RUS.md create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory-hydra-oauth2-example.drawio create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory-hydra-oauth2-example.png create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/.gitignore create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/.editorconfig create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/.gitignore create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/build.gradle create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/build_image.bash create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/gradle/wrapper/gradle-wrapper.jar create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/gradle/wrapper/gradle-wrapper.properties create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/gradlew create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/gradlew.bat create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/lombok.config create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/settings.gradle create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/AuthorizationBackendApplication.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/JpaConfiguration.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/SpringSecurityConfiguration.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/controllers/ConsentProviderController.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/controllers/GlobalExceptionHandler.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/controllers/LoginProviderController.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/controllers/LogoutProviderController.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/controllers/registration/RegistrationController.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/dao/entities/User.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/dao/exception_translators/CustomPersistenceExceptionTranslator.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/dao/repositories/UserRepository.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/exceptions/AcceptLoginRequestModelException.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/exceptions/IncorrectPasswordException.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/exceptions/LoginDoesNotExistException.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/exceptions/relational_database/LoginOrOrgExistException.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/jacoco_ignore/ExcludeFromJacocoGeneratedReport.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/AcceptConsentRequestModel.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/AcceptConsentRequestModelBuilder.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/AcceptLoginRequestModel.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/AcceptLoginRequestModelBuilder.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/Client.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/ErrorModel.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/ErrorModelBuilder.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/GetConsentResponseModel.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/GetLoginResponseModel.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/GetLogoutResponseModel.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/PostLoginModel.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/PostRegistrationModel.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/PutLogoutModel.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/ResponseWithRedirectModel.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/SessionForTokenModel.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/SessionForTokenModelBuilder.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/services/OryHydraService.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/services/UserService.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/resources/META-INF/additional-spring-configuration-metadata.json create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/resources/application-prod.yml create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/resources/application.yml create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/resources/banner.txt create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/SupportModule.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/TestAccessTokenExtension.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/TestIdTokenExtension.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/controllers/ConsentProviderControllerTest.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/controllers/LoginProviderControllerTest.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/controllers/LogoutProviderControllerTest.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/controllers/registration/RegistrationControllerTest.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/models/AcceptLoginRequestModelTest.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/models/CreateClientModel.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/services/OryHydraServiceTest.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/services/UserServiceTest.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/resources/ory-hydra-open-api-v3.json create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/test_and_report.bash create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/.editorconfig create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/.gitignore create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/angular.json create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/build_image.bash create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/karma.conf.js create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/mock-data.json create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/mock-server.js create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/package.json create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/server.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.component.html create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.component.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.component.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.config.server.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.config.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.routes.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.service.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.service.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/consent/consent.component.html create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/consent/consent.component.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/consent/consent.component.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/consent/consent.component.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/consent/consent.service.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/consent/consent.service.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/cookie.service.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/cookie.service.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/error.service.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/error.service.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/error/error.component.html create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/error/error.component.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/error/error.component.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/error/error.component.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/generation-cookie-csrf.service.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/generation-cookie-csrf.service.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/login/login.component.html create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/login/login.component.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/login/login.component.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/login/login.component.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/login/login.service.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/login/login.service.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-handled/logout-handled.component.html create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-handled/logout-handled.component.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-handled/logout-handled.component.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-handled/logout-handled.component.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-request/logout-request.component.html create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-request/logout-request.component.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-request/logout-request.component.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-request/logout-request.component.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout.service.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout.service.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/models/error-on-page.model.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/models/error-response-code.model.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/models/response-with-redirect.model.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/not-found/not-found.component.html create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/not-found/not-found.component.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/not-found/not-found.component.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/not-found/not-found.component.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration-routing.module.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.component.html create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.component.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.component.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.component.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.module.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.service.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.service.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/window.service.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/assets/.gitkeep create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/assets/cat_401.png create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/assets/cat_logout.jpg create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/assets/error.jpg create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/assets/logo.png create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/assets/stav.jpg create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/environments/environment.development.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/environments/environment.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/favicon.ico create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOiCnqEu92Fr1Mu51QrEz0dL_nz.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOiCnqEu92Fr1Mu51QrEz4dL_nz.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOiCnqEu92Fr1Mu51QrEzAdLw.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOiCnqEu92Fr1Mu51QrEzQdL_nz.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51S7ACc-CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51S7ACc0CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51S7ACc3CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51S7ACc6CsQ.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TLBCc-CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TLBCc0CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TLBCc3CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TLBCc6CsQ.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TjASc-CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TjASc0CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TjASc3CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TjASc6CsQ.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TzBic-CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TzBic0CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TzBic3CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TzBic6CsQ.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOkCnqEu92Fr1MmgVxFIzIFKw.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOkCnqEu92Fr1MmgVxGIzIFKw.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOkCnqEu92Fr1MmgVxIIzI.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOkCnqEu92Fr1MmgVxMIzIFKw.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOkCnqEu92Fr1Mu51xFIzIFKw.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOkCnqEu92Fr1Mu51xGIzIFKw.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOkCnqEu92Fr1Mu51xIIzI.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOkCnqEu92Fr1Mu51xMIzIFKw.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmEU9fABc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmEU9fBBc4.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmEU9fCRc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmEU9fChc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmSU5fBBc4.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmWUlfBBc4.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmYUtfABc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmYUtfBBc4.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmYUtfCRc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmYUtfChc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOmCnqEu92Fr1Mu4mxK.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOmCnqEu92Fr1Mu72xKOzY.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/Roboto/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/fontawesome-free/fa-brands-400.ttf create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/fontawesome-free/fa-brands-400.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/fontawesome-free/fa-regular-400.ttf create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/fontawesome-free/fa-regular-400.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/fontawesome-free/fa-solid-900.ttf create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/fontawesome-free/fa-solid-900.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/fontawesome-free/fa-v4compatibility.ttf create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/fonts/fontawesome-free/fa-v4compatibility.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/index.html create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/main.server.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/main.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/scss/_shame.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/scss/base/_typography.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/scss/vendors/_material_io.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/scss/vendors/fontawesome-free/_animated.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/scss/vendors/fontawesome-free/_bordered-pulled.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/scss/vendors/fontawesome-free/_core.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/scss/vendors/fontawesome-free/_fixed-width.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/scss/vendors/fontawesome-free/_functions.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/scss/vendors/fontawesome-free/_icons.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/scss/vendors/fontawesome-free/_list.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/scss/vendors/fontawesome-free/_mixins.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/scss/vendors/fontawesome-free/_rotated-flipped.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/scss/vendors/fontawesome-free/_screen-reader.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/scss/vendors/fontawesome-free/_shims.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/scss/vendors/fontawesome-free/_sizing.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/scss/vendors/fontawesome-free/_stacked.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/scss/vendors/fontawesome-free/_variables.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/scss/vendors/fontawesome-free/brands.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/scss/vendors/fontawesome-free/fontawesome.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/scss/vendors/fontawesome-free/regular.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/scss/vendors/fontawesome-free/solid.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/scss/vendors/fontawesome-free/v4-shims.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/styles.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/test_and_report.bash create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/tsconfig.app.json create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/tsconfig.json create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/tsconfig.spec.json create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/docker-compose.prod.yaml create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/docker-compose.yaml create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/hydra/postgresql.conf create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/nginx/confs/.gitignore create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/nginx/confs/authorization-server.conf.templ create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/nginx/confs/default.conf create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/nginx/nginx.conf create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/user_data/postgresql-init.sql create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/user_data/postgresql.conf create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/.gitignore create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/ca-certificates/type create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/docker-compose.yaml create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/nginx/confs/client-readonly.conf.templ create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/nginx/confs/default.conf create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/nginx/nginx.conf create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-backend/.editorconfig create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-backend/.gitignore create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-backend/build.gradle create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-backend/build_image.bash create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-backend/gradle/wrapper/gradle-wrapper.jar create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-backend/gradle/wrapper/gradle-wrapper.properties create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-backend/gradlew create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-backend/gradlew.bat create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-backend/lombok.config create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-backend/settings.gradle create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-backend/src/main/java/com/github/chistousov/readonly_backend/ReadonlyBackendApplication.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-backend/src/main/java/com/github/chistousov/readonly_backend/SpringSecurityConfiguration.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-backend/src/main/java/com/github/chistousov/readonly_backend/controllers/DataController.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-backend/src/main/java/com/github/chistousov/readonly_backend/controllers/GlobalExceptionHandler.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-backend/src/main/java/com/github/chistousov/readonly_backend/jacoco_ignore/ExcludeFromJacocoGeneratedReport.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-backend/src/main/java/com/github/chistousov/readonly_backend/security/auth/logout/success_handlers/CustomServerLogoutSuccessHandler.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-backend/src/main/java/com/github/chistousov/readonly_backend/security/auth/oauth2/handlers/CustomServerAuthenticationFailureHandler.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-backend/src/main/java/com/github/chistousov/readonly_backend/security/filters/AuthenticateFrontendWebFilter.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-backend/src/main/java/com/github/chistousov/readonly_backend/security/filters/IsAuthenticatedCheckWebFilter.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-backend/src/main/resources/META-INF/additional-spring-configuration-metadata.json create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-backend/src/main/resources/application-prod.yml create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-backend/src/main/resources/application.yml create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-backend/src/main/resources/banner.txt create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-backend/src/test/java/com/github/chistousov/readonly_backend/controllers/DataControllerTest.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-backend/src/test/resources/ory-hydra-open-api-v3.json create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-backend/src/test/resources/resource-server-open-api-v3.json create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-backend/test_and_report.bash create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/.editorconfig create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/.gitignore create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/angular.json create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/build_image.bash create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/karma.conf.js create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/mock-data.json create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/mock-server.js create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/package.json create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/server.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/app.component.html create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/app.component.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/app.component.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/app.component.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/app.config.server.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/app.config.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/app.routes.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/app.service.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/app.service.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/auth.guard.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/auth.guard.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/auth.service.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/auth.service.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/cookie.service.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/cookie.service.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/error.service.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/error.service.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/error/error.component.html create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/error/error.component.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/error/error.component.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/error/error.component.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/generation-cookie-csrf.service.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/generation-cookie-csrf.service.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/layout/layout.component.html create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/layout/layout.component.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/layout/layout.component.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/layout/layout.component.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/line-chart/line-chart.component.html create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/line-chart/line-chart.component.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/line-chart/line-chart.component.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/line-chart/line-chart.component.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/models/error-on-page.model.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/models/error-response-code.model.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/models/point.model.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/not-found/not-found.component.html create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/not-found/not-found.component.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/not-found/not-found.component.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/not-found/not-found.component.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/save-future-redirect.service.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/save-future-redirect.service.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/app/window.service.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/assets/.gitkeep create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/assets/cat_401.png create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/assets/error.jpg create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/assets/logo.png create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/environments/environment.development.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/environments/environment.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/favicon.ico create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOiCnqEu92Fr1Mu51QrEz0dL_nz.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOiCnqEu92Fr1Mu51QrEz4dL_nz.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOiCnqEu92Fr1Mu51QrEzAdLw.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOiCnqEu92Fr1Mu51QrEzQdL_nz.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51S7ACc-CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51S7ACc0CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51S7ACc3CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51S7ACc6CsQ.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TLBCc-CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TLBCc0CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TLBCc3CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TLBCc6CsQ.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TjASc-CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TjASc0CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TjASc3CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TjASc6CsQ.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TzBic-CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TzBic0CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TzBic3CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TzBic6CsQ.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOkCnqEu92Fr1MmgVxFIzIFKw.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOkCnqEu92Fr1MmgVxGIzIFKw.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOkCnqEu92Fr1MmgVxIIzI.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOkCnqEu92Fr1MmgVxMIzIFKw.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOkCnqEu92Fr1Mu51xFIzIFKw.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOkCnqEu92Fr1Mu51xGIzIFKw.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOkCnqEu92Fr1Mu51xIIzI.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOkCnqEu92Fr1Mu51xMIzIFKw.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmEU9fABc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmEU9fBBc4.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmEU9fCRc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmEU9fChc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmSU5fBBc4.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmWUlfBBc4.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmYUtfABc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmYUtfBBc4.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmYUtfCRc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmYUtfChc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOmCnqEu92Fr1Mu4mxK.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOmCnqEu92Fr1Mu72xKOzY.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/Roboto/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/fontawesome-free/fa-brands-400.ttf create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/fontawesome-free/fa-brands-400.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/fontawesome-free/fa-regular-400.ttf create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/fontawesome-free/fa-regular-400.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/fontawesome-free/fa-solid-900.ttf create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/fontawesome-free/fa-solid-900.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/fontawesome-free/fa-v4compatibility.ttf create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/fonts/fontawesome-free/fa-v4compatibility.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/index.html create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/main.server.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/main.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/scss/_shame.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/scss/base/_typography.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/scss/vendors/_material_io.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/scss/vendors/fontawesome-free/_animated.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/scss/vendors/fontawesome-free/_bordered-pulled.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/scss/vendors/fontawesome-free/_core.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/scss/vendors/fontawesome-free/_fixed-width.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/scss/vendors/fontawesome-free/_functions.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/scss/vendors/fontawesome-free/_icons.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/scss/vendors/fontawesome-free/_list.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/scss/vendors/fontawesome-free/_mixins.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/scss/vendors/fontawesome-free/_rotated-flipped.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/scss/vendors/fontawesome-free/_screen-reader.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/scss/vendors/fontawesome-free/_shims.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/scss/vendors/fontawesome-free/_sizing.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/scss/vendors/fontawesome-free/_stacked.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/scss/vendors/fontawesome-free/_variables.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/scss/vendors/fontawesome-free/brands.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/scss/vendors/fontawesome-free/fontawesome.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/scss/vendors/fontawesome-free/regular.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/scss/vendors/fontawesome-free/solid.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/scss/vendors/fontawesome-free/v4-shims.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/src/styles.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/test_and_report.bash create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/tsconfig.app.json create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/tsconfig.json create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_readonly/readonly/readonly-frontend/tsconfig.spec.json create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/.gitignore create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/ca-certificates/type create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/docker-compose.yaml create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/nginx/confs/client-write-and-read.conf.templ create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/nginx/confs/default.conf create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/nginx/nginx.conf create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-backend/.editorconfig create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-backend/.gitignore create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-backend/build.gradle create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-backend/build_image.bash create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-backend/gradle/wrapper/gradle-wrapper.jar create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-backend/gradle/wrapper/gradle-wrapper.properties create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-backend/gradlew create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-backend/gradlew.bat create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-backend/lombok.config create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-backend/settings.gradle create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-backend/src/main/java/com/github/chistousov/write_and_read_backend/SpringSecurityConfiguration.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-backend/src/main/java/com/github/chistousov/write_and_read_backend/WriteAndReadBackendApplication.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-backend/src/main/java/com/github/chistousov/write_and_read_backend/controllers/CalculateController.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-backend/src/main/java/com/github/chistousov/write_and_read_backend/controllers/GlobalExceptionHandler.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-backend/src/main/java/com/github/chistousov/write_and_read_backend/jacoco_ignore/ExcludeFromJacocoGeneratedReport.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-backend/src/main/java/com/github/chistousov/write_and_read_backend/security/auth/logout/success_handlers/CustomServerLogoutSuccessHandler.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-backend/src/main/java/com/github/chistousov/write_and_read_backend/security/auth/oauth2/handlers/CustomServerAuthenticationFailureHandler.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-backend/src/main/java/com/github/chistousov/write_and_read_backend/security/filters/AuthenticateFrontendWebFilter.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-backend/src/main/java/com/github/chistousov/write_and_read_backend/security/filters/IsAuthenticatedCheckWebFilter.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-backend/src/main/resources/META-INF/additional-spring-configuration-metadata.json create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-backend/src/main/resources/application-prod.yml create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-backend/src/main/resources/application.yml create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-backend/src/main/resources/banner.txt create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-backend/src/test/java/com/github/chistousov/write_and_read_backend/controllers/CalculateControllerTest.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-backend/src/test/resources/ory-hydra-open-api-v3.json create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-backend/src/test/resources/resource-server-open-api-v3.json create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-backend/test_and_report.bash create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/.editorconfig create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/.gitignore create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/angular.json create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/build_image.bash create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/karma.conf.js create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/mock-data.json create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/mock-server.js create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/package.json create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/server.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/add-point/add-point.component.html create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/add-point/add-point.component.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/add-point/add-point.component.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/add-point/add-point.component.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/app.component.html create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/app.component.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/app.component.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/app.component.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/app.config.server.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/app.config.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/app.routes.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/app.service.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/app.service.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/auth.guard.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/auth.guard.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/auth.service.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/auth.service.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/cookie.service.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/cookie.service.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/error.service.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/error.service.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/error/error.component.html create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/error/error.component.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/error/error.component.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/error/error.component.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/generation-cookie-csrf.service.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/generation-cookie-csrf.service.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/layout/layout.component.html create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/layout/layout.component.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/layout/layout.component.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/layout/layout.component.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/models/error-on-page.model.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/models/error-response-code.model.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/not-found/not-found.component.html create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/not-found/not-found.component.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/not-found/not-found.component.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/not-found/not-found.component.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/save-future-redirect.service.spec.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/save-future-redirect.service.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/app/window.service.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/assets/.gitkeep create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/assets/cat_401.png create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/assets/error.jpg create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/assets/logo.png create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/environments/environment.development.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/environments/environment.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/favicon.ico create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOiCnqEu92Fr1Mu51QrEz0dL_nz.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOiCnqEu92Fr1Mu51QrEz4dL_nz.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOiCnqEu92Fr1Mu51QrEzAdLw.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOiCnqEu92Fr1Mu51QrEzQdL_nz.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51S7ACc-CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51S7ACc0CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51S7ACc3CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51S7ACc6CsQ.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TLBCc-CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TLBCc0CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TLBCc3CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TLBCc6CsQ.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TjASc-CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TjASc0CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TjASc3CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TjASc6CsQ.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TzBic-CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TzBic0CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TzBic3CsTKlA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOjCnqEu92Fr1Mu51TzBic6CsQ.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOkCnqEu92Fr1MmgVxFIzIFKw.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOkCnqEu92Fr1MmgVxGIzIFKw.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOkCnqEu92Fr1MmgVxIIzI.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOkCnqEu92Fr1MmgVxMIzIFKw.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOkCnqEu92Fr1Mu51xFIzIFKw.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOkCnqEu92Fr1Mu51xGIzIFKw.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOkCnqEu92Fr1Mu51xIIzI.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOkCnqEu92Fr1Mu51xMIzIFKw.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmEU9fABc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmEU9fBBc4.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmEU9fCRc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmEU9fChc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmSU5fBBc4.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmWUlfBBc4.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmYUtfABc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmYUtfBBc4.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmYUtfCRc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOlCnqEu92Fr1MmYUtfChc4EsA.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOmCnqEu92Fr1Mu4mxK.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOmCnqEu92Fr1Mu72xKOzY.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/Roboto/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/fontawesome-free/fa-brands-400.ttf create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/fontawesome-free/fa-brands-400.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/fontawesome-free/fa-regular-400.ttf create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/fontawesome-free/fa-regular-400.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/fontawesome-free/fa-solid-900.ttf create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/fontawesome-free/fa-solid-900.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/fontawesome-free/fa-v4compatibility.ttf create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/fonts/fontawesome-free/fa-v4compatibility.woff2 create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/index.html create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/main.server.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/main.ts create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/scss/_shame.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/scss/base/_typography.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/scss/vendors/_material_io.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/scss/vendors/fontawesome-free/_animated.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/scss/vendors/fontawesome-free/_bordered-pulled.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/scss/vendors/fontawesome-free/_core.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/scss/vendors/fontawesome-free/_fixed-width.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/scss/vendors/fontawesome-free/_functions.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/scss/vendors/fontawesome-free/_icons.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/scss/vendors/fontawesome-free/_list.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/scss/vendors/fontawesome-free/_mixins.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/scss/vendors/fontawesome-free/_rotated-flipped.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/scss/vendors/fontawesome-free/_screen-reader.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/scss/vendors/fontawesome-free/_shims.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/scss/vendors/fontawesome-free/_sizing.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/scss/vendors/fontawesome-free/_stacked.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/scss/vendors/fontawesome-free/_variables.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/scss/vendors/fontawesome-free/brands.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/scss/vendors/fontawesome-free/fontawesome.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/scss/vendors/fontawesome-free/regular.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/scss/vendors/fontawesome-free/solid.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/scss/vendors/fontawesome-free/v4-shims.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/src/styles.scss create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/test_and_report.bash create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/tsconfig.app.json create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/tsconfig.json create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_client_write_and_read/write-and-read/write-and-read-frontend/tsconfig.spec.json create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/.gitignore create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/ca-certificates/type create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/docker-compose.yaml create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/nginx/confs/default.conf create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/nginx/confs/resource-server.conf.templ create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/nginx/nginx.conf create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/resource-server/.editorconfig create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/resource-server/.gitignore create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/resource-server/build.gradle create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/resource-server/build_image.bash create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/resource-server/gradle/wrapper/gradle-wrapper.jar create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/resource-server/gradle/wrapper/gradle-wrapper.properties create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/resource-server/gradlew create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/resource-server/gradlew.bat create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/resource-server/lombok.config create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/resource-server/settings.gradle create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/resource-server/src/main/java/com/github/chistousov/resource_server/ResourceServerApplication.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/resource-server/src/main/java/com/github/chistousov/resource_server/SpringSecurityConfiguration.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/resource-server/src/main/java/com/github/chistousov/resource_server/controllers/CalculateController.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/resource-server/src/main/java/com/github/chistousov/resource_server/controllers/GlobalExceptionHandler.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/resource-server/src/main/java/com/github/chistousov/resource_server/controllers/StatisticsController.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/resource-server/src/main/java/com/github/chistousov/resource_server/jacoco_ignore/ExcludeFromJacocoGeneratedReport.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/resource-server/src/main/java/com/github/chistousov/resource_server/models/Point.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/resource-server/src/main/java/com/github/chistousov/resource_server/services/PointService.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/resource-server/src/main/resources/application-prod.yml create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/resource-server/src/main/resources/application.yml create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/resource-server/src/main/resources/banner.txt create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/resource-server/src/test/java/com/github/chistousov/resource_server/controllers/CalculateControllerTest.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/resource-server/src/test/java/com/github/chistousov/resource_server/controllers/StatisticsControllerTest.java create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_resource_server/resource-server/test_and_report.bash create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/start.bash create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/stop.bash create mode 100644 ory-hydra-oauth2.0-spring-angular-docker-compose/stop_and_clear.bash diff --git a/README.md b/README.md index 8785473b..3889d8b9 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ If you have any questions or suggestions - [Example with Supabase using Ory Kratos and Ory Oathkeeper](https://github.com/ory/examples/tree/master/kratos-keto-oathkeeper-supabase) - [Example with Supabase using Ory Cloud](https://github.com/ory/examples/tree/master/supabase-ory-cloud) - [Example API Gateway with Kong using Ory Kratos & Ory Oathkeeper](https://github.com/ory/examples/tree/master/kratos-oathkeeper-kong) +- [Example implementation of OAuth 2.0 Authorization Code Flow with PKCE using Ory Hydra(Spring, Angular and Docker Compose)](https://github.com/ory/examples/tree/master/ory-hydra-oauth2.0-spring-angular-docker-compose) ### Configuration Examples diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/.env b/ory-hydra-oauth2.0-spring-angular-docker-compose/.env new file mode 100644 index 00000000..e452dda9 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/.env @@ -0,0 +1,28 @@ +# ------------------!!!EDIT!!!---------------- + +IP_AUTHORIZATION_SERVER=192.168.0.101 +IP_RESOURCE_SERVER=192.168.0.104 +IP_CLIENT_READONLY=192.168.0.102 +IP_CLIENT_WRITE_AND_READ=192.168.0.103 + +DNS_AUTHORIZATION_SERVER=authorization-server.com +DNS_RESOURCE_SERVER=resource-server.com +DNS_CLIENT_READONLY=client-readonly.com +DNS_CLIENT_WRITE_AND_READ=client-write-and-read.com + +USER_AUTHORIZATION_SERVER=someuser +USER_RESOURCE_SERVER=someuser +USER_CLIENT_READONLY=someuser +USER_CLIENT_WRITE_AND_READ=someuser + +USER_DATA_POSTGRESQL_PASSWORD=cklGS7BNMT6Io9Yd8FKzg4ZmWLXjQnA24JbXNHbG + +HYDRA_POSTGRESQL_PASSWORD=7pj3gK8arVwk6A1BbUD2XysfIYmKdEk0DL8BMRNx + +HYDRA_SECRETS_COOKIE=OT9Z8I2NcBp01rP4FwQG7JEt6nuXeJ0BDpf4Bjwc +HYDRA_SECRETS_SYSTEM=cIsKS4VzJCDpXlwm2PNTb7v60GHh1iEYZPiiPpRS + +HYDRA_INTROSPECT_USER=user_introspect +HYDRA_INTROSPECT_PASSWORD=hUq7Mw3fr4lFjnHQtoJucgDdAV58NbAOvuGN2OfB + +# ------------------------------------------ diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/.gitignore b/ory-hydra-oauth2.0-spring-angular-docker-compose/.gitignore new file mode 100644 index 00000000..de90eced --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/.gitignore @@ -0,0 +1,4 @@ +.$ory-hydra-oauth2-example.drawio.bkp +.$ory-hydra-oauth2-example.drawio.dtmp + +ca_* \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/README.md b/ory-hydra-oauth2.0-spring-angular-docker-compose/README.md new file mode 100644 index 00000000..3884434d --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/README.md @@ -0,0 +1,221 @@ +# **ORY Hydra OAuth2 Example** + +[Русский язык](README_RUS.md) + +## Description + +Example implementation of [OAuth 2.0 Authorization Code with PKCE](https://www.ory.sh/docs/oauth2-oidc/authorization-code-flow) using [ORY Hydra](https://www.ory.sh/hydra/). + +Login Flow and Consent Flow are implemented using Spring boot 2(Java 11, WebFlux), Angular 17, PostgreSQL 15. + +Everything has been tested: Karma, JUnit 5, Testcontainers. + +## How to build example Login Flow Wrapper, Consent Flow Wrapper, OAuth 2.0 Client(s), OAuth 2.0 Resource Server + +Let's take Login Flow and Consent Flow Wrapper as an example. + +### Build Frontend + +path: + +```bash +cd ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/ +``` + +If you need to perform testing (Karma), then: + +```bash +cd ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/ && \ +npm i && \ +bash test_and_report.bash +``` + +If you need to find out the code coverage of tests, then you need to open the following through the browser: + +```text +ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/coverage/authorization-frontend/index.html +``` + +To build a docker image, do the following (ATTENTION! You must install pack. The instructions are inside build_image.bash): + +```bash + +# install pack +# https://buildpacks.io/docs/tools/pack/#linux-script-install +# (curl -sSL "https://github.com/buildpacks/pack/releases/download/v0.29.0/pack-v0.29.0-linux.tgz" | sudo tar -C /usr/local/bin/ --no-same-owner -xzv pack) + +cd ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/ && \ +bash build_image.bash +``` + +### Build Backend + +path: + +```bash +cd ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/ +``` + +If you need to perform testing (JUnit 5), then (**ATTENTION!** Since Testcontainers is used for testing, you must have rights to run docker (sudo usermod -aG docker \[user\])): + +```bash +cd ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/ && \ +./gradlew -v && \ +bash test_and_report.bash +``` + +If you need to find out the code coverage of tests (JaCoCo), then you need to open the following in the browser: + +```text +ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/build/reports/jacoco/test/html/index.html +``` + +To build a docker image, do the following: + +```bash +cd ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/ && \ +bash build_image.bash +``` + +### Proxy + +#### Docker (Debian) + +```bash +mkdir -p /etc/systemd/system/docker.service.d + +# set proxy +cat > /etc/systemd/system/docker.service.d/http-proxy.conf <<-EOF +[Service] +Environment="HTTP_PROXY=http://proxyuser:proxypass@192.168.20.4:8822/" +Environment="HTTPS_PROXY=http://proxyuser:proxypass@192.168.20.4:8822/" +Environment="NO_PROXY=localhost,127.0.0.1" +EOF + +# restart docker +sudo systemctl daemon-reload +sudo systemctl restart docker + +# check +systemctl show --property=Environment docker + +``` + +#### APT (Docker image) + +If you need to specify a proxy server (see ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/build_image.bash or ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/build_image.bash), then uncomment HTTP_PROXY (HTTPS_PROXY or/and NO_PROXY) and edit HTTP_PROXY ( HTTPS_PROXY or/and NO_PROXY) + +```bash + #!/bin/bash + +export HTTP_PROXY="http://proxyuser:proxypass@192.168.20.4:8822/" +export HTTPS_PROXY="http://proxyuser:proxypass@192.168.20.4:8822/" +export NO_PROXY="localhost,127.0.0.1" + +REPO_IMAGE="chistousov" +... + +``` + +## Example + +![ory-hydra-oauth2-example](ory-hydra-oauth2-example.png) + +4 Debian: +| Type | DNS, Hostname | IP | +| ------------- | ------------- | ------------- | +| OAuth 2.0 Authorization Server | authorization-server.com | 192.168.0.101 | +| OAuth 2.0 Client (Readonly) | client-readonly.com | 192.168.0.102 | +| OAuth 2.0 Client (Write and read) | client-write-and-read.com | 192.168.0.103 | +| OAuth 2.0 Resource Server | resource-server.com | 192.168.0.104 | + +Requires openssl, jq (apt install jq), htpasswd (apt install apache2-utils), envsubst to run start.bash. + +Required on remote servers: Docker, Docker Compose (V3) + +We organize ssh and coordinate the settings with the .env file +```bash +# ------------------!!!EDIT!!!---------------- + +IP_AUTHORIZATION_SERVER=192.168.0.101 +IP_RESOURCE_SERVER=192.168.0.104 +IP_CLIENT_READONLY=192.168.0.102 +IP_CLIENT_WRITE_AND_READ=192.168.0.103 + +DNS_AUTHORIZATION_SERVER=authorization-server.com +DNS_RESOURCE_SERVER=resource-server.com +DNS_CLIENT_READONLY=client-readonly.com +DNS_CLIENT_WRITE_AND_READ=client-write-and-read.com + +USER_AUTHORIZATION_SERVER=someuser +USER_RESOURCE_SERVER=someuser +USER_CLIENT_READONLY=someuser +USER_CLIENT_WRITE_AND_READ=someuser + +USER_DATA_POSTGRESQL_PASSWORD=cklGS7BNMT6Io9Yd8FKzg4ZmWLXjQnA24JbXNHbG + +HYDRA_POSTGRESQL_PASSWORD=7pj3gK8arVwk6A1BbUD2XysfIYmKdEk0DL8BMRNx + +HYDRA_SECRETS_COOKIE=OT9Z8I2NcBp01rP4FwQG7JEt6nuXeJ0BDpf4Bjwc +HYDRA_SECRETS_SYSTEM=cIsKS4VzJCDpXlwm2PNTb7v60GHh1iEYZPiiPpRS + +HYDRA_INTROSPECT_USER=user_introspect +HYDRA_INTROSPECT_PASSWORD=hUq7Mw3fr4lFjnHQtoJucgDdAV58NbAOvuGN2OfB + +# ------------------------------------------ + +``` + +To find out the IP address you can run ***ip a***. + +**WARNING!** Users USER_AUTHORIZATION_SERVER, USER_RESOURCE_SERVER, USER_CLIENT_READONLY and USER_CLIENT_WRITE_AND_READ must be allowed to run docker compose (V3) (sudo usermod -aG docker \[user\]). + +We run the script to configure four servers: +```bash +bash start.bash +``` + +### Checking + +On the Resource Owner computer, DESCRIBE IP ADDRESSES IN THE FILE /etc/hosts (Linux). + +```bash +# Let's say +#DNS_AUTHORIZATION_SERVER=authorization-server.com +#DNS_RESOURCE_SERVER=resource-server.com +#DNS_CLIENT_READONLY=client-readonly.com +#DNS_CLIENT_WRITE_AND_READ=client-write-and-read.com + +echo '192.168.0.101 authorization-server.com' >> /etc/hosts +echo '192.168.0.102 client-readonly.com' >> /etc/hosts +echo '192.168.0.103 client-write-and-read.com' >> /etc/hosts +echo '192.168.0.104 resource-server.com' >> /etc/hosts +# check +ping authorization-server.com +ping client-readonly.com +ping client-write-and-read.com +ping resource-server.com +``` + +0. Register Resource Owner . +1. Go to . +2. Since the user is not logged in, the user is redirected to (Login Flow, authentication), then to (Consent Flow, authorization). +3. Next, the user is taken back to . +4. To receive data, OAuth 2.0 Client (Readonly) contacts with an access token. + + +### Stop + +Stopping containers that save data (volume). + +```bash +bash stop.bash +``` + +### Stop and clean + +We stop the containers and delete all data (volume). + +```bash +bash stop_and_clean.bash +``` \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/README_RUS.md b/ory-hydra-oauth2.0-spring-angular-docker-compose/README_RUS.md new file mode 100644 index 00000000..15a672a4 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/README_RUS.md @@ -0,0 +1,218 @@ +# **ORY Hydra OAuth2 Example** + +## Описание + +Пример реализации [OAuth 2.0 Authorization Code with PKCE](https://www.ory.sh/docs/oauth2-oidc/authorization-code-flow) с использованием [ORY Hydra](https://www.ory.sh/hydra/). + +Login Flow и Consent Flow реализованы с использованием Spring boot 2(Java 11, WebFlux), Angular 17, PostgreSQL 15. + +Все оттестировано: Karma, JUnit 5, Testcontainers. + +## Как собрать example Login Flow Wrapper, Consent Flow Wrapper, OAuth 2.0 Client(s), OAuth 2.0 Resource Server + +В качестве примера возьмем Login Flow and Consent Flow Wrapper. + +### Build Frontend + +path: + +```bash +cd ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/ +``` + +Если необходимо выполнить тестирование (Karma), то: + +```bash +cd ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/ && \ +npm i && \ +bash test_and_report.bash +``` + +Если необходимо узнать покрытие кода тестами, то необходимо открыть через браузер следующее: + +```text +ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/coverage/authorization-frontend/index.html +``` + +Чтобы собрать docker image выполним следующее (ВНИМАНИЕ! Необходимо установить pack. Инструкция внутри build_image.bash): + +```bash + +# install pack +# https://buildpacks.io/docs/tools/pack/#linux-script-install +# (curl -sSL "https://github.com/buildpacks/pack/releases/download/v0.29.0/pack-v0.29.0-linux.tgz" | sudo tar -C /usr/local/bin/ --no-same-owner -xzv pack) + +cd ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/ && \ +bash build_image.bash +``` + +### Build Backend + +path: + +```bash +cd ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/ +``` + +Если необходимо выполнить тестирование (JUnit 5), то (**ВНИМАНИЕ!** Т.к. для тестирования используется Testcontainers, то необходимы права на запуск docker (sudo usermod -aG docker \[user\])): + +```bash +cd ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/ && \ +./gradlew -v && \ +bash test_and_report.bash +``` + +Если необходимо узнать покрытие кода тестами (JaCoCo), то необходимо открыть через браузер следующее: + +```text +ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/build/reports/jacoco/test/html/index.html +``` + +Чтобы собрать docker image выполним следующее: + +```bash +cd ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/ && \ +bash build_image.bash +``` + +### Proxy + +#### Docker (Debian) + +```bash +mkdir -p /etc/systemd/system/docker.service.d + +# set proxy +cat > /etc/systemd/system/docker.service.d/http-proxy.conf <<-EOF +[Service] +Environment="HTTP_PROXY=http://proxyuser:proxypass@192.168.20.4:8822/" +Environment="HTTPS_PROXY=http://proxyuser:proxypass@192.168.20.4:8822/" +Environment="NO_PROXY=localhost,127.0.0.1" +EOF + +# restart docker +sudo systemctl daemon-reload +sudo systemctl restart docker + +# check +systemctl show --property=Environment docker + +``` + +#### APT (Docker image) + +Если необходимо указать прокси сервер (see ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/build_image.bash or ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/build_image.bash), то раскомментируйте HTTP_PROXY (HTTPS_PROXY or/and NO_PROXY) и отредактируйте HTTP_PROXY (HTTPS_PROXY or/and NO_PROXY) + +```bash + #!/bin/bash + +export HTTP_PROXY="http://proxyuser:proxypass@192.168.20.4:8822/" +export HTTPS_PROXY="http://proxyuser:proxypass@192.168.20.4:8822/" +export NO_PROXY="localhost,127.0.0.1" + +REPO_IMAGE="chistousov" +... + +``` + +## Пример + +![ory-hydra-oauth2-example](ory-hydra-oauth2-example.png) + +4 Debian: +| Type | DNS, Hostname | IP | +| ------------- | ------------- | ------------- | +| OAuth 2.0 Authorization Server | authorization-server.com | 192.168.0.101 | +| OAuth 2.0 Client (Readonly) | client-readonly.com | 192.168.0.102 | +| OAuth 2.0 Client (Write and read) | client-write-and-read.com | 192.168.0.103 | +| OAuth 2.0 Resource Server | resource-server.com | 192.168.0.104 | + +Требуется openssl, jq (apt install jq), htpasswd (apt install apache2-utils), envsubst для выполнения start.bash. + +Требуется на удаленных серверах: Docker, Docker Compose (V3) + +Организовываем ssh и согласуем настройки с .env файлом +```bash +# ------------------!!!EDIT!!!---------------- + +IP_AUTHORIZATION_SERVER=192.168.0.101 +IP_RESOURCE_SERVER=192.168.0.104 +IP_CLIENT_READONLY=192.168.0.102 +IP_CLIENT_WRITE_AND_READ=192.168.0.103 + +DNS_AUTHORIZATION_SERVER=authorization-server.com +DNS_RESOURCE_SERVER=resource-server.com +DNS_CLIENT_READONLY=client-readonly.com +DNS_CLIENT_WRITE_AND_READ=client-write-and-read.com + +USER_AUTHORIZATION_SERVER=someuser +USER_RESOURCE_SERVER=someuser +USER_CLIENT_READONLY=someuser +USER_CLIENT_WRITE_AND_READ=someuser + +USER_DATA_POSTGRESQL_PASSWORD=cklGS7BNMT6Io9Yd8FKzg4ZmWLXjQnA24JbXNHbG + +HYDRA_POSTGRESQL_PASSWORD=7pj3gK8arVwk6A1BbUD2XysfIYmKdEk0DL8BMRNx + +HYDRA_SECRETS_COOKIE=OT9Z8I2NcBp01rP4FwQG7JEt6nuXeJ0BDpf4Bjwc +HYDRA_SECRETS_SYSTEM=cIsKS4VzJCDpXlwm2PNTb7v60GHh1iEYZPiiPpRS + +HYDRA_INTROSPECT_USER=user_introspect +HYDRA_INTROSPECT_PASSWORD=hUq7Mw3fr4lFjnHQtoJucgDdAV58NbAOvuGN2OfB + +# ------------------------------------------ + +``` + +Чтоб узнать ip адрес можно выполнить ***ip a***. + +**ВНИМАНИЕ!** Пользователи USER_AUTHORIZATION_SERVER, USER_RESOURCE_SERVER, USER_CLIENT_READONLY и USER_CLIENT_WRITE_AND_READ должны иметь право запускать docker compose (V3) (sudo usermod -aG docker \[user\]). + +Запускаем скрипт для конфигурирования четырех серверов: +```bash +bash start.bash +``` + +### Проверяем + +На компьютере Resource Owner ОПИСЫВАЕМ IP АДРЕСА В ФАЙЛЕ /etc/hosts (Linux). + +```bash +# Допустим +#DNS_AUTHORIZATION_SERVER=authorization-server.com +#DNS_RESOURCE_SERVER=resource-server.com +#DNS_CLIENT_READONLY=client-readonly.com +#DNS_CLIENT_WRITE_AND_READ=client-write-and-read.com + +echo '192.168.0.101 authorization-server.com' >> /etc/hosts +echo '192.168.0.102 client-readonly.com' >> /etc/hosts +echo '192.168.0.103 client-write-and-read.com' >> /etc/hosts +echo '192.168.0.104 resource-server.com' >> /etc/hosts +# check +ping authorization-server.com +ping client-readonly.com +ping client-write-and-read.com +ping resource-server.com +``` + +0. Регистрируем Resource Owner . +1. Заходим на . +2. Так как пользоавтель не вошел в систему, то пользователя перебрасывает на (Login Flow, аутентификация), потом на (Consent Flow, авторизация). +3. Далее пользователь попадает обратно на . +4. Для получения данных OAuth 2.0 Client (Readonly) обращается на с access token. + +### Stop + +Останавливаем контейнеры с сохранением данных (volume). + +```bash +bash stop.bash +``` + +### Stop and clean + +Останавливаем контейнеры и удаляем все данные(volume). + +```bash +bash stop_and_clean.bash +``` \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory-hydra-oauth2-example.drawio b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory-hydra-oauth2-example.drawio new file mode 100644 index 00000000..f846f654 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory-hydra-oauth2-example.drawio @@ -0,0 +1,474 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory-hydra-oauth2-example.png b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory-hydra-oauth2-example.png new file mode 100644 index 0000000000000000000000000000000000000000..95386a60441dd7fb21c298df765b9eda60afe4c0 GIT binary patch literal 998635 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

1_|lz6zT4e?#{Dr;CY|-oa=nwIoJ887s|f( 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�mdi1oTk)n!x_}T;S-u;eO|<1gI!nl*i|b@JB_Ry7*T41O_oI;Q00JSK zNCIkfv3E;;*PF69+|1mxOJAGTU*Iss+m&A(PhwJ@ZKnXDW@7DaEE=#vBg0dh^j&QZ z|1zj_g8sCd4l3Z{OrP;_`#PN}dY;O76?;lhAKjl0JA(HbyY5pBuCeMpcz z=Eh+YNX@to!BvhooyFIwJHBMI1J)>qSkot(B#vFNPlyn zqlKRLtXfq~J{O_-rSU-=e%dLpv(y!#Nt?;N#Y}Z0V%+@hPO{UK`Gyk{Cb>K40`1WG zQlKd=9J&yJ)lH~yhnaKR{R+H6SHRQuu#Iy7vQYVwuLCcBVKEK<&98pa=A^paoaIJ z%&N;S&CB#{_5s#4y^z9Uh1Xi_yfL=Dv=o`UcMAsQsmle)obqj*Wr;L$+VsK4Gr0b# z_c84kPz66TWb>m!40i)>O01(2HB-pA1NN|17Vj(rQ)q4rAywKHhOj~)mA#VGmBadc zbMwaVM0d*%?}-**Ga5Kw|03B+FvBglXab$#VorkilB@z(6@_8&W*Ct{BHRGmUIsR2k=cRy0@k2p&-6C+M=vJInSxiuO= zDtJCAhW{ni;(S}D(XeWNwlZ3-K$ZR!)iKR5XVubZ3x(cr#q*Gt3o70`S`nHPgZ^~fW2x4I zE{7puLUV6kbzBx@#izt=sp4P;8!3D@4zI4enk(&Jac&#|$l4C|l!<8LRL=y0m@ty0 z>D32PrqHwdiJ7~|mf*@dn{!(Smfn&xPC73@>^fdm8i!uj>oZlXr{;GF^_3!-*3|lV z_QhBEnjNXSe$JzVaghlE2T9fMK)WHW-{;7k(&CKeL0|2$(RDdXiOpkvNC$idFm><_wWizjrr3gg& z_Q3$oFLo0CSlwvYUnPo5Jzs`46CxW+C4(9lfW!J*)2#3}uCx(iEA#OcTQpbws@Xd@ zckUMudRgZ4Z{8j+x;sjIRSy`FW%DVKUFV&`&NEiLFFE!FYc5+{C= zC%j%lNjAFcDPe_k0D5$osmKC^fIhw5@p$v~tI58`3&S~{4$J(L@FZK%Ss2p{Wt|nV z;X&+v3eujXTN$pW!`N)8?iad*5MKXwPNjD!vYBt{X$oT7>U0AL-h{Ip&eW4X1|glE zoX6URZY@zxl7{WaenlUYuy})QnAln@ zcFh5#vVhQyCDIp`jGxr+4u6rpi^le_-o--yp@z}PKKPp6`0qVI1$s_C<9|!m&f`-G zC7a+AQg%!>k>NNDSplkxJqTU;6$9+NJ@|aaexR_Fn&KV5-~s-$igXJ`BK_i<)Rh0m z!(QDWqkC>hN07%T$lyF>&b9(4ksSg)!y?g-_&WeU(50G*loB+twc`{NKVl8g*KH-u z2}7{u#2*n%Pe|7RiE(#(Oy3eFB~-S!<`;hD+X%M2q^fqG5F)N}&VvUJxhRX7i>j^H z>~X8484uk^3H=pyFmC{k^GWi=d+CJ~;!nGeaQdI-J~|{78jxPi*kJfhZG6)t08!=3 z5Xyn8bR62!BGuE z1OH?0&SN?nU*RU;xGbCZy!gidftvx$V!!hZ9VNQDFA_qQEwQVGOeLv(?9p9G=-S8 zG=K8Yo$}l)*0_ka6tzF~xzX`uy>+>6PF*rWwp5W10@$xKPgSeVn<6!pjNbKMw^Do6GyO0(7h1d;kVRbGBRiN`pr^vr^IY5_04wrxjToZ@qS1oY% z#pt%|lwKVNcziWz7Xxt#7HcfTWv_hU5}d((!3Sp4bqFBmiP#L*fsbo<{&9k7sj3{$^G7lkKm@vRPAe=n+wh(BtqQ_-=7GF zZdPrBe3uRWCNQ^EcXD9}AJMYaZD@-D#>@Y_W%mrIQ8=huZV)W-Gr+$qGA-1gA*X4{ zhKTL#0D!6JI%&msfsG%Z4W)c;F?0I)*fz_{RN^p91h>t5Sj4(F*wui_Yb8cgBNFXL z&panNXTUHUJXuKnMD7WUR%z~3rHdavk;fajKc~js^`RTYA%)$d{~joIXbxiIzM`Ej zvtv=qt%0`$SGXZ9Y4lgbv<`674iuGdwr^3)xW`Q)Iq`!&zR_yBMP1lAF@R*Is;u&@ z>7GamD-Q2uvy9w)x5Tfp>}QLyjSkD1;)e}o2IFt-6F{CI7Dq6!akqw+umuzEkpmPX z)nRUU07jhyejsX3yVhnKkb`T{fK5x)k4(KgY)Gv%JV-W^zUa|M#L!JsH&(1K6{D~z zjDbj9I(K479CP|kCY$Tcg?WEH%CfQlw;+PHinkOG;w#y@$1qRSO;;Csjqx0=_cZdO z{z3%uO=#1{9Zn4V&yNLV$+&|I?ys>ZO%ZL-R=K7R7ar@{ILE(O+FmkULU>*|()3;! zSH;{#ZoK}JTwx`+FLO_Iz3sffD#I$Ns_!z@?Gyqng7XiahwY)joOXAu)@3^N%z6q~ zwh0_th#UrW*C-q;#&w-z?mZ3czN-zpC(GcHX_tv#9|PHTmUuY91~f2c2Mh@JE(W)P z4Jo)m8<(Xh>Co#===$zU4!}iure7ikuGoYmfzb0vtSya_cWWa0Z*;#DP5&xT z*BwA+Ok`720?Uemi}=M>xkY%QXE0if^~!XP9d^mv*s>ScX{JSpEjK5 zY+lZw{V?}+t%uO_6adi6OOqye`Tex~V2q|TGcSmP>}Q;kG=z5bCYY`hJb9{$|Rg$?gZ#;Xw8zd4noDo5*%&ckwbt{y1ztf7I3^TrAqY! zJsxZgw=rPXr(cg5dC>>i#w%;-KGCc4kXon8+T5J7-mqxO*wp+_3DX>t+se+;3W-06 zwVtixsP`PCvc|q=xI^vMC1~&7Y#Z1rQ}nC0F=k7RTvtm!F678*fOQ+b#CcNLSy z5CBo{iUB}`v+?04OW$z-*CLMagc52qE$#BtFuc=%)R_9q4Ubf8+*qfvjm;JzL@J zcEx7Fh6=|@bZ_E-GQ*?S1uE4-znq?H3R%TQ&D82~v6;s>>w=W7ede$GW1G2C>P@Qt zr*5ja(SEu}LP(pBv~W!z35ZQ}A^nK2!x8biwn( zx$>Lh#Rn~;7!x57cA{mqcwq<<*3v!y-$9smAb9Wh9X7s4%oyCl8?=rKC1}1+bN*pW zj_JZ-p}Mlft62xXmisdfz`OY(RUB9237qV~-h%q@%AmTW9c%P-(b~hO;agjrQl`%^ z3^C#O0!r9jg(|`~$*M84J>b2B`yE_-Y$@(`3tZ|`KX^6*vn!6i9iAMBuC@#P0<^Pc z&Z}gP<4Ip4qvo!eg)X`8=rD{OMQ529zVUpS7})icjPAi#yxL`DP2I7N`;Kx^E-Nw8 zwG*R-(zd5LB%C_iI+~_t*hI|akU~?f|dVIf-Aq$Fm5|G_WdX(`V?Plc< zE|d6s?L=gVkE5PX)Ma^g0jShWT2bXz6EdT8HKJEoc z!6vhg;}lf0w!OE}p|kr;DjdKW(>WL-^%Ws|JrHa#_U7sG)oOLj@7V+qbgZ5<=}lpp zU(a^YCrwe~vDVRi9BqzAg)y1+Gxz1svYBQB$@%ZjK=!|~lIZ#a7Z6Om3`#7BKB<*S z5VT6Ddf&A3l&RRh31H-^;o|!*TmXXkSM~{JmH=#`H6HV_GnBSox)}JE10bZB(N}k$d?{dY+FApZahw?fK95gDkZX`O@Fv;{AfW64(GXa~ z(zr8@9`=JH-_&0jaQAFXRpuvH9`4NRBcZ7Nr2M7>R|el34@UfQZ0d%G?cxs#b!yfA zQHN_R0j*pc9-Bsrnv~1F$=RyZAC5o3FNLW@QS;+=cy<`AkP}Wmq1`XnN0=CdblkXXlfHa5=5QU;p2gq?gAB+((tKzGwqX3L9D=->Zt(Zu!MJkZxF85Vwme zm3Ap&pSS+d<<55An&1&SGC_yorsHX7!GG2S+rO*#T*_#DlPzrag0l9!A&gU;nL{EMYHHjuL6RxAeb`J7p!izmZf~~I4R@|K>YazX_D8Ui+P`I*@d5A zwHIvFI08-f3#BXz2jH8pILeu=V1)uJ{wRABBS?Y2w;}rzo$-r~$@*K0#uNlv>Haj8 zH!L}rxl2m6yyc1HE$h2rCninRFmfAsCwg6rERC2tJ=v2m-cH@cjM?uG5aO{L!! z^GzN_8$WtL0_QXG+=_+!q_w|`Y?cdpv!At>D(roq)&6l^UtO+%Gp zZ$LSIUc#+P^s{{sy^~6-0+{ED>yRHK z+%V9>;liT4yf3y(o!`_q^ue^4h4|olxONY$n{q-1@i&4%So38q*KPl|{j%$*ggR=vQ?uShxC~XIX?GQivYn-yU)J?TUz2kh3Xr;>m4xDj-y#0D2-~ zaMZD4l7jwq9UY~#WduH|a*BK#yokD+*Wiw(&&2eiCTd?_K6)SzN=H=%;`-%Zr6c(N zyL5#9ol5X9xdqDR!5$$g){Ym{pG4CGf=%V>1&I=uyZ(+(?+F2cw<|2gc12u3l;XOq z)~`jc>)a!hK&Jk8^6CFdytN_+8XPP6)QOd0Ne$T9YokqYa0IKFA^r&nGX@8T8DV0_ zJ0)+?WD&c&|J=|Lz{+ify1iaHF2-wxQe)c|H<>5iU$D{^MRyf{eMB@RhRv}hH6m3(w(mVF|Z9@OGHtwLW%ldS$tD(yGIIZDj;L*#MV5*k;u_y8GL$d^H zLp#H$jTa;`KUQxoo%;J{P{GEWyLg`rYdjI_w{S(-ZuU5~3pxGIqYy$r3a*s=>^^|YZEDtavKt}HBIp=2(f{&mj*dZ~E} zfb5_`RUX55kiGl$+rk^GzrP_nIfhWgg0+n~wwK;< zq5my63-XOIoqpD?s#&P33F7`C2xAV0Q^pfzk);MO;sUPNaT1ahB1_Ye@={Qy)k1Vx ziNX07m<`=J{|%;CSdo5fa|GA5ixwo@v91YA{=6$M5J7{qH=rXDw7<901ext6&AR$m zFF!nCcHUZMHvYI(%Wf*C9nnYAMV6!HXusI{BXABy#~45I@nP-Zg1OkYhyl}SPn%tY zLU!R~DZ$5>uwv}C45-ckzv8ntYJ#qp>gbGWP0nE9~Yk>cvguEN+?>XX2SAA&A^=Up#e@J)} zlwGwyC|TW&=)?kqtl};z)TXLsmV_QwH0t6wdIhw(s?L#c)Jxexi@3%ZZAna!P=9_C zMh8?7k+cDuHol(7+YNg2O*v;NLKegd<%0Zv-f^w4)ZBnMj*A!?5^8>Xxwgxj=*=du!NIIPA{T ztlb6OgP=PPymy#xB7&Kw9VohGES4UC_+zb5L^oi5CJk%k8G>Ns!B4lPZl4JFezG;T)a z`ft8nDmI^EsfvC5Dshv}=LU>k1{Na`F>VGBq^U4z$+^DFA$!w9$B<1$2X*Xp^QEMQMSsy4) zk-AbopO!ueLXJVOAEf8Qb&n^=QkpOhI9@)_)Vv~!f|un7QqU}2wDz+2)F{Jj}mnDX5Y@k z){9tk)^K)%SHqxDiiogoVP2#DJ)0OT7nE5%qS>PdEAw7y<5l_n#1n|P#b z8nD})aHpvy^ogH#@$GAtCj~%yVq+5|>;9!yL zw9?H_rlLdo+){pahkKu%A|d$=osDJ`2#|NbioXDc({ZJ70kDB-vqDLHI~ zx~T8^kN(6)ZiZzj{~KZdvbuH?2z06;w64<0An9(|yT%^ANKMEMVoC-uC14E&cv^H98gu5cb1A{ws!#ONb+z*@#E9WC=?SqLq)X$9X`(M2RlEjbm6I8X^G$p zMY8=o*wpkTORW9t=F;Y#ym#b*{o<~N&SmGOOV+ddm3NG!r0tUkQzcCO35PH+d?`CDv z`}#T%AZ=x~vf23gC-Y;T`0~8>zI|r5nU+B|)}3ju_Ev)t;YmbfG)~y3(P1GoWkf6I zzPr>as9HAyOP2}8QvzM~wi{r^C(GQTretz+O!a-AuB$f89gc<3fbM4Tj8$-@(8S#-jr$y%@P;$?+NFl=D7)JS_DAxf2n8Dh~H(Y-Y*{2wm}*g6Y4KoqeQv>=;#Sk$smav?8GXB_U8egM6(I?96> zT^7ZXIOaW8)baXO%ae`ufgfy9ottuhrV@J$!<$ z>i4Qsopt#eLNP-H9;)f8nPf3dYYu?^Km9qv?)2LdftL(GZ5APZtvXqb*v}a3lgA3( zc1F!R7mRL`8AS~N2X&PMr%X(^ zBb>^PzgEi%zhExeiHnW}02Vry7vY#FhcE3cdd9EVw(AqZR4(r7qt$&}(`&VJs)f8CE9)D-qH-8xeuY7REU!X`}`r6fmv}Ny)15934zuULM?gTXBk6L9yuZ zz~i2m8C)tof+v}_pLN`iYJKSqBjj;HMMe+Go^5B2=eI`Pi8%jqpN!AJHVd8liI#S- z<~!rBuZdlsvdU8jD%JT;`jTP2vLh2+aiPBXb&q`QEY8*WGFOmzZq~aitUvw+GTCn! z=H1+DTePSXvXn!$-Z;TNlrFb#s&|7h_G*7udlG+&*V$JCF+^)FT`BThlmWSv;%~@q z#I-_$=>3W4B8{B;LN>4X_t)DB(N#)>gloQ-{t(Vpwl=D6@9VhaQajSp zqZ}a46(G7txcOj;7KF<^KSRjwXq>H_KpE7Bmtm?!!qb5_ZK^IZdakEY%E4#~hp&!; zt-stpKlMq15H=3ZFwECYpWGFFMG&Zxt{R5dsMTjmD)-J8x`q~&H44nrMx-P(CNQBu za7_mV6Znh}Pi{E()n4tNcvK?6Oo=qqtQ)VUylag@%fBG(q z0msZ}l#?Y+=-Li%-98f;dal&y|ld zUx}*bNMv_$4kSwAcM;k3nB3hE_O#vRjaPZQ)?Sz3a-QB|q&zHTsXw=t*VQ;jJpGdf zVeaCCJA4|RVVWb_9{DQo;_ zqlrp(*UXuvbk(b!?P0Csu;pv=B}4Re!ngvQOw|;^j)GT#E{wu`Z}?9y=nXl%Q67a7 zp|;RIg&N#u7UDL43?~oPtApG0kWR}~e!5e;Tecu+3T`tBtk`uZk87(~m_?;$Ama7z zGkuGd-y{07m6a|x0$r@$s7@E*a&3(DN9bF0eypN1CI*uga!+wSHe=WwA7$ z3*F1N+$u@sk42x)!Cs~bpE_@g*88m8@cl39^HqW@7Gn$Ak$17SYj!}oyK$_>Q&v1O ztz|Z5;dF;qp@~6j2i|9{$NlZQ7JFg>dzR&usYE|C`P%lqKVTYiyuX*Bexu7Nx524_#|wdT<6z4m$%1vE%(}UP3XvRZq40*1P9;4 zdNt=X+9#C*^^Z?73(UU_I*n0re8_=1S}E7CHIh5N&oqFMSaqL zvYTWN*2L3_eDHjdofWm|0|DiMx|c>CTxsl1W%0{0Pkcl!F=XTQET z7k)s)DXb4>@W-|`Ixps_8W?GFMi1|iMxP0mMAe)M^P8y+EF2>4Q$I1!4N-ZDAG{yZ z(*KyXo!ZtIN$knKlj$x--t_7D*;?-;Tb%;yaDMsQ&-)^KB?|5bK53>nM{?t#$n>gb zk1-C${Hm8~PN$1Ezw4a6s$i;282hySl*d`N>!GHMvXto#Ug^ro<1)@aI%ibi7##B3 zQueq-4~j8&?xsf#9N=O-y|%OZCOW}XHRkD(|2>>6AhUX=2qUngF40xrCTWU-g-<~^1>`r#(^EPIs%XM90>NubEar-@+lr*yKneh>V zUK0TlnvPfGoTj}Tl(EIGrm=fEy*`t|o3GrI5=T?5}VvPQ8-Y!`*#%Mp0Y#-?aWU2UfFAFZJ&xRLQjb~0+rG0v#n zNg_^QXJQl939>K9QZmc6fmB}e8QQs@>!n|Ga_i@Vy-6uyxdSn~zC@9rU)Je8dgZ-6 zkou;?m*f5Q86T)FI)O|oY5KU*G2*u5{U^CMV&$%=nSIvDl<^EDS;1;dpe)14^G|Ny-lG3=Vuz_F8C;##0uL6$~=t2ZwJ3^5? z-DLQtE%rK=k}d1=s@d;#i?0};M#Ct-bRT>Skv{}Yttpxf`Y6hGkgttKbf*oKZ5A1I z(5y}gZu5)m?{0nZLyTwimgC;`?w66oK3Ba?esnAh74Sa_hPODse%V(rX+BwDDeq<( z=onJq1?GhW+y@xXF0^!Fm7OrKo?g8M*h?6XU0Q1Vr0s2Iw^0gf%d|HSE$S%h8)Zuvx%To$bw_7i z=2KH-K8OmOgM~9E?UxGsnh$y{LscJHuS$rNNYt%CW*TwgD+~@&Yz!&sk%w01W}+2A z&sd_QT0FyS&Youm$|}y97-$2A2fXmsUXvZQ99<)k-pL)zI(QO;YG0=1cDf?Z(jvw; zQ+{T&A?@j41XbL639QG+C00vSO!}l_@jSye6YAAA<(-aNe%#Fa$)hVKDp$`EvE-RQ zEF|8J%rWg_!&mM$Q6VXF0JiHS(yB%3JCGwVXDjx3viQ!Qe`^xoxHls#^$EcecUPG| zX8K)W|6Uu>L{9yKJJtK+XYRyf3avlg-t8+eR+>PSKl}B#m82iqUrI$Y{U7ifu_3Q2 zLh>rJ6#ns(hMC;K6G6*K@7qb)tFWi0A3h(}gH36E z#HISHTJ{|*?&$ye0SVUCPb2zdu4vX*;m(&2kQ9sHzfG|c#Mlq?4UV}0IQWqtP^H#I zy-VZqNz$Q@T+~NhfXCXw&zRje7vZdFAR_Sg0JdGc#C!p*H&*-rETVI-Hj?v-7S?Ju zPoBnoKhF&{BPTUcrt0^#ID1oGWCc6$mV0+cEhk#W3G|~WOndNBRu?V4KR=75&XuPo zfEb7^?%g`lrrV1u`WXwzRP-vQ1tc)m(zDOBGtk}-k0=Y@A;IjD5+%80-2EZ&H3i?G z^0SvSIUbL7G78)IXL?7>Ntb@LSF}A2yUpyVk}yo-XP@CwU~2ygd-?V$)5t+>hBqHkR%#|?3x}YsK@PTX3})Sx>lPgyKDp?gdUrDZ;^|- z(O9+nw1BhUBkhk6F7b2HwLcb>_Uafjg{SkWU*7J2J(YWT?&pc7b_%vv%7rayuP!Zd z(-hmZ+QC)wqU~3Zlyl4WT*&Q>G{g*5*3SL0=DTHA7pQt(u-Xv~2@Bn6ZM_$aDX)b% z9ia~40R%%GdTj2No-~e z!r%oiCe4C*qCYW1J;v#4mDD_2KH@8w(4lT$5`*vWHPH&L3C@}wXp zCZ?~xWIku0b6Sfx{g`=lDx*uax}dh;Rn)KsDw-&5$u zT7wYo3)T5tpVdVjIkUl9y53R;ostvrJ>IG8z1wDipZshFRq9rK30j$bQ`ADxHlGF} z`>SU)TN^a7$n#ZiF{$Uo8qJE=zC)G)!_E_)joSTZopsZ&3`)kb-l4LiIzC)uT+Gqn z#zJI!nsjfB_?ahzckq9d)^6ME1$bt4-F<$>fK-^Jjoix@rIE)04jLEU;5&mrMzr4W zd=9pkn(hsyc&ia)Pk+2RfzC|??)h2aSmgXbI_=DwX3FXSlKfS&p_g(Edd9aG8qfXrsh~Z~eb8J$wxc1tavqVsR+ZWY0)+9%+fJ^Vg(Nae z&wYn+of5l9fBWE3hQM$@L}~FG@X+B*iY}?B#0NAuLA`VkgvX}+$<1iA{lcrq9A zr>_BA)D<#h+A<$Y_^ji)pX#@cG`?tW->gd2mA6rh;;SJ~zkJxI6P@xBps-!XaVl)L zXja*|Wj6T!m9geKlm46siY1m0>Rhx&CrwWIaJ)}6bp&~(uq=dT!C~4fBgZ{Ofd4s7 zJvW|PJe_!MuOR#$>~oUc`Q?%mr{55iOuoQPr&vh+Ni>T^ltk!+JL=5x&mPn#D~&g& zARE^&nS6G2YaV^NPYn`*3lgUAB5WwxtR1UfR7h^nFUgC!4@W%imRQ`0h4W4g9U6yV z>959~-%G3O^tSgJ{$*ZtV`?~U)?{vDPkmQLJGqk;C4PPXLg%`_8+P*C=5&$E^(vT1&|u2;Qp)up*l-Kl z^GlT&jU}qGUAy$%{-i75eDQlR+&0N;b6w&bAM`f!NB7zU4&DNCI)p(Pq*7|s5JcCR zs>Fal+-@SOSuu+&gaVlxq4}P4B68-_hR^Pm8UdHm8dhL6!a8jk`88KOXy}x4lP|S% zJ{_w@yQ-S;eiGCY7Uz;X+YSzH$>QvDJnp})*~PtIv5r}$W8|!72uYY}Z$?8oKZ+s4 zF-m(0bD-p-_?sP)A08$tnL&1xn>Tyh*R}*b`NrQAn)bcIbhE7(5OC9@%;(4DTuTs& zK^77@Z2mBtw)^CTjqD+;OU@iq2&55h*2_^&Rh;%bBo$6+e}ONUSe%t?=ANt?SiezGPjL^d-9+*6yBPaIR~U9Y-g8$s)Py| zvt^txZ3)8+y)R(&e)N9ZwFF@*33PC7ctjA)G%DBVId}=%MvQ0myek^kzC{$Mo$-H) zCs%c)X)xH(BB-K)YVTXK`guXBT=0Jv7oyCc>bWw0d&K*Df(}Kn%l*jf4^DMO8=jYB z3_8zP?g`Ujz5C(fR433IoKB8z3+{so`$MM3v!}PC(t646Jdr^}n^s3*-CW?-1LvvY zkrOOhMH$VosvApyX5U{XqcZMtjjn!|Up<(}nGzQ=iHX-o;J0v~*O^M3?XB7(0DQMHud4WIqwCI#aW-aRn!7(7c2* z-knN2z3kRPcdFi?T6#N#X!2z19-#Tj8qGD|Yz>ovT zqfSSM3)cMmf?sWYI=?}Gpwkn$@$37*okD>}{Si)#^DcVroAjA{pPy}xt@$QoG)|Vy zG>lwv3>Mnn3CpE&6a0>WMMT%iL;mygz5-9HLr$Gc31k0i)9fENDuIm@N}oB}vGGo+ zPf&dC=R4XD$ddy%~)Lv1yqKd->Kh=l|x29TRCwRLZ0KxOB_u&MG@oi&N~}noVNgQ z#8>Fx>;pWnP9aiBcga*oSefLE70)e;k;k8y-~qAsloyn#jemNsM^dRmEwPj0PMyAe zZ}tnc27-ag8|J1{AgEbFI%M{&{Bo245w5L)BgEibsI4B!7CVdL2+lF-_WyLVJkD?{9dk!i*87Gk<&T`p?l(Wt}d& zi;(+Ii!on{a+ps=NTGF7dK=XURLclsm0V^#CP55Te&%hOHqnn!9(z>xT|D`!UgNq`Vdnr2nD`?_-KX!5?{1RYtdMlZtAV;^ zCzRN@q&`iob>xb!6G38CI`LU_tY^%EASO0yYZ0{Av5`b5b@~7z$Kj7Gtiz$9=2^3_^)}EZ_OAom?duYZrV)5eJB|L?Y!z zpT%Z@kIJHw0iM@vjE}ePnykp4;6CDY?Sf#g^0um=W}f~_+xc!uhNBP8AdDv z`B>sD9-2@IojkXp2TS6B;7El3wUf4EoW@Z>ct)9d)u@nZhjgdo?u}ga!8R*ql>YN3 z#G8f}ZwmDC4|rOa^+J1xJ5{sLB&5l%1zL@JNNeTgB?6l==o{|d_t4z_-DwxQQ0la` zq9OOK%C*XV7}@DZe}xkkxEOycv&*Qh=WR1jUot8Yt##SnuH{+u7jS-UGM1{EshMZh z<>`q;CPjw@qH$jrDA++ zUyt)&S%%isd#X@Xn$FdN`Flp3j0-~wU?-;NQrquw)WVEbCL5Ah0x8DR^vwEmggBNH z(Gs9{#*uFlG$mY8AC)A^d`Go#G)(AzfA_;NxOdg4+|e>_r(#hyI&4dg0D0|0;qcnsLJha~C{wWfjM1hty*GffJ6|FsMq=E5xaY zjkq2-pN(_FOy`mT|f?W#zZbbh$ghupLJ&5|q28@Aa*GE>hTL$ib zq9E(Mg(zew)kyqIM{`3;zUXJ)vA19an(PZn=73qBtxVxs5*U@f;ZBjl|26L!G^OVF z7FA@Rn@FQ1Iu#_%7Fe~vEq#ea{r=Zji%u3&o_C^|&`Z zs{vo`c8ynM0aH-xJBo318P!u{d<-0s@zfsx9SwUW<$$MsS~FK%_ACKoz|xI4Q|qWMx|%WQ)rxu=UF@A3|2dE%{ zVC>XX?_xT-5R;<|T}13;0AN>()7NT67iIU&nnxyoRYfyES|L)n-L86E0qAcc| zh3QvF-gO|MUQrA!8lZfLgCPs$Py3^{zYd#JQ~@67Q zQpku+5QojI(@iJ zOmfEe5?kljMauH_nP8YKy3(X>>z6(QoqmHKnHJFt;l%>-WIVR@y!+8kE0Q*Evh1As z?@^`*Q`V9^?5fr%5f;d~4q8$8$$6tq^R>cweEQL(>(O$nWKae#L~qO#OPFaabY88V zYsBcn0 zdU_sk)x1L#75>q7>e+=Q?i*YZc>sbn;8!nQSaui88?9E02kL)^GNC=}?KA+Ij94bL zD-piF1Z3k$P$(vw9HtCZV!~&(srP|o^XNja1#$Ni4&~g3U(T$41k%I%>VTq@2RM7N zFp}Mob{lxzZMTF6zYdq$w2)?Kii&v>Yc@#KijbI>Z48>qa=vY+1#3~QD(Gy4Y=RXD z_Q@nnol-I;aYEitmIlMPczYDnNi}@bMsZE>aJWz1%-9(ko$Yg(=QU0u<_jWbJA?Cl zax#vbge@5IbDwdE}yaWL(7gcu>i9-a}!n_zA>8cV67JL#Q{>Yb*iQWc~Ec9|8fqjt%>8`=5VrvBcCd1?6t_%0(QohDBJSy)Z0rt9~= zG|lxVZLM}is-2jd8}xg{E^{}I3e;x|kn!Bn(!8`v7p!Rzc+x!<>pa_;Mj3Y8Kiwon zb*N{q@^ag@5Tf;#Fuz97i>oZLgyM%0>-j9gD*5JS$MfXJ@Ku1iI0;{_X|bI?clo^9 zmk{MEVKDT9bcd8R6n%r}q*I+X25`zr$ooz4tB}-X zd%)v≫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]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

CREB4GAsA;pWaNX-sh_(I4 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%0AozULCc7w(P^D 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

HdhXlv7n51 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%0Acx;Cb_~&`_Vj>i*@6T)@9z+iW_|frr|*CbUSaa% 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 '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/gradlew.bat b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/gradlew.bat new file mode 100644 index 00000000..f127cfd4 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/gradlew.bat @@ -0,0 +1,91 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/lombok.config b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/lombok.config new file mode 100644 index 00000000..8f7e8aa1 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/lombok.config @@ -0,0 +1 @@ +lombok.addLombokGeneratedAnnotation = true \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/settings.gradle b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/settings.gradle new file mode 100644 index 00000000..d6018ab6 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'authorization-backend' diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/AuthorizationBackendApplication.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/AuthorizationBackendApplication.java new file mode 100644 index 00000000..089ccf99 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/AuthorizationBackendApplication.java @@ -0,0 +1,16 @@ +package com.github.chistousov.authorization_backend; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +import com.github.chistousov.authorization_backend.jacoco_ignore.ExcludeFromJacocoGeneratedReport; + +@SpringBootApplication +@ExcludeFromJacocoGeneratedReport +public class AuthorizationBackendApplication { + + public static void main(String[] args) { + SpringApplication.run(AuthorizationBackendApplication.class, args); + } + +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/JpaConfiguration.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/JpaConfiguration.java new file mode 100644 index 00000000..0b2bb078 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/JpaConfiguration.java @@ -0,0 +1,77 @@ +package com.github.chistousov.authorization_backend; + +import java.util.concurrent.Executors; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.dao.support.PersistenceExceptionTranslator; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.support.TransactionTemplate; + +import com.github.chistousov.authorization_backend.dao.exception_translators.CustomPersistenceExceptionTranslator; + +import reactor.core.scheduler.Scheduler; +import reactor.core.scheduler.Schedulers; + +@Configuration +public class JpaConfiguration { + + @Value("${spring.datasource.hikari.maximum-pool-size}") + private int connectionPoolSize; + + /** + *

+ * To create a thread pool for an asynchronous call to stored procedures by the + * number of connection pool + *

+ * + *

+ * Для создания пула потоков для асинхроного вызова хранимым процедур по + * количеству пула подключений + *

+ * + * @author Nikita Chistousov (chistousov.nik@yandex.ru) + * @since 11 + */ + @Bean + public Scheduler jdbcScheduler() { + return Schedulers.fromExecutor(Executors.newFixedThreadPool(connectionPoolSize)); + } + + /** + *

+ * To manually create a transaction + *

+ * + *

+ * Для ручного создания транзакции + *

+ * + * @author Nikita Chistousov (chistousov.nik@yandex.ru) + * @since 11 + */ + @Bean + public TransactionTemplate transactionTemplate(PlatformTransactionManager transactionManager) { + return new TransactionTemplate(transactionManager); + } + + /** + *

+ * Maps errors from the database to specific exceptions + *

+ * + *

+ * Отображает ошибки с БД в определенные исключения + *

+ * + * @author Nikita Chistousov (chistousov.nik@yandex.ru) + * @since 11 + */ + + @Bean + public PersistenceExceptionTranslator customPersistenceExceptionTranslator() { + return new CustomPersistenceExceptionTranslator(); + } + +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/SpringSecurityConfiguration.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/SpringSecurityConfiguration.java new file mode 100644 index 00000000..a109effc --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/SpringSecurityConfiguration.java @@ -0,0 +1,30 @@ +package com.github.chistousov.authorization_backend; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity; +import org.springframework.security.config.web.server.ServerHttpSecurity; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.security.web.server.SecurityWebFilterChain; +import org.springframework.security.web.server.csrf.CookieServerCsrfTokenRepository; + +@Configuration +@EnableWebFluxSecurity +public class SpringSecurityConfiguration { + + @Bean + public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) { + http + .authorizeExchange( + ex -> ex.pathMatchers("/registration", "/login", "/consent/**", "/logout", "/actuator/health").permitAll()) + .csrf(csrf -> csrf.csrfTokenRepository(CookieServerCsrfTokenRepository.withHttpOnlyFalse())); + return http.build(); + } + + @Bean + public PasswordEncoder passwordEncoderRegister() { + return new BCryptPasswordEncoder(); + } + +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/controllers/ConsentProviderController.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/controllers/ConsentProviderController.java new file mode 100644 index 00000000..fef9fdc4 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/controllers/ConsentProviderController.java @@ -0,0 +1,182 @@ +package com.github.chistousov.authorization_backend.controllers; + +import java.net.URI; +import java.util.Collections; +import java.util.List; + +import org.springframework.core.env.Environment; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.server.WebSession; + +import com.github.chistousov.authorization_backend.models.AcceptConsentRequestModelBuilder; +import com.github.chistousov.authorization_backend.models.ErrorModel; +import com.github.chistousov.authorization_backend.models.ErrorModelBuilder; +import com.github.chistousov.authorization_backend.models.ResponseWithRedirectModel; +import com.github.chistousov.authorization_backend.services.OryHydraService; +import lombok.extern.slf4j.Slf4j; +import reactor.core.publisher.Mono; + +@RestController +@RequestMapping("consent") +@Slf4j +public class ConsentProviderController { + + private static final String CONSENT_CHALLENGE = "consent_challenge"; + + private OryHydraService oryHydraService; + + private String frontendURI; + + final Mono errorModelRejectConsent = Mono.just( + ErrorModelBuilder + .builder() + .setError("access_denied") + .setErrorDescription( + "The resource owner denied the request. ") + .setErrorHint("") + .setStatusCode(403L) + .build()); + + public ConsentProviderController(Environment env, OryHydraService oryHydraService) { + + this.oryHydraService = oryHydraService; + + this.frontendURI = env.getProperty("application.ory-hydra.frontend.consent-redirectURI"); + } + + @GetMapping + public Mono> getConsent(@RequestParam(CONSENT_CHALLENGE) String consentChallenge, + WebSession webSession) { + + return oryHydraService.consentRequestInfo(consentChallenge) + .flatMap(consentRequestInfo -> { + + // if the user has consented in before + if (consentRequestInfo.getSkip().booleanValue() + || consentRequestInfo.getClient().getSkipConsent().booleanValue()) { + + var acceptConsentRequestModel = Mono.just(AcceptConsentRequestModelBuilder.builder() + .setGrantScope(consentRequestInfo.getRequestedScope()) + .build()); + + return oryHydraService.acceptConsentRequest(consentChallenge, acceptConsentRequestModel) + // redirect browser + .map(responseWithRedirectModel -> ResponseEntity + .status(HttpStatus.FOUND) + .location(URI.create(responseWithRedirectModel.getRedirectTo())) + .build()) + .doOnEach(el -> log.info("Skip consent")); + + } + + // remember consent challenge ID + webSession.getAttributes().put(CONSENT_CHALLENGE, consentChallenge); + + return Mono.just( + ResponseEntity + .status(HttpStatus.FOUND) + .location(URI.create(frontendURI)) + .build()) + .doOnEach(el -> log.info("User gets consent page")); + }); + } + + @GetMapping("subject") + public Mono> getSubject(WebSession webSession) { + final String consentChallenge = webSession.getAttributes().get(CONSENT_CHALLENGE).toString(); + + return oryHydraService.consentRequestInfo(consentChallenge) + .map(consentRequestInfo -> ResponseEntity + .ok(consentRequestInfo.getSubject())) + .doOnTerminate(() -> log.info("get subject")); + } + + @GetMapping("client-name") + public Mono> getClientName(WebSession webSession) { + final String consentChallenge = webSession.getAttributes().get(CONSENT_CHALLENGE).toString(); + + return oryHydraService.consentRequestInfo(consentChallenge) + .map(consentRequestInfo -> { + + // client name or client Id + String clientName = consentRequestInfo.getClient().getClientName(); + + if (clientName == null || clientName.isBlank()) { + clientName = consentRequestInfo.getClient().getClientId(); + } + + return ResponseEntity + .ok(clientName); + }) + .doOnTerminate(() -> log.info("get scopes")); + } + + @GetMapping("scopes") + public Mono>> getScopes(WebSession webSession) { + final String consentChallenge = webSession.getAttributes().get(CONSENT_CHALLENGE).toString(); + + return oryHydraService.consentRequestInfo(consentChallenge) + .map(consentRequestInfo -> ResponseEntity + .ok(consentRequestInfo.getRequestedScope())) + .doOnTerminate(() -> log.info("get scopes")); + } + + @PutMapping + public Mono> postConsentConfirm( + @RequestParam(name = "is-remember", required = false, defaultValue = "false") boolean isRemember, + WebSession webSession) { + + final String consentChallenge = webSession.getAttributes().get(CONSENT_CHALLENGE).toString(); + + return oryHydraService.consentRequestInfo(consentChallenge) + .flatMap(consentRequestInfo -> { + + // requested scopes + final List scopes = Collections.unmodifiableList(consentRequestInfo.getRequestedScope()); + + // accept consent model + var acceptConsentRequestModel = Mono.just( + AcceptConsentRequestModelBuilder.builder() + .setGrantScope(scopes) + .setRemember(isRemember) + .build()); + + return oryHydraService.acceptConsentRequest(consentChallenge, acceptConsentRequestModel) + // redirect browser + .map(responseWithRedirectModel -> { + + webSession.getAttributes().remove(CONSENT_CHALLENGE); + + return ResponseEntity + .status(HttpStatus.CREATED) + .body(responseWithRedirectModel); + }); + + }); + } + + @DeleteMapping("cancel") + public Mono> deleteConsentCancel(WebSession webSession) { + + final String consentChallenge = webSession.getAttributes().get(CONSENT_CHALLENGE).toString(); + + return oryHydraService.rejectConsentRequest(consentChallenge, errorModelRejectConsent) + // redirect browser + .map(responseWithRedirectModel -> { + + webSession.getAttributes().remove(CONSENT_CHALLENGE); + + return ResponseEntity + .status(HttpStatus.CREATED) + .body(responseWithRedirectModel); + }); + + } +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/controllers/GlobalExceptionHandler.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/controllers/GlobalExceptionHandler.java new file mode 100644 index 00000000..e3f76827 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/controllers/GlobalExceptionHandler.java @@ -0,0 +1,108 @@ +package com.github.chistousov.authorization_backend.controllers; + +import java.nio.charset.StandardCharsets; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +import org.springframework.context.support.DefaultMessageSourceResolvable; +import org.springframework.core.io.buffer.DataBuffer; +import org.springframework.dao.DataAccessException; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.http.server.reactive.ServerHttpRequest; +import org.springframework.http.server.reactive.ServerHttpResponse; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.support.WebExchangeBindException; + +import com.github.chistousov.authorization_backend.exceptions.IncorrectPasswordException; +import com.github.chistousov.authorization_backend.exceptions.LoginDoesNotExistException; +import com.github.chistousov.authorization_backend.exceptions.relational_database.LoginOrOrgExistException; +import com.github.chistousov.authorization_backend.jacoco_ignore.ExcludeFromJacocoGeneratedReport; + +import lombok.extern.slf4j.Slf4j; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +@ControllerAdvice +@Slf4j +@ExcludeFromJacocoGeneratedReport +public class GlobalExceptionHandler { + + private static final String TEXT_PLAIN_CHARSET_UTF_8 = "text/plain;charset=utf-8"; + private static final String CONTENT_TYPE = "Content-Type"; + + private static final String ERROR_IN_DATABASE_MESSAGE = "Database error "; + + // invalid model handler + @ExceptionHandler(WebExchangeBindException.class) + public ResponseEntity> handleException(WebExchangeBindException e) { + var errors = e.getBindingResult() + .getAllErrors() + .stream() + .map(DefaultMessageSourceResolvable::getDefaultMessage) + .collect(Collectors.toList()); + return ResponseEntity.badRequest().body(errors); + + } + + @ExceptionHandler(DataAccessException.class) + public Mono dataBaseHandler(ServerHttpRequest req, ServerHttpResponse response, DataAccessException ex) { + + response.getHeaders().set(CONTENT_TYPE, TEXT_PLAIN_CHARSET_UTF_8); + response.setStatusCode(HttpStatus.INTERNAL_SERVER_ERROR); + + byte[] bodyResponse = ERROR_IN_DATABASE_MESSAGE.getBytes(StandardCharsets.UTF_8); + DataBuffer buffer = response.bufferFactory().wrap(bodyResponse); + + return response.writeWith(Flux.just(buffer)) + .doOnEach(el -> log.error(req.getPath().toString() + " ", ex)); + } + + @ExceptionHandler({ LoginDoesNotExistException.class, IncorrectPasswordException.class, + LoginOrOrgExistException.class }) + public Mono anyExceptionHandler(ServerHttpRequest req, ServerHttpResponse response, RuntimeException ex) { + + response.getHeaders().set(CONTENT_TYPE, TEXT_PLAIN_CHARSET_UTF_8); + response.setStatusCode(HttpStatus.BAD_REQUEST); + + Optional errorMesOptional = Optional.ofNullable(ex.getMessage()); + String errorMes = errorMesOptional.orElseGet(() -> ERROR_IN_DATABASE_MESSAGE); + + byte[] bodyResponse = errorMes.getBytes(StandardCharsets.UTF_8); + DataBuffer buffer = response.bufferFactory().wrap(bodyResponse); + + return response.writeWith(Flux.just(buffer)) + .doOnEach(el -> log.error(req.getPath().toString() + " ", ex)); + } + + @ExceptionHandler(IllegalArgumentException.class) + public Mono illegalArgumentPerfom(ServerHttpRequest req, ServerHttpResponse response, + IllegalArgumentException ex) { + + response.getHeaders().set(CONTENT_TYPE, TEXT_PLAIN_CHARSET_UTF_8); + response.setStatusCode(HttpStatus.BAD_REQUEST); + + byte[] bodyResponse = "Request received with incorrect data ".getBytes(StandardCharsets.UTF_8); + DataBuffer buffer = response.bufferFactory().wrap(bodyResponse); + + return response.writeWith(Flux.just(buffer)) + .doOnEach(el -> log.error(req.getPath().toString() + " ", ex)); + + } + + @ExceptionHandler(Exception.class) + public Mono commonHandler(ServerHttpRequest req, ServerHttpResponse response, Exception ex) { + + response.getHeaders().set(CONTENT_TYPE, TEXT_PLAIN_CHARSET_UTF_8); + response.setStatusCode(HttpStatus.INTERNAL_SERVER_ERROR); + + byte[] bodyResponse = "Error in server ".getBytes(StandardCharsets.UTF_8); + DataBuffer buffer = response.bufferFactory().wrap(bodyResponse); + + return response.writeWith(Flux.just(buffer)) + .doOnEach(el -> log.error(req.getPath().toString() + " ", ex)); + } + +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/controllers/LoginProviderController.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/controllers/LoginProviderController.java new file mode 100644 index 00000000..6ca08aa2 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/controllers/LoginProviderController.java @@ -0,0 +1,164 @@ +package com.github.chistousov.authorization_backend.controllers; + +import java.net.URI; + +import org.springframework.core.env.Environment; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.server.WebSession; + +import com.github.chistousov.authorization_backend.models.AcceptLoginRequestModelBuilder; +import com.github.chistousov.authorization_backend.models.ErrorModelBuilder; +import com.github.chistousov.authorization_backend.models.PostLoginModel; +import com.github.chistousov.authorization_backend.models.ResponseWithRedirectModel; +import com.github.chistousov.authorization_backend.services.OryHydraService; +import com.github.chistousov.authorization_backend.services.UserService; + +import lombok.extern.slf4j.Slf4j; +import reactor.core.publisher.Mono; + +@RestController +@RequestMapping("login") +@Slf4j +public class LoginProviderController { + + private static final String NUMBER_OF_LOGIN_ATTEMPTS_ZERO = "Количество попыток входа истекло"; + private static final String NUMBER_OF_LOGIN_ATTEMPTS = "number_of_login_attempts"; + private static final String LOGIN_CHALLENGE = "login_challenge"; + + private UserService userService; + private OryHydraService oryHydraService; + + // number of login attempts + private int numberOfLoginAttempts; + + private String frontendURI; + + public LoginProviderController(Environment env, UserService userService, OryHydraService oryHydraService) { + + this.userService = userService; + this.oryHydraService = oryHydraService; + + this.numberOfLoginAttempts = Integer + .parseUnsignedInt(env.getProperty("application.ory-hydra.number-of-login-attempts", "5")); + + this.frontendURI = env.getProperty("application.ory-hydra.frontend.login-redirectURI"); + } + + @GetMapping + public Mono> getLogin(@RequestParam(LOGIN_CHALLENGE) String loginChallenge, + WebSession webSession) { + + return oryHydraService.loginRequestInfo(loginChallenge) + .flatMap(loginRequestInfo -> { + + // if the user has logged in before + if (loginRequestInfo.getSkip().booleanValue()) { + + // login validation model + var acceptLoginRequestModel = userService + .getUser(loginRequestInfo.getSubject()) + .map( + userModel -> AcceptLoginRequestModelBuilder.builder() + .setSubject(userModel.getLogin()) + .setRemember(true) + // if getIsRemember == true, then remember for a day + .setRememberFor(60L * 60L * 24L) + .build()); + + return oryHydraService.acceptLoginRequest( + loginChallenge, + acceptLoginRequestModel) + // redirect browser + .map(responseWithRedirectModel -> ResponseEntity + .status(HttpStatus.FOUND) + .location(URI.create(responseWithRedirectModel.getRedirectTo())) + .build()) + .doOnEach(el -> log.info("User already logged in")); + } + + // remember login challenge ID + webSession.getAttributes().put(LOGIN_CHALLENGE, loginChallenge); + // set the number of login attempts + webSession.getAttributes().put(NUMBER_OF_LOGIN_ATTEMPTS, String.valueOf(numberOfLoginAttempts)); + + return Mono.just( + ResponseEntity + .status(HttpStatus.FOUND) + .location(URI.create(frontendURI)) + .build()) + .doOnEach(el -> log.info("User gets login page")); + }); + } + + @PostMapping + public Mono> postLogin(@RequestBody PostLoginModel postLoginModel, + WebSession webSession) { + + // get loginChallenge + String loginChallenge = webSession.getRequiredAttribute(LOGIN_CHALLENGE).toString(); + // get the number of attempts + long numberAttempts = Long.parseUnsignedLong(webSession.getRequiredAttribute(NUMBER_OF_LOGIN_ATTEMPTS)); + + if (numberAttempts == 0L) { + var errorModel = Mono.just( + ErrorModelBuilder + .builder() + .setError("request_denied") + .setErrorDebug(NUMBER_OF_LOGIN_ATTEMPTS_ZERO) + .setErrorDescription( + "The number of login attempts has expired! Close the tab and re-login to the app.") + .setErrorHint(NUMBER_OF_LOGIN_ATTEMPTS_ZERO) + .setStatusCode(401L) + .build()); + + return oryHydraService.rejectLoginRequest( + loginChallenge, + errorModel) + // redirect browser + .map(responseWithRedirectModel -> ResponseEntity + .status(HttpStatus.CREATED) + .body(responseWithRedirectModel)) + .doOnEach(el -> log.info(NUMBER_OF_LOGIN_ATTEMPTS_ZERO)); + } + + numberAttempts--; + + webSession.getAttributes().put(NUMBER_OF_LOGIN_ATTEMPTS, String.valueOf(numberAttempts)); + + // Mono to validate user into database by password + return userService + .getUserAndCheck(postLoginModel.getLogin(), postLoginModel.getPassword()) + .flatMap(user -> { + + var acceptLoginRequestModel = Mono.just( + AcceptLoginRequestModelBuilder.builder() + .setSubject(user.getLogin()) + .setRemember(postLoginModel.getIsRemember()) + // if getIsRemember == true, then remember for a day + .setRememberFor(60L * 60L * 24L) + .build()); + + return oryHydraService.acceptLoginRequest(loginChallenge, acceptLoginRequestModel) + // redirect browser + .map(responseWithRedirectModel -> { + + webSession.getAttributes().remove(LOGIN_CHALLENGE); + webSession.getAttributes().remove(NUMBER_OF_LOGIN_ATTEMPTS); + + return ResponseEntity + .status(HttpStatus.CREATED) + .body(responseWithRedirectModel); + }); + }) + .doOnEach(el -> log.info("Login закончился успехом. Переходит на consent.")); + + } + +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/controllers/LogoutProviderController.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/controllers/LogoutProviderController.java new file mode 100644 index 00000000..b9157257 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/controllers/LogoutProviderController.java @@ -0,0 +1,99 @@ +package com.github.chistousov.authorization_backend.controllers; + +import java.net.URI; + +import org.springframework.core.env.Environment; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.server.WebSession; + +import com.github.chistousov.authorization_backend.models.PutLogoutModel; +import com.github.chistousov.authorization_backend.models.ResponseWithRedirectModel; +import com.github.chistousov.authorization_backend.services.OryHydraService; + +import lombok.extern.slf4j.Slf4j; +import reactor.core.publisher.Mono; + +@RestController +@RequestMapping("logout") +@Slf4j +public class LogoutProviderController { + + private static final String LOGOUT_CHALLENGE = "logout_challenge"; + + private OryHydraService oryHydraService; + + private String frontendURI; + private String logoutCancelfrontendURI; + + public LogoutProviderController(Environment env, OryHydraService oryHydraService) { + + this.oryHydraService = oryHydraService; + + this.frontendURI = env.getProperty("application.ory-hydra.frontend.logout-redirectURI"); + this.logoutCancelfrontendURI = env.getProperty("application.ory-hydra.frontend.logout-cancel-redirectURI"); + } + + @GetMapping + public Mono> getLogout(@RequestParam(LOGOUT_CHALLENGE) String logoutChallenge, + WebSession webSession) { + + return oryHydraService.logoutRequestInfo(logoutChallenge) + .doOnNext(logoutRequestInfo -> log.info("Subject comes out: {}", logoutRequestInfo.getSubject())) + .flatMap(logoutRequestInfo -> { + + // remember the exit attempt ID (logoutChallenge challenge) + webSession.getAttributes().put(LOGOUT_CHALLENGE, logoutChallenge); + + return Mono.just( + ResponseEntity + .status(HttpStatus.FOUND) + .location(URI.create(frontendURI)) + .build()) + .doOnTerminate( + () -> log.info("The user receives a logout confirmation page")); + }); + + } + + @PutMapping + public Mono> putLogout(@RequestBody PutLogoutModel putLogoutModel, + WebSession webSession) { + + final String logoutChallenge = webSession.getRequiredAttribute(LOGOUT_CHALLENGE).toString(); + + if (putLogoutModel.getIsConfirmed().booleanValue()) { + return this.oryHydraService.acceptLogoutRequest(logoutChallenge) + .log() + .doOnNext(e -> log.info(e.toString())) + .flatMap( + responseWithRedirectModel -> Mono.just( + ResponseEntity + .status(HttpStatus.CREATED) + .body(responseWithRedirectModel)) + .doOnTerminate(() -> log.info("The user confirmed the withdrawal"))); + } + + return this.oryHydraService.rejectLogoutRequest(logoutChallenge) + .switchIfEmpty( + Mono.just( + ResponseWithRedirectModel.builder() + .redirectTo(logoutCancelfrontendURI) + .build())) + .flatMap( + responseWithRedirectModel -> Mono.just( + ResponseEntity + .status(HttpStatus.CREATED) + .body( + responseWithRedirectModel)) + .doOnTerminate(() -> log.info("The user canceled the withdrawal"))); + + } + +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/controllers/registration/RegistrationController.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/controllers/registration/RegistrationController.java new file mode 100644 index 00000000..d9a27df4 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/controllers/registration/RegistrationController.java @@ -0,0 +1,40 @@ +package com.github.chistousov.authorization_backend.controllers.registration; + +import javax.validation.Valid; + +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import com.github.chistousov.authorization_backend.models.PostRegistrationModel; +import com.github.chistousov.authorization_backend.services.UserService; + +import lombok.extern.slf4j.Slf4j; +import reactor.core.publisher.Mono; + +@Controller +@RequestMapping("/registration") +@Slf4j +public class RegistrationController { + + private UserService userService; + + public RegistrationController(UserService userService) { + this.userService = userService; + } + + @PostMapping + public Mono> postRegistration(@Valid @RequestBody PostRegistrationModel postRegistrationModel) { + + return this.userService + .createUser(postRegistrationModel) + .map(idUser -> ResponseEntity + .status(HttpStatus.CREATED) + .body(idUser)) + .doOnSuccess(el -> log.info("User is created. ")); + } + +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/dao/entities/User.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/dao/entities/User.java new file mode 100644 index 00000000..e040f871 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/dao/entities/User.java @@ -0,0 +1,49 @@ +package com.github.chistousov.authorization_backend.dao.entities; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import javax.persistence.*; + +@NamedStoredProcedureQuery(name = "User.createUser", procedureName = "horns_and_hooves.add_user", parameters = { + @StoredProcedureParameter(name = "login", type = String.class, mode = ParameterMode.IN), + @StoredProcedureParameter(name = "password", type = String.class, mode = ParameterMode.IN), + @StoredProcedureParameter(name = "org_name", type = String.class, mode = ParameterMode.IN), + @StoredProcedureParameter(name = "user_id", type = Long.class, mode = ParameterMode.OUT) +}) + +@NamedStoredProcedureQuery(name = "User.getUserByLogin", procedureName = "horns_and_hooves.get_login", resultClasses = { + User.class }, parameters = { + @StoredProcedureParameter(mode = ParameterMode.REF_CURSOR, type = void.class), + @StoredProcedureParameter(mode = ParameterMode.IN, type = String.class) + }) + +@NoArgsConstructor +@Getter +@Builder +@EqualsAndHashCode(exclude = { "id", "password" }) +@AllArgsConstructor +@Entity +public class User { + + @Id + @Column(name = "id") + private Long id; + + @Column(name = "login") + private String login; + + @Column(name = "password") + private String password; + + public void setPassword(String password) { + this.password = password; + } + + @Column(name = "org_name") + private String orgName; + +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/dao/exception_translators/CustomPersistenceExceptionTranslator.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/dao/exception_translators/CustomPersistenceExceptionTranslator.java new file mode 100644 index 00000000..d3849c94 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/dao/exception_translators/CustomPersistenceExceptionTranslator.java @@ -0,0 +1,35 @@ +package com.github.chistousov.authorization_backend.dao.exception_translators; + +import javax.persistence.PersistenceException; + +import org.hibernate.exception.ConstraintViolationException; +import org.springframework.dao.DataAccessException; +import org.springframework.dao.support.PersistenceExceptionTranslator; +import org.springframework.lang.Nullable; + +import com.github.chistousov.authorization_backend.exceptions.relational_database.LoginOrOrgExistException; +import com.github.chistousov.authorization_backend.jacoco_ignore.ExcludeFromJacocoGeneratedReport; + +@ExcludeFromJacocoGeneratedReport +public class CustomPersistenceExceptionTranslator implements PersistenceExceptionTranslator { + + @Override + @Nullable + public DataAccessException translateExceptionIfPossible(RuntimeException ex) { + if (ex instanceof PersistenceException + && + ((PersistenceException) ex).getCause() instanceof ConstraintViolationException) { + + var persistenceException = (PersistenceException) ex; + var constraintViolationException = (ConstraintViolationException) persistenceException.getCause(); + + String sql = constraintViolationException.getSQL(); + + if (sql.equals("horns_and_hooves.add_user")) { + return new LoginOrOrgExistException("The login or organization exists! "); + } + } + return null; + } + +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/dao/repositories/UserRepository.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/dao/repositories/UserRepository.java new file mode 100644 index 00000000..c8b229b2 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/dao/repositories/UserRepository.java @@ -0,0 +1,19 @@ +package com.github.chistousov.authorization_backend.dao.repositories; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.query.Procedure; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.github.chistousov.authorization_backend.dao.entities.User; + +@Repository +public interface UserRepository extends JpaRepository { + + @Procedure("User.createUser") + Long createUser( + @Param("login") String login, + @Param("password") String password, + @Param("org_name") String orgName); + +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/exceptions/AcceptLoginRequestModelException.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/exceptions/AcceptLoginRequestModelException.java new file mode 100644 index 00000000..07685dcf --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/exceptions/AcceptLoginRequestModelException.java @@ -0,0 +1,8 @@ +package com.github.chistousov.authorization_backend.exceptions; + +public class AcceptLoginRequestModelException extends RuntimeException { + + public AcceptLoginRequestModelException(String message) { + super(message); + } +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/exceptions/IncorrectPasswordException.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/exceptions/IncorrectPasswordException.java new file mode 100644 index 00000000..1eecffe0 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/exceptions/IncorrectPasswordException.java @@ -0,0 +1,8 @@ +package com.github.chistousov.authorization_backend.exceptions; + +public class IncorrectPasswordException extends RuntimeException { + + public IncorrectPasswordException(String message) { + super(message); + } +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/exceptions/LoginDoesNotExistException.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/exceptions/LoginDoesNotExistException.java new file mode 100644 index 00000000..7e3511bc --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/exceptions/LoginDoesNotExistException.java @@ -0,0 +1,8 @@ +package com.github.chistousov.authorization_backend.exceptions; + +public class LoginDoesNotExistException extends RuntimeException { + + public LoginDoesNotExistException(String message) { + super(message); + } +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/exceptions/relational_database/LoginOrOrgExistException.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/exceptions/relational_database/LoginOrOrgExistException.java new file mode 100644 index 00000000..86d8885b --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/exceptions/relational_database/LoginOrOrgExistException.java @@ -0,0 +1,10 @@ +package com.github.chistousov.authorization_backend.exceptions.relational_database; + +import org.springframework.dao.DataAccessException; + +public class LoginOrOrgExistException extends DataAccessException { + + public LoginOrOrgExistException(String message) { + super(message); + } +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/jacoco_ignore/ExcludeFromJacocoGeneratedReport.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/jacoco_ignore/ExcludeFromJacocoGeneratedReport.java new file mode 100644 index 00000000..bc970fe2 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/jacoco_ignore/ExcludeFromJacocoGeneratedReport.java @@ -0,0 +1,21 @@ +package com.github.chistousov.authorization_backend.jacoco_ignore; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.TYPE; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +/** + * Marking with this annotation, we ignore code coverage by JaCoCo tests for a + * class or method. + * Помечая данной аннотацией, мы игнорируем для класса или метода покрытие кода + * тестами JaCoCo + */ +@Documented +@Retention(RUNTIME) +@Target({ TYPE, METHOD }) +public @interface ExcludeFromJacocoGeneratedReport { +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/AcceptConsentRequestModel.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/AcceptConsentRequestModel.java new file mode 100644 index 00000000..0090d007 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/AcceptConsentRequestModel.java @@ -0,0 +1,31 @@ +package com.github.chistousov.authorization_backend.models; + +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +import lombok.Getter; + +@Getter +@JsonIgnoreProperties(ignoreUnknown = true) +public class AcceptConsentRequestModel { + + private Boolean remember; + + private SessionForTokenModel session; + + @JsonProperty("grant_scope") + private List grantScope; + + @JsonProperty("remember_for") + private Long rememberFor; + + public AcceptConsentRequestModel(AcceptConsentRequestModelBuilder builder) { + this.remember = builder.getRemember(); + this.session = builder.getSession(); + this.grantScope = builder.getGrantScope(); + this.rememberFor = builder.getRememberFor(); + } + +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/AcceptConsentRequestModelBuilder.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/AcceptConsentRequestModelBuilder.java new file mode 100644 index 00000000..5bca3146 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/AcceptConsentRequestModelBuilder.java @@ -0,0 +1,48 @@ +package com.github.chistousov.authorization_backend.models; + +import java.util.List; + +import lombok.Getter; + +@Getter +public class AcceptConsentRequestModelBuilder { + private Boolean remember; + private SessionForTokenModel session; + private List grantScope; + private Long rememberFor; + + public static AcceptConsentRequestModelBuilder builder() { + return new AcceptConsentRequestModelBuilder(); + } + + private AcceptConsentRequestModelBuilder() { + } + + public AcceptConsentRequestModelBuilder setRemember(Boolean remember) { + this.remember = remember; + return this; + } + + public AcceptConsentRequestModelBuilder setSession(SessionForTokenModel session) { + this.session = session; + return this; + } + + public AcceptConsentRequestModelBuilder setGrantScope(List grantScope) { + this.grantScope = grantScope; + return this; + } + + public AcceptConsentRequestModelBuilder setRememberFor(Long rememberFor) { + this.rememberFor = rememberFor; + return this; + } + + public Boolean getRemember() { + return remember; + } + + public AcceptConsentRequestModel build() { + return new AcceptConsentRequestModel(this); + } +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/AcceptLoginRequestModel.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/AcceptLoginRequestModel.java new file mode 100644 index 00000000..71c46333 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/AcceptLoginRequestModel.java @@ -0,0 +1,36 @@ +package com.github.chistousov.authorization_backend.models; + +import java.util.Objects; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.github.chistousov.authorization_backend.exceptions.AcceptLoginRequestModelException; + +import lombok.EqualsAndHashCode; +import lombok.Getter; + +@Getter +@EqualsAndHashCode(of = { "subject" }) +@JsonIgnoreProperties(ignoreUnknown = true) +public class AcceptLoginRequestModel { + private String subject; + + private Boolean remember; + + @JsonProperty("remember_for") + private Long rememberFor; + + private Object context; + + public AcceptLoginRequestModel(AcceptLoginRequestModelBuilder acceptLoginRequestModelBuilder) { + if (Objects.isNull(acceptLoginRequestModelBuilder.getSubject()) + || acceptLoginRequestModelBuilder.getSubject().isBlank()) { + throw new AcceptLoginRequestModelException("Subject not set"); + } + + this.subject = acceptLoginRequestModelBuilder.getSubject(); + this.remember = acceptLoginRequestModelBuilder.getRemember(); + this.rememberFor = acceptLoginRequestModelBuilder.getRememberFor(); + this.context = acceptLoginRequestModelBuilder.getContextModel(); + } +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/AcceptLoginRequestModelBuilder.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/AcceptLoginRequestModelBuilder.java new file mode 100644 index 00000000..53e1f044 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/AcceptLoginRequestModelBuilder.java @@ -0,0 +1,44 @@ +package com.github.chistousov.authorization_backend.models; + +import lombok.Getter; + +@Getter +public class AcceptLoginRequestModelBuilder { + + private String subject; + private Boolean remember; + private Long rememberFor; + private Object contextModel; + + public static AcceptLoginRequestModelBuilder builder() { + return new AcceptLoginRequestModelBuilder(); + } + + private AcceptLoginRequestModelBuilder() { + } + + public AcceptLoginRequestModelBuilder setRemember(Boolean remember) { + this.remember = remember; + return this; + } + + public AcceptLoginRequestModelBuilder setRememberFor(Long rememberFor) { + this.rememberFor = rememberFor; + return this; + } + + public AcceptLoginRequestModelBuilder setSubject(String subject) { + this.subject = subject; + return this; + } + + public AcceptLoginRequestModelBuilder setContextModel(Object contextModel) { + this.contextModel = contextModel; + return this; + } + + public AcceptLoginRequestModel build() { + return new AcceptLoginRequestModel(this); + } + +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/Client.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/Client.java new file mode 100644 index 00000000..11334ae6 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/Client.java @@ -0,0 +1,159 @@ +package com.github.chistousov.authorization_backend.models; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.ToString; + +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Getter +@ToString +@JsonIgnoreProperties(ignoreUnknown = true) +public class Client { + + @JsonProperty("allowed_cors_origins") + private List allowedCorsOrigins; + + private List audience; + + @JsonProperty("authorization_code_grant_access_token_lifespan") + private String authorizationCodeGrantAccessTokenLifespan; + + @JsonProperty("authorization_code_grant_id_token_lifespan") + private String authorizationCodeGrantIdTokenLifespan; + + @JsonProperty("authorization_code_grant_refresh_token_lifespan") + private String authorizationCodeGrantRefreshTokenLifespan; + + @JsonProperty("backchannel_logout_session_required") + private boolean backchannelLogoutSessionRequired; + + @JsonProperty("backchannel_logout_uri") + private String backchannelLogoutUri; + + @JsonProperty("client_credentials_grant_access_token_lifespan") + private String clientCredentialsGrantAccessTokenLifespan; + + @JsonProperty("client_id") + private String clientId; + + @JsonProperty("client_name") + private String clientName; + + @JsonProperty("client_secret") + private String clientSecret; + + @JsonProperty("client_secret_expires_at") + private int clientSecretExpiresAt; + + @JsonProperty("client_uri") + private String clientUri; + + private List contacts; + + @JsonProperty("created_at") + private String createdAt; + + @JsonProperty("frontchannel_logout_session_required") + private boolean frontchannelLogoutSessionRequired; + + @JsonProperty("frontchannel_logout_uri") + private String frontchannelLogoutUri; + + @JsonProperty("grant_types") + private List grantTypes; + + @JsonProperty("implicit_grant_access_token_lifespan") + private String implicitGrantAccessTokenLifespan; + + @JsonProperty("implicit_grant_id_token_lifespan") + private String implicitGrantIdTokenLifespan; + + private Object jwks; + + @JsonProperty("jwks_uri") + private String jwksUri; + + @JsonProperty("jwt_bearer_grant_access_token_lifespan") + private String jwtBearerGrantAccessTokenLifespan; + + @JsonProperty("logo_uri") + private String logoUri; + + private Object metadata; + + private String owner; + + @JsonProperty("password_grant_access_token_lifespan") + private String passwordGrantAccessTokenLifespan; + + @JsonProperty("password_grant_refresh_token_lifespan") + private String passwordGrantRefreshTokenLifespan; + + @JsonProperty("policy_uri") + private String policyUri; + + @JsonProperty("post_logout_redirect_uris") + private List postLogoutRedirectUris; + + @JsonProperty("redirect_uris") + private List redirectUris; + + @JsonProperty("refresh_token_grant_access_token_lifespan") + private String refreshTokenGrantAccessTokenLifespan; + + @JsonProperty("refresh_token_grant_id_token_lifespan") + private String refreshTokenGrantIdTokenLifespan; + + @JsonProperty("refresh_token_grant_refresh_token_lifespan") + private String refreshTokenGrantRefreshTokenLifespan; + + @JsonProperty("registration_access_token") + private String registrationAccessToken; + + @JsonProperty("registration_client_uri") + private String registrationClientUri; + + @JsonProperty("request_object_signing_alg") + private String requestObjectSigningAlg; + + @JsonProperty("request_uris") + private List requestUris; + + @JsonProperty("response_types") + private List responseTypes; + + private String scope; + + @JsonProperty("sector_identifier_uri") + private String sectorIdentifierUri; + + @JsonProperty("skip_consent") + private Boolean skipConsent; + + @JsonProperty("subject_type") + private String subjectType; + + @JsonProperty("token_endpoint_auth_method") + private String tokenEndpointAuthMethod; + + @JsonProperty("token_endpoint_auth_signing_alg") + private String tokenEndpointAuthSigningAlg; + + @JsonProperty("tos_uri") + private String tosUri; + + @JsonProperty("updated_at") + private String updatedAt; + + @JsonProperty("userinfo_signed_response_alg") + private String userinfoSignedResponseAlg; +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/ErrorModel.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/ErrorModel.java new file mode 100644 index 00000000..705462a2 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/ErrorModel.java @@ -0,0 +1,33 @@ +package com.github.chistousov.authorization_backend.models; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +import lombok.Getter; + +@Getter +@JsonIgnoreProperties(ignoreUnknown = true) +public class ErrorModel { + private String error; + + @JsonProperty("error_debug") + private String errorDebug; + + @JsonProperty("error_description") + private String errorDescription; + + @JsonProperty("error_hint") + private String errorHint; + + @JsonProperty("status_code") + private Long statusCode; + + public ErrorModel(ErrorModelBuilder builder) { + this.error = builder.getError(); + this.errorDebug = builder.getErrorDebug(); + this.errorDescription = builder.getErrorDescription(); + this.errorHint = builder.getErrorHint(); + this.statusCode = builder.getStatusCode(); + } + +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/ErrorModelBuilder.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/ErrorModelBuilder.java new file mode 100644 index 00000000..be88d6b7 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/ErrorModelBuilder.java @@ -0,0 +1,49 @@ +package com.github.chistousov.authorization_backend.models; + +import lombok.Getter; + +@Getter +public class ErrorModelBuilder { + private String error; + private String errorDebug; + private String errorDescription; + private String errorHint; + private Long statusCode; + + public static ErrorModelBuilder builder() { + return new ErrorModelBuilder(); + } + + private ErrorModelBuilder() { + } + + public ErrorModelBuilder setError(String error) { + this.error = error; + return this; + } + + public ErrorModelBuilder setErrorDebug(String errorDebug) { + this.errorDebug = errorDebug; + return this; + } + + public ErrorModelBuilder setErrorDescription(String errorDescription) { + this.errorDescription = errorDescription; + return this; + } + + public ErrorModelBuilder setErrorHint(String errorHint) { + this.errorHint = errorHint; + return this; + } + + public ErrorModelBuilder setStatusCode(Long statusCode) { + this.statusCode = statusCode; + return this; + } + + public ErrorModel build() { + return new ErrorModel(this); + } + +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/GetConsentResponseModel.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/GetConsentResponseModel.java new file mode 100644 index 00000000..bd4ee359 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/GetConsentResponseModel.java @@ -0,0 +1,53 @@ +package com.github.chistousov.authorization_backend.models; + +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.ToString; + +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Getter +@ToString +@JsonIgnoreProperties(ignoreUnknown = true) +public class GetConsentResponseModel { + + private String acr; + + private List amr; + + private String challenge; + + private Client client; + + private Object context; + + @JsonProperty("login_challenge") + private String loginChallenge; + + @JsonProperty("login_session_id") + private String loginSessionId; + + @JsonProperty("oidc_context") + private Object oidcContext; + + @JsonProperty("request_url") + private String requestUrl; + + @JsonProperty("requested_access_token_audience") + private List requestedAccessTokenAudience; + + @JsonProperty("requested_scope") + private List requestedScope; + + private Boolean skip; + + private String subject; +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/GetLoginResponseModel.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/GetLoginResponseModel.java new file mode 100644 index 00000000..bfd5a99c --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/GetLoginResponseModel.java @@ -0,0 +1,44 @@ +package com.github.chistousov.authorization_backend.models; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.ToString; + +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Getter +@ToString +@JsonIgnoreProperties(ignoreUnknown = true) +public class GetLoginResponseModel { + + private String challenge; + + private Client client; + + @JsonProperty("oidc_context") + private Object oidcContext; + + @JsonProperty("request_url") + private String requestUrl; + + @JsonProperty("requested_access_token_audience") + private List requestedAccessTokenAudience; + + @JsonProperty("requested_scope") + private List requestedScope; + + @JsonProperty("session_id") + private String sessionId; + + private Boolean skip; + + private String subject; +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/GetLogoutResponseModel.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/GetLogoutResponseModel.java new file mode 100644 index 00000000..2516f5a7 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/GetLogoutResponseModel.java @@ -0,0 +1,36 @@ +package com.github.chistousov.authorization_backend.models; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.ToString; + +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Getter +@ToString +@JsonIgnoreProperties(ignoreUnknown = true) +public class GetLogoutResponseModel { + private String challenge; + + private Client client; + + @JsonProperty("oidc_context") + private Object oidcContext; + + @JsonProperty("request_url") + private String requestUrl; + + @JsonProperty("rp_initiated") + private Boolean rpInitiated; + + @JsonProperty("sid") + private String sid; + + private String subject; +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/PostLoginModel.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/PostLoginModel.java new file mode 100644 index 00000000..7828fa60 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/PostLoginModel.java @@ -0,0 +1,27 @@ +package com.github.chistousov.authorization_backend.models; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Pattern; +import javax.validation.constraints.Size; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class PostLoginModel { + + @NotBlank(message = "login is blank") + @Size(min = 4, message = "login must be greater than 4") + private String login; + + @NotBlank(message = "password is blank") + @Pattern(regexp = "^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$", message = "password is invalid") + private String password; + + private Boolean isRemember; +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/PostRegistrationModel.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/PostRegistrationModel.java new file mode 100644 index 00000000..f95ff24e --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/PostRegistrationModel.java @@ -0,0 +1,31 @@ +package com.github.chistousov.authorization_backend.models; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Pattern; +import javax.validation.constraints.Size; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +public class PostRegistrationModel { + + @NotBlank(message = "login is blank") + @Size(min = 4, message = "login must be greater than 4") + private String login; + + @NotBlank(message = "password is blank") + @Pattern(regexp = "^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$", message = "password is invalid") + private String password; + + @NotBlank(message = "orgName is blank") + @Size(min = 4, message = "org name must be greater than 4") + private String orgName; +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/PutLogoutModel.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/PutLogoutModel.java new file mode 100644 index 00000000..3d977a5a --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/PutLogoutModel.java @@ -0,0 +1,14 @@ +package com.github.chistousov.authorization_backend.models; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class PutLogoutModel { + private Boolean isConfirmed; +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/ResponseWithRedirectModel.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/ResponseWithRedirectModel.java new file mode 100644 index 00000000..cadab817 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/ResponseWithRedirectModel.java @@ -0,0 +1,24 @@ +package com.github.chistousov.authorization_backend.models; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.ToString; + +@Getter +@JsonIgnoreProperties(ignoreUnknown = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode +@ToString +public class ResponseWithRedirectModel { + + @JsonProperty("redirect_to") + private String redirectTo; +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/SessionForTokenModel.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/SessionForTokenModel.java new file mode 100644 index 00000000..1e1310ce --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/SessionForTokenModel.java @@ -0,0 +1,23 @@ +package com.github.chistousov.authorization_backend.models; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +import lombok.Getter; + +@Getter +@JsonIgnoreProperties(ignoreUnknown = true) +public class SessionForTokenModel { + + @JsonProperty("access_token") + private Object accessTokenExtension; + + @JsonProperty("id_token") + private Object idTokenExtension; + + public SessionForTokenModel(SessionForTokenModelBuilder builder) { + this.accessTokenExtension = builder.getAccessTokenExtension(); + this.idTokenExtension = builder.getIdTokenExtension(); + } + +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/SessionForTokenModelBuilder.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/SessionForTokenModelBuilder.java new file mode 100644 index 00000000..6a2db84a --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/models/SessionForTokenModelBuilder.java @@ -0,0 +1,33 @@ +package com.github.chistousov.authorization_backend.models; + +import lombok.Getter; + +@Getter +public class SessionForTokenModelBuilder { + + private Object accessTokenExtension; + + private Object idTokenExtension; + + public static SessionForTokenModelBuilder builder() { + return new SessionForTokenModelBuilder(); + } + + private SessionForTokenModelBuilder() { + } + + public SessionForTokenModelBuilder setAccessTokenExtension(Object accessTokenExtension) { + this.accessTokenExtension = accessTokenExtension; + return this; + } + + public SessionForTokenModelBuilder setIdTokenExtension(Object idTokenExtension) { + this.idTokenExtension = idTokenExtension; + return this; + } + + public SessionForTokenModel build() { + return new SessionForTokenModel(this); + } + +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/services/OryHydraService.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/services/OryHydraService.java new file mode 100644 index 00000000..efa944b5 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/services/OryHydraService.java @@ -0,0 +1,308 @@ +package com.github.chistousov.authorization_backend.services; + +import java.util.Objects; + +import org.springframework.core.env.Environment; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Service; +import org.springframework.web.reactive.function.client.WebClient; + +import com.github.chistousov.authorization_backend.models.AcceptConsentRequestModel; +import com.github.chistousov.authorization_backend.models.AcceptLoginRequestModel; +import com.github.chistousov.authorization_backend.models.ErrorModel; +import com.github.chistousov.authorization_backend.models.GetConsentResponseModel; +import com.github.chistousov.authorization_backend.models.GetLoginResponseModel; +import com.github.chistousov.authorization_backend.models.GetLogoutResponseModel; +import com.github.chistousov.authorization_backend.models.ResponseWithRedirectModel; + +import reactor.core.publisher.Mono; + +/** + *

+ * Service for working with admin Ory Hydra + *

+ * + * @author Nikita Chistousov (chistousov.nik@yandex.ru) + * @since 11 + */ +@Service +public class OryHydraService { + private static final String LOGIN_CHALLENGE = "login_challenge"; + private static final String CONSENT_CHALLENGE = "consent_challenge"; + private static final String LOGOUT_CHALLENGE = "logout_challenge"; + + private WebClient oryHydraAdminEndPoint; + + public OryHydraService(Environment env) { + + this.oryHydraAdminEndPoint = WebClient + .builder() + .baseUrl(Objects.requireNonNull(env.getProperty("application.ory-hydra.admin.baseURI"))) + .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) + + // Since Ory Hydra is configured for TLS termination, the header below is + // required + // We pretend that WebClient is a proxy with TLS termination + + // Так как Ory Hydra настроена на TLS termination, то необходим заголовок ниже + // Делаем вид что, WebClient прокси с TLS termination + + .defaultHeader("X-Forwarded-Proto", "https") + .build(); + } + + /** + *

+ * check whether the user was authenticated before and remembered himself in the + * system? + * plus we also get information about the client + *

+ * + *

+ * проверяем аутентифицировался ли раньше пользователь и запомнил себя в + * системе? + * плюс так же получаем информацию о клиенте + *

+ * + * @param loginChallenge - login processing unique ID + * + * @author Nikita Chistousov (chistousov.nik@yandex.ru) + * @since 11 + */ + public Mono loginRequestInfo(String loginChallenge) { + return this.oryHydraAdminEndPoint + .get() + .uri( + uriBuilder -> uriBuilder + .path("oauth2/auth/requests/login") + .queryParam(LOGIN_CHALLENGE, loginChallenge) + .build()) + .retrieve() + .bodyToMono(GetLoginResponseModel.class); + } + + /** + *

+ * accept authentication of a specific user + *

+ * + *

+ * принимаем аутентификацию определенного пользователя + *

+ * + * @param loginChallenge - login processing unique ID + * @param acceptLoginRequestModel - authentication data + * + * @author Nikita Chistousov (chistousov.nik@yandex.ru) + * @since 11 + */ + public Mono acceptLoginRequest(String loginChallenge, + Mono acceptLoginRequestModel) { + return this.oryHydraAdminEndPoint + .put() + .uri( + uriBuilder -> uriBuilder + .path("oauth2/auth/requests/login/accept") + .queryParam(LOGIN_CHALLENGE, loginChallenge) + .build()) + .body(acceptLoginRequestModel, AcceptLoginRequestModel.class) + .retrieve() + .bodyToMono(ResponseWithRedirectModel.class); + } + + /** + *

+ * deny authentication of a specific user + *

+ * + *

+ * отклоняем аутентификацию определенного пользователя + *

+ * + * @param loginChallenge - login processing unique ID + * @param rejectLoginRequestModel - error data + * + * @author Nikita Chistousov (chistousov.nik@yandex.ru) + * @since 11 + */ + public Mono rejectLoginRequest(String loginChallenge, + Mono rejectLoginRequestModel) { + return this.oryHydraAdminEndPoint + .put() + .uri( + uriBuilder -> uriBuilder + .path("oauth2/auth/requests/login/reject") + .queryParam(LOGIN_CHALLENGE, loginChallenge) + .build()) + .body(rejectLoginRequestModel, ErrorModel.class) + .retrieve() + .bodyToMono(ResponseWithRedirectModel.class); + } + + /** + *

+ * check whether the scope check has started in the system? + * plus we also get information about the client + *

+ * + *

+ * проверяем начали ли проверку scope + * в системе? + * плюс так же получаем информацию о клиенте + *

+ * + * @param consentChallenge - scope processing unique identifier + * + * @author Nikita Chistousov (chistousov.nik@yandex.ru) + * @since 11 + */ + public Mono consentRequestInfo(String consentChallenge) { + return this.oryHydraAdminEndPoint + .get() + .uri( + uriBuilder -> uriBuilder + .path("oauth2/auth/requests/consent") + .queryParam(CONSENT_CHALLENGE, consentChallenge) + .build()) + .retrieve() + .bodyToMono(GetConsentResponseModel.class); + } + + /** + *

+ * accept scopes of a specific user + *

+ * + *

+ * принимаем scopes определенного пользователя + *

+ * + * @param consentChallenge - scope processing unique identifier + * @param acceptConsentRequestModel - scope data + * + * @author Nikita Chistousov (chistousov.nik@yandex.ru) + * @since 11 + */ + public Mono acceptConsentRequest(String consentChallenge, + Mono acceptConsentRequestModel) { + return this.oryHydraAdminEndPoint + .put() + .uri( + uriBuilder -> uriBuilder + .path("oauth2/auth/requests/consent/accept") + .queryParam(CONSENT_CHALLENGE, consentChallenge) + .build()) + .body(acceptConsentRequestModel, AcceptConsentRequestModel.class) + .retrieve() + .bodyToMono(ResponseWithRedirectModel.class); + } + + /** + *

+ * deny authentication of a specific user + *

+ * + *

+ * отклоняем аутентификацию определенного пользователя + *

+ * + * @param consentChallenge - login processing unique ID + * @param rejectConsentRequestModel - error data + * + * @author Nikita Chistousov (chistousov.nik@yandex.ru) + * @since 11 + */ + public Mono rejectConsentRequest(String consentChallenge, + Mono rejectConsentRequestModel) { + return this.oryHydraAdminEndPoint + .put() + .uri( + uriBuilder -> uriBuilder + .path("oauth2/auth/requests/consent/reject") + .queryParam(CONSENT_CHALLENGE, consentChallenge) + .build()) + .body(rejectConsentRequestModel, ErrorModel.class) + .retrieve() + .bodyToMono(ResponseWithRedirectModel.class); + } + + /** + *

+ * Getting information by logout + *

+ * + *

+ * Получаем информацию по logout + *

+ * + * @param logoutChallenge - exit handling unique identifier + * + * @author Nikita Chistousov (chistousov.nik@yandex.ru) + * @since 11 + */ + public Mono logoutRequestInfo(String logoutChallenge) { + return this.oryHydraAdminEndPoint + .get() + .uri( + uriBuilder -> uriBuilder + .path("oauth2/auth/requests/logout") + .queryParam(LOGOUT_CHALLENGE, logoutChallenge) + .build()) + .retrieve() + .bodyToMono(GetLogoutResponseModel.class); + } + + /** + *

+ * confirm logout + *

+ * + *

+ * подтверждаем logout + *

+ * + * @param logoutChallenge - logout processing unique identifier + * + * @author Nikita Chistousov (chistousov.nik@yandex.ru) + * @since 11 + */ + public Mono acceptLogoutRequest(String logoutChallenge) { + return this.oryHydraAdminEndPoint + .put() + .uri( + uriBuilder -> uriBuilder + .path("oauth2/auth/requests/logout/accept") + .queryParam(LOGOUT_CHALLENGE, logoutChallenge) + .build()) + .retrieve() + .bodyToMono(ResponseWithRedirectModel.class); + } + + /** + *

+ * deny logout request + *

+ * + *

+ * отклонить запрос на logout + *

+ * + * @param logoutChallenge - exit handling unique identifier + * + * @author Nikita Chistousov (chistousov.nik@yandex.ru) + * @since 11 + */ + public Mono rejectLogoutRequest(String logoutChallenge) { + return this.oryHydraAdminEndPoint + .put() + .uri( + uriBuilder -> uriBuilder + .path("oauth2/auth/requests/logout/reject") + .queryParam(LOGOUT_CHALLENGE, logoutChallenge) + .build()) + .retrieve() + .bodyToMono(ResponseWithRedirectModel.class); + } + +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/services/UserService.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/services/UserService.java new file mode 100644 index 00000000..d082670e --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/java/com/github/chistousov/authorization_backend/services/UserService.java @@ -0,0 +1,184 @@ +package com.github.chistousov.authorization_backend.services; + +import java.util.List; +import java.util.function.Supplier; + +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import com.github.chistousov.authorization_backend.dao.entities.User; +import com.github.chistousov.authorization_backend.dao.repositories.UserRepository; +import com.github.chistousov.authorization_backend.exceptions.IncorrectPasswordException; +import com.github.chistousov.authorization_backend.exceptions.LoginDoesNotExistException; +import com.github.chistousov.authorization_backend.jacoco_ignore.ExcludeFromJacocoGeneratedReport; +import com.github.chistousov.authorization_backend.models.PostRegistrationModel; + +import reactor.core.publisher.Mono; +import reactor.core.scheduler.Scheduler; + +/** + *

+ * Service for working with the user (creation and verification) + *

+ * + * @author Nikita Chistousov (chistousov.nik@yandex.ru) + * @since 11 + */ +@Service +public class UserService { + + private TransactionTemplate transactionTemplate; + private Scheduler jdbcScheduler; + + private UserRepository userRepository; + private PasswordEncoder passwordEncoder; + + @PersistenceContext + private EntityManager em; + + public UserService(UserRepository userRepository, PasswordEncoder passwordEncoderRegister) { + this.userRepository = userRepository; + this.passwordEncoder = passwordEncoderRegister; + } + + @Autowired + public void setTransactionTemplate(TransactionTemplate transactionTemplate) { + this.transactionTemplate = transactionTemplate; + } + + @Autowired + @Qualifier("jdbcScheduler") + public void setJdbcScheduler(Scheduler jdbcScheduler) { + this.jdbcScheduler = jdbcScheduler; + } + + /** + * + *

+ * Create a user + *

+ * + * + * @param postRegistrationModel - registration data + * + * @return user id + * + * @author Nikita Chistousov (chistousov.nik@yandex.ru) + * @since 11 + */ + public Mono createUser(PostRegistrationModel postRegistrationModel) { + + return Mono.fromCallable( + () -> { + + String hashPassword = passwordEncoder.encode(postRegistrationModel.getPassword()); + + return transaction(() -> userRepository.createUser( + postRegistrationModel.getLogin(), + hashPassword, + postRegistrationModel.getOrgName())); + }) + .subscribeOn(jdbcScheduler); + + } + + /** + * + *

+ * Get user by login and check user + *

+ * + * + * @param login - login + * + * @param password - password + * + * @return user data + * + * @author Nikita Chistousov (chistousov.nik@yandex.ru) + * @since 11 + */ + public Mono getUserAndCheck(String login, String password) { + + return Mono.fromCallable(() -> { + + User user = getUserInDB(login); + + if (passwordEncoder.matches(password, user.getPassword())) { + user.setPassword(""); + + return user; + } else { + throw new IncorrectPasswordException("Password is incorrect! "); + } + }) + .subscribeOn(jdbcScheduler); + } + + /** + * + *

+ * Get user by login + *

+ * + * + * @param login - login + * + * @return user data + * + * @author Nikita Chistousov (chistousov.nik@yandex.ru) + * @since 11 + */ + public Mono getUser(String login) { + + return Mono.fromCallable(() -> { + + User user = getUserInDB(login); + user.setPassword(""); + return user; + + }) + .subscribeOn(jdbcScheduler); + } + + private User getUserInDB(String login) { + return transaction(() -> { + + var storedProcedure = em.createNamedStoredProcedureQuery("User.getUserByLogin"); + storedProcedure.setParameter(2, login); + storedProcedure.execute(); + + List users = (List) storedProcedure.getResultList(); + + if (!users.isEmpty()) { + return users.get(0); + } else { + throw new LoginDoesNotExistException("login does not exist"); + } + + }); + } + + /** + *

+ * Additional wrapper for manual transaction to be ignored in JaCoCo + *

+ * + * @param manId - user in the system + * + * @return user information + * + * @author Nikita Chistousov (chistousov.nik@yandex.ru) + * @since 11 + */ + @ExcludeFromJacocoGeneratedReport + private T transaction(Supplier s) { + return transactionTemplate.execute(status -> s.get()); + } +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/resources/META-INF/additional-spring-configuration-metadata.json new file mode 100644 index 00000000..bbfbe773 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -0,0 +1,5 @@ +{"properties": [{ + "name": "application.title", + "type": "java.lang.String", + "description": "A description for 'application.title'" +}]} \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/resources/application-prod.yml b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/resources/application-prod.yml new file mode 100644 index 00000000..840942ed --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/resources/application-prod.yml @@ -0,0 +1,10 @@ +spring: + + datasource: + hikari: + maximum-pool-size: 6 + + +logging: + level: + root: info \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/resources/application.yml b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/resources/application.yml new file mode 100644 index 00000000..0b0e578d --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/resources/application.yml @@ -0,0 +1,37 @@ +application: + title: Registration Example Ory Hydra + +spring: + + output: + ansi: + enabled: always + + datasource: + hikari: + maximum-pool-size: 5 + + jpa: + hibernate: + ddl-auto: none + properties: + hibernate: + show_sql: true + use_sql_comments: true + format_sql: true + proc: + param_null_passing: true + +logging: + level: + root: TRACE + +server: + port: 8090 + reactive: + session: + cookie: + name: SESSION-LOGIN-WRAPPER + forward-headers-strategy: framework + error: + include-stacktrace: never \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/resources/banner.txt b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/resources/banner.txt new file mode 100644 index 00000000..a4e12307 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/main/resources/banner.txt @@ -0,0 +1,7 @@ +${AnsiColor.BRIGHT_CYAN} +,---.| o | +| |---..,---.|--- ,---.. .,---.,---.. , +| | ||`---.| | || |`---.| | \ / +`---'` '``---'`---'`---'`---'`---'`---' `' +${AnsiBackground.WHITE}${AnsiColor.BRIGHT_BLACK}${application.title} +Powered by Spring Boot ${spring-boot.version}${AnsiColor.DEFAULT}${AnsiBackground.DEFAULT} \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/SupportModule.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/SupportModule.java new file mode 100644 index 00000000..be549211 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/SupportModule.java @@ -0,0 +1,94 @@ +package com.github.chistousov.authorization_backend; + +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; +import java.util.AbstractMap.SimpleImmutableEntry; +import java.util.Base64; +import java.util.Random; + +public class SupportModule { + + /** + *

+ * Get query parameters from String + *

+ * + * @param it - String (query parameters) + * + * @return SimpleImmutableEntry - query parameters + * + * @author Nikita Chistousov (chistousov.nik@yandex.ru) + * @since 11 + */ + public static SimpleImmutableEntry splitQueryParameter(String it) { + final int idx = it.indexOf("="); + final String key = idx > 0 ? it.substring(0, idx) : it; + final String value = idx > 0 && it.length() > idx + 1 ? it.substring(idx + 1) : null; + return new SimpleImmutableEntry<>( + URLDecoder.decode(key, StandardCharsets.UTF_8), + URLDecoder.decode(value, StandardCharsets.UTF_8)); + } + + /** + *

+ * Generate random String + *

+ * + * @return random String + * + * @author Nikita Chistousov (chistousov.nik@yandex.ru) + * @since 11 + */ + public static String generateRandomStr() { + int leftLimit = 97; + int rightLimit = 122; + int targetStringLength = 30; + Random random = new Random(); + StringBuilder buffer = new StringBuilder(targetStringLength); + for (int i = 0; i < targetStringLength; i++) { + int randomLimitedInt = leftLimit + (int) (random.nextFloat() * (rightLimit - leftLimit + 1)); + buffer.append((char) randomLimitedInt); + } + return buffer.toString(); + } + + /** + *

+ * Generate random Code Verifier (PKCE) + *

+ * + * @return code verifier + * + * @author Nikita Chistousov (chistousov.nik@yandex.ru) + * @since 11 + */ + public static String generateCodeVerifier() throws UnsupportedEncodingException { + SecureRandom secureRandom = new SecureRandom(); + byte[] codeVerifier = new byte[32]; + secureRandom.nextBytes(codeVerifier); + return Base64.getUrlEncoder().withoutPadding().encodeToString(codeVerifier); + } + + /** + *

+ * Generate random Code Challange (PKCE) + *

+ * + * @return code challange + * + * @author Nikita Chistousov (chistousov.nik@yandex.ru) + * @since 11 + */ + public static String generateCodeChallange(String codeVerifier) + throws UnsupportedEncodingException, NoSuchAlgorithmException { + byte[] bytes = codeVerifier.getBytes("US-ASCII"); + MessageDigest messageDigest = MessageDigest.getInstance("SHA-256"); + messageDigest.update(bytes, 0, bytes.length); + byte[] digest = messageDigest.digest(); + return Base64.getUrlEncoder().withoutPadding().encodeToString(digest); + } +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/TestAccessTokenExtension.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/TestAccessTokenExtension.java new file mode 100644 index 00000000..e48a1b2b --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/TestAccessTokenExtension.java @@ -0,0 +1,23 @@ +package com.github.chistousov.authorization_backend; + +public class TestAccessTokenExtension { + private Long id; + private String name; + + public Long getId() { + return id; + } + + public String getName() { + return name; + } + + public void setId(Long id) { + this.id = id; + } + + public void setName(String name) { + this.name = name; + } + +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/TestIdTokenExtension.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/TestIdTokenExtension.java new file mode 100644 index 00000000..ab07bcef --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/TestIdTokenExtension.java @@ -0,0 +1,14 @@ +package com.github.chistousov.authorization_backend; + +public class TestIdTokenExtension { + private String hash; + + public String getHash() { + return hash; + } + + public void setHash(String hash) { + this.hash = hash; + } + +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/controllers/ConsentProviderControllerTest.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/controllers/ConsentProviderControllerTest.java new file mode 100644 index 00000000..21fbf4d4 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/controllers/ConsentProviderControllerTest.java @@ -0,0 +1,636 @@ +package com.github.chistousov.authorization_backend.controllers; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.BDDMockito.given; +import static org.mockito.BDDMockito.then; +import static org.mockito.Mockito.times; + +import java.io.UnsupportedEncodingException; +import java.time.Duration; +import java.util.List; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.reactive.WebFluxTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; +import org.springframework.context.annotation.PropertySource; +import org.springframework.security.test.web.reactive.server.SecurityMockServerConfigurers; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.springframework.test.web.reactive.server.WebTestClient; + +import com.github.chistousov.authorization_backend.SpringSecurityConfiguration; +import com.github.chistousov.authorization_backend.models.Client; +import com.github.chistousov.authorization_backend.models.GetConsentResponseModel; +import com.github.chistousov.authorization_backend.models.ResponseWithRedirectModel; +import com.github.chistousov.authorization_backend.services.OryHydraService; + +import reactor.core.publisher.Mono; + +@WebFluxTest(controllers = { ConsentProviderController.class }) +@PropertySource("classpath:application.yml") +@Import(SpringSecurityConfiguration.class) +class ConsentProviderControllerTest { + + /*------- const (begin) ------- */ + + private static final String frontendURI = "http://some-frontend"; + + private static final String CONSENT_CHALLENGE = "consent_challenge"; + + private static final String SESSION = "SESSION"; + + /*------- const (end) ------- */ + + @MockBean + private OryHydraService oryHydraService; + + @Autowired + private WebTestClient thisServerWebTestClient; + + // session this app + private String sessionValueThisApp; + + @DynamicPropertySource + public static void settings(DynamicPropertyRegistry registry) + throws UnsupportedEncodingException { + + registry.add("application.ory-hydra.frontend.consent-redirectURI", () -> frontendURI); + + } + + @BeforeEach + void setUp() { + thisServerWebTestClient = thisServerWebTestClient.mutate() + .responseTimeout(Duration.ofMinutes(5)) + .build(); + sessionValueThisApp = null; + } + + @Test + @DisplayName("full consent flow") + void fullConsentFlow() { + + // given (instead of when) + + final String consentChallenge = "some_consent_challenge"; + + final String clientId = "some_client_id"; + + final List scopes = List.of("read", "write"); + + final String redirectTo = "http://some-red"; + + final String subject = "some subject"; + + final GetConsentResponseModel getConsentResponseModel = GetConsentResponseModel + .builder() + .subject(subject) + .skip(false) + .requestedScope(scopes) + .client( + Client + .builder() + .skipConsent(false) + .clientId(clientId) + .build()) + .build(); + + final ResponseWithRedirectModel responseWithRedirectModel = ResponseWithRedirectModel.builder() + .redirectTo(redirectTo) + .build(); + + given(oryHydraService.consentRequestInfo(consentChallenge)).willReturn(Mono.just(getConsentResponseModel)); + + given(oryHydraService.acceptConsentRequest(eq(consentChallenge), any())) + .willReturn(Mono.just(responseWithRedirectModel)); + + // when + + // get consent + thisServerWebTestClient + .get() + .uri( + uriBuilder -> uriBuilder + .path("/consent") + .queryParam(CONSENT_CHALLENGE, consentChallenge) + .build()) + .exchange() + .expectStatus() + .isFound() + .expectHeader() + .exists("Location") + .expectHeader() + .valueMatches("Location", frontendURI) + .expectCookie() + .exists(SESSION) + .expectCookie() + .value(SESSION, str -> sessionValueThisApp = str); + + // get client name + thisServerWebTestClient + .get() + .uri( + uriBuilder -> uriBuilder + .path("/consent/client-name") + .build()) + .cookie(SESSION, sessionValueThisApp) + .exchange() + .expectStatus() + .isOk() + .expectBody(String.class) + .isEqualTo(clientId); + + // get subject + thisServerWebTestClient + .get() + .uri( + uriBuilder -> uriBuilder + .path("/consent/subject") + .build()) + .cookie(SESSION, sessionValueThisApp) + .exchange() + .expectStatus() + .isOk() + .expectBody(String.class) + .isEqualTo(subject); + + // get scope + thisServerWebTestClient + .get() + .uri( + uriBuilder -> uriBuilder + .path("/consent/scopes") + .build()) + .cookie(SESSION, sessionValueThisApp) + .exchange() + .expectStatus() + .isOk() + .expectBody() + .jsonPath("$").isNotEmpty() + .jsonPath("$").isArray() + .jsonPath("$.length()").isEqualTo(2) + .jsonPath("$[0]").isEqualTo(scopes.get(0)) + .jsonPath("$[1]").isEqualTo(scopes.get(1)); + + // post consent + thisServerWebTestClient + .mutateWith(SecurityMockServerConfigurers.csrf()) + .put() + .uri( + uriBuilder -> uriBuilder + .path("/consent") + .queryParam("is-remember", true) + .build()) + .cookie(SESSION, sessionValueThisApp) + .exchange() + .expectStatus() + .isCreated() + .expectBody() + .jsonPath("$").isNotEmpty() + .jsonPath("$").isMap() + .jsonPath("$.length()").isEqualTo(1) + .jsonPath("$.redirect_to").isNotEmpty() + .jsonPath("$.redirect_to").isEqualTo(responseWithRedirectModel.getRedirectTo()); + + // then (instead of verify) + then(oryHydraService) + .should(times(5)) + .consentRequestInfo(consentChallenge); + + then(oryHydraService) + .should() + .acceptConsentRequest(eq(consentChallenge), any()); + + } + + @Test + @DisplayName("reconsent1") + void reauthentication() { + + // given (instead of when) + + final String consentChallenge = "some_consent_challenge"; + + final List scopes = List.of("read", "write"); + + final String redirectTo = "http://some-red"; + + final GetConsentResponseModel getConsentResponseModel = GetConsentResponseModel + .builder() + .skip(true) + .requestedScope(scopes) + .build(); + + final ResponseWithRedirectModel responseWithRedirectModel = ResponseWithRedirectModel.builder() + .redirectTo(redirectTo) + .build(); + + given(oryHydraService.consentRequestInfo(consentChallenge)).willReturn(Mono.just(getConsentResponseModel)); + + given(oryHydraService.acceptConsentRequest(eq(consentChallenge), any())) + .willReturn(Mono.just(responseWithRedirectModel)); + + // when + + // get consent + thisServerWebTestClient + .get() + .uri( + uriBuilder -> uriBuilder + .path("/consent") + .queryParam(CONSENT_CHALLENGE, consentChallenge) + .build()) + .exchange() + .expectStatus() + .isFound() + .expectHeader() + .exists("Location") + .expectHeader() + .valueMatches("Location", responseWithRedirectModel.getRedirectTo()); + + // then (instead of verify) + then(oryHydraService) + .should() + .consentRequestInfo(consentChallenge); + + then(oryHydraService) + .should() + .acceptConsentRequest(eq(consentChallenge), any()); + + } + + @Test + @DisplayName("reconsent2") + void reauthentication2() { + + // given (instead of when) + + final String consentChallenge = "some_consent_challenge"; + + final List scopes = List.of("read", "write"); + + final String redirectTo = "http://some-red"; + + final GetConsentResponseModel getConsentResponseModel = GetConsentResponseModel + .builder() + .skip(false) + .requestedScope(scopes) + .client( + Client + .builder() + .skipConsent(true) + .build()) + .build(); + + final ResponseWithRedirectModel responseWithRedirectModel = ResponseWithRedirectModel.builder() + .redirectTo(redirectTo) + .build(); + + given(oryHydraService.consentRequestInfo(consentChallenge)).willReturn(Mono.just(getConsentResponseModel)); + + given(oryHydraService.acceptConsentRequest(eq(consentChallenge), any())) + .willReturn(Mono.just(responseWithRedirectModel)); + + // when + + // get consent + thisServerWebTestClient + .get() + .uri( + uriBuilder -> uriBuilder + .path("/consent") + .queryParam(CONSENT_CHALLENGE, consentChallenge) + .build()) + .exchange() + .expectStatus() + .isFound() + .expectHeader() + .exists("Location") + .expectHeader() + .valueMatches("Location", responseWithRedirectModel.getRedirectTo()); + + // then (instead of verify) + then(oryHydraService) + .should() + .consentRequestInfo(consentChallenge); + + then(oryHydraService) + .should() + .acceptConsentRequest(eq(consentChallenge), any()); + + } + + @Test + @DisplayName("client name 1 (clientName isBlack)") + void clientName1() { + + // given (instead of when) + + final String consentChallenge = "some_consent_challenge"; + + final String clientId = "some_client_id"; + + final List scopes = List.of("read", "write"); + + final String redirectTo = "http://some-red"; + + final GetConsentResponseModel getConsentResponseModel = GetConsentResponseModel + .builder() + .skip(false) + .requestedScope(scopes) + .client( + Client + .builder() + .skipConsent(false) + .clientName("\t") + .clientId(clientId) + .build()) + .build(); + + final ResponseWithRedirectModel responseWithRedirectModel = ResponseWithRedirectModel.builder() + .redirectTo(redirectTo) + .build(); + + given(oryHydraService.consentRequestInfo(consentChallenge)).willReturn(Mono.just(getConsentResponseModel)); + + given(oryHydraService.acceptConsentRequest(eq(consentChallenge), any())) + .willReturn(Mono.just(responseWithRedirectModel)); + + // when + + // get consent + thisServerWebTestClient + .get() + .uri( + uriBuilder -> uriBuilder + .path("/consent") + .queryParam(CONSENT_CHALLENGE, consentChallenge) + .build()) + .exchange() + .expectStatus() + .isFound() + .expectHeader() + .exists("Location") + .expectHeader() + .valueMatches("Location", frontendURI) + .expectCookie() + .exists(SESSION) + .expectCookie() + .value(SESSION, str -> sessionValueThisApp = str); + + // get client name + thisServerWebTestClient + .get() + .uri( + uriBuilder -> uriBuilder + .path("/consent/client-name") + .build()) + .cookie(SESSION, sessionValueThisApp) + .exchange() + .expectStatus() + .isOk() + .expectBody(String.class) + .isEqualTo(clientId); + + } + + @Test + @DisplayName("client name 2 (clientName == null)") + void clientName2() { + + // given (instead of when) + + final String consentChallenge = "some_consent_challenge"; + + final String clientId = "some_client_id"; + + final List scopes = List.of("read", "write"); + + final String redirectTo = "http://some-red"; + + final GetConsentResponseModel getConsentResponseModel = GetConsentResponseModel + .builder() + .skip(false) + .requestedScope(scopes) + .client( + Client + .builder() + .skipConsent(false) + .clientName(null) + .clientId(clientId) + .build()) + .build(); + + final ResponseWithRedirectModel responseWithRedirectModel = ResponseWithRedirectModel.builder() + .redirectTo(redirectTo) + .build(); + + given(oryHydraService.consentRequestInfo(consentChallenge)).willReturn(Mono.just(getConsentResponseModel)); + + given(oryHydraService.acceptConsentRequest(eq(consentChallenge), any())) + .willReturn(Mono.just(responseWithRedirectModel)); + + // when + + // get consent + thisServerWebTestClient + .get() + .uri( + uriBuilder -> uriBuilder + .path("/consent") + .queryParam(CONSENT_CHALLENGE, consentChallenge) + .build()) + .exchange() + .expectStatus() + .isFound() + .expectHeader() + .exists("Location") + .expectHeader() + .valueMatches("Location", frontendURI) + .expectCookie() + .exists(SESSION) + .expectCookie() + .value(SESSION, str -> sessionValueThisApp = str); + + // get client name + thisServerWebTestClient + .get() + .uri( + uriBuilder -> uriBuilder + .path("/consent/client-name") + .build()) + .cookie(SESSION, sessionValueThisApp) + .exchange() + .expectStatus() + .isOk() + .expectBody(String.class) + .isEqualTo(clientId); + + } + + @Test + @DisplayName("client name 3 (clientName != null)") + void clientName3() { + + // given (instead of when) + + final String consentChallenge = "some_consent_challenge"; + + final String clientName = "some_client_name"; + + final List scopes = List.of("read", "write"); + + final String redirectTo = "http://some-red"; + + final GetConsentResponseModel getConsentResponseModel = GetConsentResponseModel + .builder() + .skip(false) + .requestedScope(scopes) + .client( + Client + .builder() + .skipConsent(false) + .clientName(clientName) + .build()) + .build(); + + final ResponseWithRedirectModel responseWithRedirectModel = ResponseWithRedirectModel.builder() + .redirectTo(redirectTo) + .build(); + + given(oryHydraService.consentRequestInfo(consentChallenge)).willReturn(Mono.just(getConsentResponseModel)); + + given(oryHydraService.acceptConsentRequest(eq(consentChallenge), any())) + .willReturn(Mono.just(responseWithRedirectModel)); + + // when + + // get consent + thisServerWebTestClient + .get() + .uri( + uriBuilder -> uriBuilder + .path("/consent") + .queryParam(CONSENT_CHALLENGE, consentChallenge) + .build()) + .exchange() + .expectStatus() + .isFound() + .expectHeader() + .exists("Location") + .expectHeader() + .valueMatches("Location", frontendURI) + .expectCookie() + .exists(SESSION) + .expectCookie() + .value(SESSION, str -> sessionValueThisApp = str); + + // get client name + thisServerWebTestClient + .get() + .uri( + uriBuilder -> uriBuilder + .path("/consent/client-name") + .build()) + .cookie(SESSION, sessionValueThisApp) + .exchange() + .expectStatus() + .isOk() + .expectBody(String.class) + .isEqualTo(clientName); + + } + + @Test + @DisplayName("full consent flow (cancel)") + void cancelFlow() { + + // given (instead of when) + + final String consentChallenge = "some_consent_challenge"; + + final String clientId = "some_client_id"; + + final List scopes = List.of("read", "write"); + + final String redirectTo = "http://some-red"; + + final GetConsentResponseModel getConsentResponseModel = GetConsentResponseModel + .builder() + .skip(false) + .requestedScope(scopes) + .client( + Client + .builder() + .skipConsent(false) + .clientId(clientId) + .build()) + .build(); + + final ResponseWithRedirectModel responseWithRedirectModel = ResponseWithRedirectModel.builder() + .redirectTo(redirectTo) + .build(); + + given(oryHydraService.consentRequestInfo(consentChallenge)).willReturn(Mono.just(getConsentResponseModel)); + + given(oryHydraService.rejectConsentRequest(eq(consentChallenge), any())) + .willReturn(Mono.just(responseWithRedirectModel)); + + // when + + // get consent + thisServerWebTestClient + .get() + .uri( + uriBuilder -> uriBuilder + .path("/consent") + .queryParam(CONSENT_CHALLENGE, consentChallenge) + .build()) + .exchange() + .expectStatus() + .isFound() + .expectHeader() + .exists("Location") + .expectHeader() + .valueMatches("Location", frontendURI) + .expectCookie() + .exists(SESSION) + .expectCookie() + .value(SESSION, str -> sessionValueThisApp = str); + + // post consent + thisServerWebTestClient + .mutateWith(SecurityMockServerConfigurers.csrf()) + .delete() + .uri( + uriBuilder -> uriBuilder + .path("/consent/cancel") + .build()) + .cookie(SESSION, sessionValueThisApp) + .exchange() + .expectStatus() + .isCreated() + .expectBody() + .jsonPath("$").isNotEmpty() + .jsonPath("$").isMap() + .jsonPath("$.length()").isEqualTo(1) + .jsonPath("$.redirect_to").isNotEmpty() + .jsonPath("$.redirect_to").isEqualTo(responseWithRedirectModel.getRedirectTo()); + + // then (instead of verify) + then(oryHydraService) + .should() + .consentRequestInfo(consentChallenge); + + then(oryHydraService) + .should() + .rejectConsentRequest(eq(consentChallenge), any()); + + } + +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/controllers/LoginProviderControllerTest.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/controllers/LoginProviderControllerTest.java new file mode 100644 index 00000000..ad0800ec --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/controllers/LoginProviderControllerTest.java @@ -0,0 +1,389 @@ +package com.github.chistousov.authorization_backend.controllers; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.BDDMockito.given; +import static org.mockito.BDDMockito.then; + +import java.io.UnsupportedEncodingException; +import java.time.Duration; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.reactive.WebFluxTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; +import org.springframework.context.annotation.PropertySource; +import org.springframework.security.test.web.reactive.server.SecurityMockServerConfigurers; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.springframework.test.web.reactive.server.WebTestClient; +import com.github.chistousov.authorization_backend.SpringSecurityConfiguration; +import com.github.chistousov.authorization_backend.dao.entities.User; +import com.github.chistousov.authorization_backend.exceptions.IncorrectPasswordException; +import com.github.chistousov.authorization_backend.models.GetLoginResponseModel; +import com.github.chistousov.authorization_backend.models.PostLoginModel; +import com.github.chistousov.authorization_backend.models.ResponseWithRedirectModel; +import com.github.chistousov.authorization_backend.services.OryHydraService; +import com.github.chistousov.authorization_backend.services.UserService; + +import reactor.core.publisher.Mono; + +@WebFluxTest(controllers = { LoginProviderController.class }) +@PropertySource("classpath:application.yml") +@Import(SpringSecurityConfiguration.class) +public class LoginProviderControllerTest { + + /*------- const (begin) ------- */ + + private static final String frontendURI = "http://some-frontend"; + + private static final int numberOfLoginAttempts = 3; + + private static final String LOGIN_CHALLENGE = "login_challenge"; + + private static final String SESSION = "SESSION"; + + /*------- const (end) ------- */ + + @MockBean + private UserService userService; + @MockBean + private OryHydraService oryHydraService; + + @Autowired + private WebTestClient thisServerWebTestClient; + + // session this app + private String sessionValueThisApp; + + @DynamicPropertySource + public static void settings(DynamicPropertyRegistry registry) + throws UnsupportedEncodingException { + + registry.add("application.ory-hydra.frontend.login-redirectURI", () -> frontendURI); + + registry.add("application.ory-hydra.number-of-login-attempts", () -> numberOfLoginAttempts); + + } + + @BeforeEach + void setUp() { + thisServerWebTestClient = thisServerWebTestClient.mutate() + .responseTimeout(Duration.ofMinutes(5)) + .build(); + sessionValueThisApp = null; + } + + @Test + @DisplayName("full login flow") + void fullLoginFlow() { + + // given (instead of when) + + final String loginChallenge = "some_login_challenge"; + + final String login = "some_login"; + final String password = "some_super_pass"; + final boolean isRemember = true; + + final String redirectTo = "http://some-red"; + + final GetLoginResponseModel getLoginResponseModel = GetLoginResponseModel + .builder() + .skip(false) + .build(); + + final PostLoginModel postLoginModel = PostLoginModel.builder() + .login(login) + .password(password) + .isRemember(isRemember) + .build(); + + final User user = User.builder() + .login(login) + .build(); + + final ResponseWithRedirectModel responseWithRedirectModel = ResponseWithRedirectModel.builder() + .redirectTo(redirectTo) + .build(); + + given(oryHydraService.loginRequestInfo(loginChallenge)).willReturn(Mono.just(getLoginResponseModel)); + + given(userService.getUserAndCheck(login, password)).willReturn(Mono.just(user)); + + given(oryHydraService.acceptLoginRequest(eq(loginChallenge), any())) + .willReturn(Mono.just(responseWithRedirectModel)); + + // when + + thisServerWebTestClient + .get() + .uri( + uriBuilder -> uriBuilder + .path("/login") + .queryParam(LOGIN_CHALLENGE, loginChallenge) + .build()) + .exchange() + .expectStatus() + .isFound() + .expectHeader() + .exists("Location") + .expectHeader() + .valueMatches("Location", frontendURI) + .expectCookie() + .exists(SESSION) + .expectCookie() + .value(SESSION, str -> sessionValueThisApp = str); + + thisServerWebTestClient + .mutateWith(SecurityMockServerConfigurers.csrf()) + .post() + .uri( + uriBuilder -> uriBuilder + .path("/login") + .build()) + .body(Mono.just(postLoginModel), PostLoginModel.class) + .cookie(SESSION, sessionValueThisApp) + .exchange() + .expectStatus() + .isCreated() + .expectBody() + .jsonPath("$").isNotEmpty() + .jsonPath("$").isMap() + .jsonPath("$.length()").isEqualTo(1) + .jsonPath("$.redirect_to").isNotEmpty() + .jsonPath("$.redirect_to").isEqualTo(responseWithRedirectModel.getRedirectTo()); + + // then (instead of verify) + then(oryHydraService) + .should() + .loginRequestInfo(loginChallenge); + + then(userService) + .should() + .getUserAndCheck(login, password); + + then(oryHydraService) + .should() + .acceptLoginRequest(eq(loginChallenge), any()); + + } + + @Test + @DisplayName("reauthentication") + void reauthentication() { + + // given (instead of when) + + final String subject = "some_subject"; + + final String loginChallenge = "some_login_challenge"; + + final String redirectTo = "http://some-red"; + + final GetLoginResponseModel getLoginResponseModel = GetLoginResponseModel + .builder() + .skip(true) + .subject(subject) + .build(); + + final User user = User.builder() + .login(subject) + .build(); + + final ResponseWithRedirectModel responseWithRedirectModel = ResponseWithRedirectModel.builder() + .redirectTo(redirectTo) + .build(); + + given(oryHydraService.loginRequestInfo(loginChallenge)).willReturn(Mono.just(getLoginResponseModel)); + + given(userService.getUser(subject)).willReturn(Mono.just(user)); + + given(oryHydraService.acceptLoginRequest(eq(loginChallenge), any())) + .willReturn(Mono.just(responseWithRedirectModel)); + + // when + + thisServerWebTestClient + .get() + .uri( + uriBuilder -> uriBuilder + .path("/login") + .queryParam(LOGIN_CHALLENGE, loginChallenge) + .build()) + .exchange() + .expectStatus() + .isFound() + .expectHeader() + .exists("Location") + .expectHeader() + .valueMatches("Location", responseWithRedirectModel.getRedirectTo()); + + // then (instead of verify) + then(oryHydraService) + .should() + .loginRequestInfo(loginChallenge); + + then(userService) + .should() + .getUser(subject); + + then(oryHydraService) + .should() + .acceptLoginRequest(eq(loginChallenge), any()); + + } + + @Test + @DisplayName("Maximum number of login attempts exceeded") + void exceededTheNumberOfLoginAttempts() { + // given (instead of when) + + final String loginChallenge = "some_login_challenge"; + + final String redirectTo = "http://some-red"; + + final String login = "some_login"; + + final String password1 = "qwerty1"; + final String password2 = "qwerty2"; + final String password3 = "qwerty3"; + + PostLoginModel postLoginModel1 = new PostLoginModel(login, password1, true); + PostLoginModel postLoginModel2 = new PostLoginModel(login, password2, true); + PostLoginModel postLoginModel3 = new PostLoginModel(login, password3, true); + + var ex = new IncorrectPasswordException("Password is incorrect! "); + + final GetLoginResponseModel getLoginResponseModel = GetLoginResponseModel + .builder() + .skip(false) + .build(); + + final ResponseWithRedirectModel responseWithRedirectModel = ResponseWithRedirectModel.builder() + .redirectTo(redirectTo) + .build(); + + given(oryHydraService.loginRequestInfo(loginChallenge)).willReturn(Mono.just(getLoginResponseModel)); + + given(userService.getUserAndCheck(login, password1)) + .willThrow(ex); + given(userService.getUserAndCheck(login, password2)) + .willThrow(ex); + given(userService.getUserAndCheck(login, password3)) + .willThrow(ex); + + given(oryHydraService.rejectLoginRequest(eq(loginChallenge), any())) + .willReturn(Mono.just(responseWithRedirectModel)); + + // when + + thisServerWebTestClient + .get() + .uri( + uriBuilder -> uriBuilder + .path("/login") + .queryParam(LOGIN_CHALLENGE, loginChallenge) + .build()) + .exchange() + .expectStatus() + .isFound() + .expectHeader() + .exists("Location") + .expectHeader() + .valueMatches("Location", frontendURI) + .expectCookie() + .exists(SESSION) + .expectCookie() + .value(SESSION, str -> sessionValueThisApp = str); + + // 1 + + thisServerWebTestClient + .mutateWith(SecurityMockServerConfigurers.csrf()) + .post() + .uri( + uriBuilder -> uriBuilder + .path("/login") + .build()) + .body(Mono.just(postLoginModel1), PostLoginModel.class) + .cookie(SESSION, sessionValueThisApp) + .exchange() + .expectStatus() + .isBadRequest(); + + // 2 + + thisServerWebTestClient + .mutateWith(SecurityMockServerConfigurers.csrf()) + .post() + .uri( + uriBuilder -> uriBuilder + .path("/login") + .build()) + .body(Mono.just(postLoginModel2), PostLoginModel.class) + .cookie(SESSION, sessionValueThisApp) + .exchange() + .expectStatus() + .isBadRequest(); + + // 3 + + thisServerWebTestClient + .mutateWith(SecurityMockServerConfigurers.csrf()) + .post() + .uri( + uriBuilder -> uriBuilder + .path("/login") + .build()) + .body(Mono.just(postLoginModel3), PostLoginModel.class) + .cookie(SESSION, sessionValueThisApp) + .exchange() + .expectStatus() + .isBadRequest(); + + thisServerWebTestClient + .mutateWith(SecurityMockServerConfigurers.csrf()) + .post() + .uri( + uriBuilder -> uriBuilder + .path("/login") + .build()) + .body(Mono.just(postLoginModel1), PostLoginModel.class) + .cookie(SESSION, sessionValueThisApp) + .exchange() + .expectStatus() + .isCreated() + .expectBody() + .jsonPath("$").isNotEmpty() + .jsonPath("$").isMap() + .jsonPath("$.length()").isEqualTo(1) + .jsonPath("$.redirect_to").isNotEmpty() + .jsonPath("$.redirect_to").isEqualTo(redirectTo); + + // then (instead of verify) + + then(oryHydraService) + .should() + .loginRequestInfo(loginChallenge); + + then(userService) + .should() + .getUserAndCheck(login, password1); + + then(userService) + .should() + .getUserAndCheck(login, password2); + + then(userService) + .should() + .getUserAndCheck(login, password3); + + then(oryHydraService) + .should() + .rejectLoginRequest(eq(loginChallenge), any()); + + } +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/controllers/LogoutProviderControllerTest.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/controllers/LogoutProviderControllerTest.java new file mode 100644 index 00000000..5f5530df --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/controllers/LogoutProviderControllerTest.java @@ -0,0 +1,227 @@ +package com.github.chistousov.authorization_backend.controllers; + +import static org.mockito.BDDMockito.given; +import static org.mockito.BDDMockito.then; + +import java.io.UnsupportedEncodingException; +import java.time.Duration; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.reactive.WebFluxTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; +import org.springframework.context.annotation.PropertySource; +import org.springframework.security.test.web.reactive.server.SecurityMockServerConfigurers; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.springframework.test.web.reactive.server.WebTestClient; + +import com.github.chistousov.authorization_backend.SpringSecurityConfiguration; +import com.github.chistousov.authorization_backend.models.GetLogoutResponseModel; +import com.github.chistousov.authorization_backend.models.PutLogoutModel; +import com.github.chistousov.authorization_backend.models.ResponseWithRedirectModel; +import com.github.chistousov.authorization_backend.services.OryHydraService; + +import reactor.core.publisher.Mono; + +@WebFluxTest(controllers = { LogoutProviderController.class }) +@PropertySource("classpath:application.yml") +@Import(SpringSecurityConfiguration.class) +class LogoutProviderControllerTest { + + /*------- const (begin) ------- */ + + private static final String frontendURI = "http://some-frontend"; + + private static final String frontendURICancel = "http://some-frontend2"; + + private static final String LOGOUT_CHALLENGE = "logout_challenge"; + + private static final String SESSION = "SESSION"; + + /*------- const (end) ------- */ + + @MockBean + private OryHydraService oryHydraService; + + @Autowired + private WebTestClient thisServerWebTestClient; + + // session this app + private String sessionValueThisApp; + + @DynamicPropertySource + public static void settings(DynamicPropertyRegistry registry) + throws UnsupportedEncodingException { + + registry.add("application.ory-hydra.frontend.logout-redirectURI", () -> frontendURI); + registry.add("application.ory-hydra.frontend.logout-cancel-redirectURI", () -> frontendURICancel); + + } + + @BeforeEach + void setUp() { + thisServerWebTestClient = thisServerWebTestClient.mutate() + .responseTimeout(Duration.ofMinutes(5)) + .build(); + sessionValueThisApp = null; + } + + @Test + @DisplayName("full logout flow") + void fullLogoutFlow() { + // given (instead of when) + + final String logoutChallenge = "some_logout_challenge"; + + final String redirectTo = "http://some-red"; + + final GetLogoutResponseModel getLogoutResponseModel = GetLogoutResponseModel + .builder() + .subject("some subject") + .build(); + + final PutLogoutModel putLogoutModel = PutLogoutModel + .builder() + .isConfirmed(true) + .build(); + + final ResponseWithRedirectModel responseWithRedirectModel = ResponseWithRedirectModel.builder() + .redirectTo(redirectTo) + .build(); + + given(oryHydraService.logoutRequestInfo(logoutChallenge)).willReturn(Mono.just(getLogoutResponseModel)); + + given(oryHydraService.acceptLogoutRequest(logoutChallenge)) + .willReturn(Mono.just(responseWithRedirectModel)); + // when + + // get logout + thisServerWebTestClient + .get() + .uri( + uriBuilder -> uriBuilder + .path("/logout") + .queryParam(LOGOUT_CHALLENGE, logoutChallenge) + .build()) + .exchange() + .expectStatus() + .isFound() + .expectHeader() + .exists("Location") + .expectHeader() + .valueMatches("Location", frontendURI) + .expectCookie() + .exists(SESSION) + .expectCookie() + .value(SESSION, str -> sessionValueThisApp = str); + + // put logout + thisServerWebTestClient + .mutateWith(SecurityMockServerConfigurers.csrf()) + .put() + .uri( + uriBuilder -> uriBuilder + .path("/logout") + .build()) + .cookie(SESSION, sessionValueThisApp) + .body(Mono.just(putLogoutModel), PutLogoutModel.class) + .exchange() + .expectStatus() + .isCreated() + .expectBody() + .jsonPath("$").isNotEmpty() + .jsonPath("$").isMap() + .jsonPath("$.length()").isEqualTo(1) + .jsonPath("$.redirect_to").isNotEmpty() + .jsonPath("$.redirect_to").isEqualTo(responseWithRedirectModel.getRedirectTo()); + + // then (instead of verify) + then(oryHydraService) + .should() + .logoutRequestInfo(logoutChallenge); + + then(oryHydraService) + .should() + .acceptLogoutRequest(logoutChallenge); + + } + + @Test + @DisplayName("full logout flow (cancel)") + void fullLogoutCancelFlow() { + // given (instead of when) + + final String logoutChallenge = "some_logout_challenge"; + + final GetLogoutResponseModel getLogoutResponseModel = GetLogoutResponseModel + .builder() + .subject("some subject") + .build(); + + final PutLogoutModel putLogoutModel = PutLogoutModel + .builder() + .isConfirmed(false) + .build(); + + given(oryHydraService.logoutRequestInfo(logoutChallenge)).willReturn(Mono.just(getLogoutResponseModel)); + + given(oryHydraService.rejectLogoutRequest(logoutChallenge)) + .willReturn(Mono.empty()); + // when + + // get logout + thisServerWebTestClient + .get() + .uri( + uriBuilder -> uriBuilder + .path("/logout") + .queryParam(LOGOUT_CHALLENGE, logoutChallenge) + .build()) + .exchange() + .expectStatus() + .isFound() + .expectHeader() + .exists("Location") + .expectHeader() + .valueMatches("Location", frontendURI) + .expectCookie() + .exists(SESSION) + .expectCookie() + .value(SESSION, str -> sessionValueThisApp = str); + + // put logout + thisServerWebTestClient + .mutateWith(SecurityMockServerConfigurers.csrf()) + .put() + .uri( + uriBuilder -> uriBuilder + .path("/logout") + .build()) + .cookie(SESSION, sessionValueThisApp) + .body(Mono.just(putLogoutModel), PutLogoutModel.class) + .exchange() + .expectStatus() + .isCreated() + .expectBody() + .jsonPath("$").isNotEmpty() + .jsonPath("$").isMap() + .jsonPath("$.length()").isEqualTo(1) + .jsonPath("$.redirect_to").isNotEmpty() + .jsonPath("$.redirect_to").isEqualTo(frontendURICancel); + + // then (instead of verify) + then(oryHydraService) + .should() + .logoutRequestInfo(logoutChallenge); + + then(oryHydraService) + .should() + .rejectLogoutRequest(logoutChallenge); + + } + +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/controllers/registration/RegistrationControllerTest.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/controllers/registration/RegistrationControllerTest.java new file mode 100644 index 00000000..73ab50ab --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/controllers/registration/RegistrationControllerTest.java @@ -0,0 +1,115 @@ +package com.github.chistousov.authorization_backend.controllers.registration; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.BDDMockito.given; +import static org.mockito.BDDMockito.then; + +import org.assertj.core.util.Arrays; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.reactive.WebFluxTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; +import org.springframework.security.test.web.reactive.server.SecurityMockServerConfigurers; +import org.springframework.test.web.reactive.server.WebTestClient; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.chistousov.authorization_backend.SpringSecurityConfiguration; +import com.github.chistousov.authorization_backend.models.PostRegistrationModel; +import com.github.chistousov.authorization_backend.services.UserService; + +import reactor.core.publisher.Mono; + +@WebFluxTest(controllers = { RegistrationController.class }) +@Import(SpringSecurityConfiguration.class) +public class RegistrationControllerTest { + + @Autowired + private WebTestClient thisServerWebTestClient; + + @MockBean + private UserService userService; + + private Long userIdActual = -1L; + + @Test + @DisplayName("registration is successful") + void testPostRegistrationSuccessful() { + + // given (instead of when) + + final Long userIdExpected = 1L; + + final PostRegistrationModel postRegistrationModel = PostRegistrationModel + .builder() + .login("somelogin") + .password("zxcG2!DadD@1vxc2") + .orgName("someOrg") + .build(); + + given(userService.createUser(postRegistrationModel)).willReturn(Mono.just(userIdExpected)); + + // when + + thisServerWebTestClient + .mutateWith(SecurityMockServerConfigurers.csrf()) + .post() + .uri("/registration") + .body(Mono.just(postRegistrationModel), PostRegistrationModel.class) + .exchange() + .expectStatus() + .isCreated() + .expectBody(Long.class) + .value(id -> userIdActual = id); + + // then (instead of verify) + + assertThat(userIdActual).isEqualTo(userIdExpected); + + then(userService) + .should() + .createUser(postRegistrationModel); + + } + + @Test + @DisplayName("registration is fault") + void testPostRegistrationFault() throws JsonProcessingException { + + // given (instead of when) + + final ObjectMapper mapper = new ObjectMapper(); + final String exMsgsExpected = mapper.writeValueAsString( + Arrays.array("login must be greater than 4", + "password is invalid", + "org name must be greater than 4")); + + final PostRegistrationModel postRegistrationModel = PostRegistrationModel + .builder() + .login("zxc") + .password("12") + .orgName("qwe") + .build(); + + // when + + thisServerWebTestClient + .mutateWith(SecurityMockServerConfigurers.csrf()) + .post() + .uri("/registration") + .body(Mono.just(postRegistrationModel), PostRegistrationModel.class) + .exchange() + .expectStatus() + .isBadRequest() + .expectBody() + .jsonPath("$").isNotEmpty() + .jsonPath("$").isArray() + .jsonPath("$.length()").isEqualTo(3) + .jsonPath(String.format("[?($.* anyof %s)]", exMsgsExpected)).isNotEmpty(); + + // then (instead of verify) + + } +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/models/AcceptLoginRequestModelTest.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/models/AcceptLoginRequestModelTest.java new file mode 100644 index 00000000..a40ddea7 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/models/AcceptLoginRequestModelTest.java @@ -0,0 +1,45 @@ +package com.github.chistousov.authorization_backend.models; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.catchThrowable; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +public class AcceptLoginRequestModelTest { + + @Test + @DisplayName("AcceptLoginRequestModel: subject is null") + void testConstructorAcceptLoginRequestModel1() { + // given (instead of when) + + // when + + Throwable thrown = catchThrowable(() -> AcceptLoginRequestModelBuilder + .builder() + .setSubject(null) + .build()); + + // then (instead of verify) + + assertThat(thrown).hasMessageContaining("Subject not set"); + + } + + @Test + @DisplayName("AcceptLoginRequestModel: subject is blank") + void testConstructorAcceptLoginRequestModel2() { + // given (instead of when) + + // when + + Throwable thrown = catchThrowable(() -> AcceptLoginRequestModelBuilder + .builder() + .setSubject("") + .build()); + + // then (instead of verify) + + assertThat(thrown).hasMessageContaining("Subject not set"); + } +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/models/CreateClientModel.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/models/CreateClientModel.java new file mode 100644 index 00000000..2e947c31 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/models/CreateClientModel.java @@ -0,0 +1,61 @@ +package com.github.chistousov.authorization_backend.models; + +import java.util.List; + +public class CreateClientModel { + private String client_id; + private List redirect_uris; + private String client_secret; + private List grant_types; + private List response_types; + private String scope; + + public String getClient_id() { + return client_id; + } + + public void setClient_id(String client_id) { + this.client_id = client_id; + } + + public List getRedirect_uris() { + return redirect_uris; + } + + public void setRedirect_uris(List redirect_uris) { + this.redirect_uris = redirect_uris; + } + + public String getClient_secret() { + return client_secret; + } + + public void setClient_secret(String client_secret) { + this.client_secret = client_secret; + } + + public List getGrant_types() { + return grant_types; + } + + public void setGrant_types(List grant_types) { + this.grant_types = grant_types; + } + + public List getResponse_types() { + return response_types; + } + + public void setResponse_types(List response_types) { + this.response_types = response_types; + } + + public String getScope() { + return scope; + } + + public void setScope(String scope) { + this.scope = scope; + } + +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/services/OryHydraServiceTest.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/services/OryHydraServiceTest.java new file mode 100644 index 00000000..7816a32f --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/services/OryHydraServiceTest.java @@ -0,0 +1,835 @@ +package com.github.chistousov.authorization_backend.services; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.io.File; +import java.io.UnsupportedEncodingException; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URLEncoder; +import java.nio.file.Path; +import java.security.NoSuchAlgorithmException; +import java.time.Duration; +import java.util.AbstractMap.SimpleImmutableEntry; +import java.util.Arrays; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; +import org.junit.jupiter.api.MethodOrderer.OrderAnnotation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.springframework.test.web.reactive.server.WebTestClient; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.testcontainers.containers.DockerComposeContainer; +import org.testcontainers.containers.wait.strategy.Wait; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import com.github.chistousov.authorization_backend.SupportModule; +import com.github.chistousov.authorization_backend.TestAccessTokenExtension; +import com.github.chistousov.authorization_backend.TestIdTokenExtension; +import com.github.chistousov.authorization_backend.models.AcceptConsentRequestModelBuilder; +import com.github.chistousov.authorization_backend.models.AcceptLoginRequestModelBuilder; +import com.github.chistousov.authorization_backend.models.CreateClientModel; +import com.github.chistousov.authorization_backend.models.ErrorModelBuilder; +import com.github.chistousov.authorization_backend.models.SessionForTokenModelBuilder; + +import reactor.core.publisher.Mono; +import reactor.test.StepVerifier; + +@Testcontainers +@SpringBootTest +@TestMethodOrder(OrderAnnotation.class) +public class OryHydraServiceTest { + + /*------- const (begin) ------- */ + + // path docker compose + private static final File pathToResourceDockerComposeFile = Path.of("").toAbsolutePath().getParent().getParent() + .resolve("docker-compose.yaml").toFile(); + + // service name in docker compose + private static final String hydraContainerDockerCompose = "ory-hydra-oauth2-example-authorization-server-hydra"; + // port admin Ory Hydra + private static final int hydraAdminPortDockerCompose = 4445; + // port public Ory Hydra + private static final int hydraPublicPortDockerCompose = 4444; + + // subject (login) resource owner + private static final String login = "some_login"; + + // domain Ory Hydra + private static final String AUTH_DOMAIN = "authorization-server.com"; + + // session after authentication and authorization + private static final String OAUTH2_AUTHENTICATION_SESSION = "ory_hydra_session"; + + private static final String LOGIN_CHALLENGE = "login_challenge"; + private static final String CONSENT_CHALLENGE = "consent_challenge"; + private static final String CODE_CHALLENGE = "code_challenge"; + private static final String LOGOUT_CHALLENGE = "logout_challenge"; + + // PKCE + private static final String CODE_CHALLENGE_METHOD = "code_challenge_method"; + // protocol PKCE code challenge method SHA256 + private static final String codeChallengeMethod = "S256"; + + // generated application test client + private static String scopes = "offine openid read"; + private static String redirectUri = "http://127.0.0.1:9631/callback"; + + /*------- const (end) ------- */ + + // start docker compose + @Container + public static DockerComposeContainer containersDockerCompose = new DockerComposeContainer<>( + pathToResourceDockerComposeFile) + // .env docker compose + .withEnv("USER_DATA_POSTGRESQL_PASSWORD", "superpass") + .withEnv("HYDRA_POSTGRESQL_PASSWORD", "superpass2") + .withEnv("HYDRA_SECRETS_COOKIE", "some_cookies111111111111111122222") + .withEnv("HYDRA_SECRETS_SYSTEM", "some_secrets111111111111111122222") + .withEnv("HYDRA_DEPENDS_ON_MIGRATE", "service_started") + // public Ory Hydra + .withExposedService(hydraContainerDockerCompose, hydraPublicPortDockerCompose, + Wait.forListeningPort().withStartupTimeout(Duration.ofMinutes(30))) + // admin Ory Hydra + .withExposedService(hydraContainerDockerCompose, hydraAdminPortDockerCompose, + Wait.forHttp("/version").withHeader("X-Forwarded-Proto", "https") + .withStartupTimeout(Duration.ofMinutes(30))) + // .yaml v2 <-> v3 + .withOptions("--compatibility") + // docker-compose local + .withLocalCompose(true); + + // http client for public Ory Hydra + private static WebTestClient publicWebTestClient; + + // OAuth 2.0 client Id + private static String clientId; + + @DynamicPropertySource + public static void setting(DynamicPropertyRegistry registry) throws UnsupportedEncodingException { + + /* postgresql user */ + + registry.add("spring.datasource.driverClassName", () -> "org.postgresql.Driver"); + registry.add("spring.jpa.properties.hibernate.dialect", () -> "org.hibernate.dialect.PostgreSQLDialect"); + registry.add("spring.datasource.url", () -> "1"); + + /* Ory Hydra admin */ + + var hydraAdminBaseURI = String.format("http://%s:%d/admin/", + containersDockerCompose.getServiceHost(hydraContainerDockerCompose, hydraAdminPortDockerCompose), + containersDockerCompose.getServicePort(hydraContainerDockerCompose, hydraAdminPortDockerCompose)); + + registry.add("application.ory-hydra.admin.baseURI", () -> hydraAdminBaseURI); + + WebTestClient adminWebTestClient = WebTestClient.bindToServer() + .baseUrl(hydraAdminBaseURI) + .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) + // Since Ory Hydra is configured for TLS termination, the header below is + // required + // We pretend that WebClient is a proxy with TLS termination + // Так как Ory Hydra настроена на TLS termination, то необходим заголовок ниже + // Делаем вид что, WebClient прокси с TLS termination + .defaultHeader("X-Forwarded-Proto", "https") + .build(); + + /* Ory Hydra Public */ + + var hydraPublicBaseURI = String.format("http://%s:%d/", + containersDockerCompose.getServiceHost(hydraContainerDockerCompose, hydraPublicPortDockerCompose), + containersDockerCompose.getServicePort(hydraContainerDockerCompose, hydraPublicPortDockerCompose)); + + registry.add("application.ory-hydra.public.baseURI", () -> hydraPublicBaseURI); + + publicWebTestClient = WebTestClient.bindToServer() + .baseUrl(hydraPublicBaseURI) + .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) + // Since Ory Hydra is configured for TLS termination, the header below is + // required + // We pretend that WebClient is a proxy with TLS termination + // Так как Ory Hydra настроена на TLS termination, то необходим заголовок ниже + // Делаем вид что, WebClient прокси с TLS termination + .defaultHeader("X-Forwarded-Proto", "https") + .build(); + + // create a test client application + CreateClientModel createClientModel = new CreateClientModel(); + createClientModel.setRedirect_uris(List.of(redirectUri)); + createClientModel.setGrant_types(List.of("authorization_code")); + createClientModel.setResponse_types(List.of("code")); + createClientModel.setScope(scopes); + + adminWebTestClient + .post() + .uri("/clients") + .body(Mono.just(createClientModel), CreateClientModel.class) + .exchange() + .expectStatus() + .isCreated() + .expectBody(CreateClientModel.class) + .value(val -> { + clientId = val.getClient_id(); + }); + + } + + @Autowired + private OryHydraService oryHydraService; + + /* ------- temporary variables (begin) --------- */ + + // state для 4.1.1 Authorization Request для grant type Authorization Code Grant + private String state; + private String nonce; + + private MultiValueMap cookiesBeforeOauth2LoginRedirect; + private MultiValueMap cookiesBeforeOauth2ConsentRedirect; + private String oauth2AuthenticationSession; + + private String loginLocation; + private String loginChallenge; + private String consentChallenge; + + private String redirectConsentLocation; + private String consentLocation; + private String redirectForContentVerifier; + + private String logoutLocation; + private String logoutChallenge; + private String redirectLogoutLocation; + + private String codeVerifier; + private String codeChallenge; + + /* ------- temporary variables (end) --------- */ + + @BeforeEach + public void initEach() throws UnsupportedEncodingException, NoSuchAlgorithmException { + + // PKCE + codeVerifier = SupportModule.generateCodeVerifier(); + codeChallenge = SupportModule.generateCodeChallange(codeVerifier); + + state = SupportModule.generateRandomStr(); + nonce = SupportModule.generateRandomStr(); + + cookiesBeforeOauth2LoginRedirect = null; + cookiesBeforeOauth2ConsentRedirect = null; + oauth2AuthenticationSession = null; + + loginLocation = null; + loginChallenge = null; + consentChallenge = null; + + redirectConsentLocation = null; + consentLocation = null; + redirectForContentVerifier = null; + + logoutLocation = null; + logoutChallenge = null; + redirectLogoutLocation = null; + + } + + /** + *

+ * Init Ory Hydra Login Flow. Get loginChallenge. + *

+ * + * @author Nikita Chistousov (chistousov.nik@yandex.ru) + * @since 11 + */ + private void oryHydraInitLoginFlow() throws URISyntaxException, UnsupportedEncodingException { + + String scopesURI = URLEncoder.encode(String.join(" ", scopes), "UTF-8"); + + publicWebTestClient + .get() + .uri(uriBuilder -> uriBuilder + .path("oauth2/auth") + .queryParam("client_id", clientId) + .queryParam("response_type", "code") + .queryParam("state", state) + .queryParam("nonce", nonce) + .queryParam("redirect_uri", redirectUri) + .queryParam("scope", scopesURI) + // PKCE + .queryParam(CODE_CHALLENGE, codeChallenge) + .queryParam(CODE_CHALLENGE_METHOD, codeChallengeMethod) + .build()) + .cookie(OAUTH2_AUTHENTICATION_SESSION, oauth2AuthenticationSession == null + || oauth2AuthenticationSession.isBlank() + || oauth2AuthenticationSession.isEmpty() ? "" + : oauth2AuthenticationSession) + .exchange() + .expectStatus() + .isFound() + .expectHeader() + .exists("Location") + .expectHeader() + .valueMatches("Location", String.format("^https:\\/\\/%s\\/api\\/login\\?login_challenge=.+$", AUTH_DOMAIN)) + .expectHeader() + .value("Location", location -> loginLocation = location) + .expectHeader() + .exists("Set-Cookie") + .expectHeader() + .values("Set-Cookie", cookies -> { + cookiesBeforeOauth2LoginRedirect = new LinkedMultiValueMap<>(cookies.size()); + + for (int i = 0; i < cookies.size(); i++) { + String nameAndValueCookieStr = cookies.get(i).split(";")[0]; + + String[] nameAndValueCookieArray = nameAndValueCookieStr.split("=", 2); + + cookiesBeforeOauth2LoginRedirect.add(nameAndValueCookieArray[0], nameAndValueCookieArray[1]); + + } + + }); + + URI loginLocationURI = new URI(loginLocation); + String queryParamsStr = loginLocationURI.getQuery(); + + // check that the request parameters are present + assertThat(queryParamsStr).isNotEmpty().isNotBlank().contains("="); + + // parse request parameters into a convenient structure + var queryParams = Arrays + .stream(queryParamsStr.split("&")) + .map(SupportModule::splitQueryParameter) + .collect( + Collectors.groupingBy( + SimpleImmutableEntry::getKey, + LinkedHashMap::new, + Collectors.mapping(Map.Entry::getValue, + Collectors.toList()))); + + // check that there is a login_challenge in the request parameters + assertThat(queryParams).isNotEmpty().containsOnlyKeys(LOGIN_CHALLENGE); + + // remember login_challenge + loginChallenge = queryParams.get(LOGIN_CHALLENGE).get(0); + } + + /** + *

+ * Init Ory Hydra Consent Flow. Get loginChallenge. + *

+ * + * @param queryParamsStrRedirectConsent - query params for init Consent Flow + * + * @author Nikita Chistousov (chistousov.nik@yandex.ru) + * @since 11 + */ + private void oryHydraInitConsentFlow(String queryParamsStrRedirectConsent) throws URISyntaxException { + + publicWebTestClient + .get() + .uri( + uriBuilder -> uriBuilder + .path("/oauth2/auth") + .query(queryParamsStrRedirectConsent) + .build()) + .cookies(cookies -> cookies.addAll(cookiesBeforeOauth2LoginRedirect)) + .exchange() + .expectStatus() + .isFound() + .expectHeader() + .exists("Location") + .expectHeader() + .valueMatches("Location", String.format("^https:\\/\\/%s\\/api\\/consent\\?consent_challenge=.+$", AUTH_DOMAIN)) + .expectHeader() + .value("Location", location -> consentLocation = location) + .expectCookie() + // remember ora hydra session for re-authentication + // (authentication without password re-entry) + // запоминаем сессию ora hydra для переаутентификации + // (аутентификации без повторного ввода пароля) + .value(OAUTH2_AUTHENTICATION_SESSION, val -> oauth2AuthenticationSession = val) + .expectHeader() + .exists("Set-Cookie") + .expectHeader() + .values("Set-Cookie", cookies -> { + cookiesBeforeOauth2ConsentRedirect = new LinkedMultiValueMap<>(cookies.size()); + + for (int i = 0; i < cookies.size(); i++) { + String nameAndValueCookieStr = cookies.get(i).split(";")[0]; + + String[] nameAndValueCookieArray = nameAndValueCookieStr.split("=", 2); + + if (cookiesBeforeOauth2ConsentRedirect.containsKey(nameAndValueCookieArray[0])) { + cookiesBeforeOauth2ConsentRedirect.remove(nameAndValueCookieArray[0]); + cookiesBeforeOauth2ConsentRedirect.add(nameAndValueCookieArray[0], nameAndValueCookieArray[1]); + } else { + cookiesBeforeOauth2ConsentRedirect.add(nameAndValueCookieArray[0], nameAndValueCookieArray[1]); + } + + } + + }); + + URI consentLocationURI = new URI(consentLocation); + var queryParamsStrConsent = consentLocationURI.getQuery(); + + // check that the request parameters are present + assertThat(queryParamsStrConsent).isNotEmpty().isNotBlank().contains("="); + + // parse request parameters into a convenient structure + var queryParamsConsent = Arrays + .stream(queryParamsStrConsent.split("&")) + .map(SupportModule::splitQueryParameter) + .collect( + Collectors.groupingBy( + SimpleImmutableEntry::getKey, + LinkedHashMap::new, + Collectors.mapping(Map.Entry::getValue, + Collectors.toList()))); + + // check that there is consent_challenge in the request parameters + assertThat(queryParamsConsent).isNotEmpty().containsOnlyKeys(CONSENT_CHALLENGE); + + // remember consent_challenge + consentChallenge = queryParamsConsent.get(CONSENT_CHALLENGE).get(0); + } + + /** + *

+ * Ory Hydra full Cycle Auth + *

+ * + * @author Nikita Chistousov (chistousov.nik@yandex.ru) + * @since 11 + */ + private void fullCycleAuth() throws UnsupportedEncodingException, NoSuchAlgorithmException, URISyntaxException { + + // 4.1.1 Authorization Request + + // authentication request + oryHydraInitLoginFlow(); + + /* BEGIN ory hydra login flow */ + + // check info loginChallenge + StepVerifier + .create(this.oryHydraService.loginRequestInfo(loginChallenge)) + .expectNextMatches(body -> body.getClient().getClientId().equals(clientId)) + .verifyComplete(); + + // authorization with redirect + var acceptLoginRequestModel = Mono.just( + AcceptLoginRequestModelBuilder.builder() + .setSubject(login) + .setRemember(true) + .setRememberFor(60L * 60L * 24L) + .setContextModel("") + .build()); + StepVerifier + .create(this.oryHydraService.acceptLoginRequest(loginChallenge, acceptLoginRequestModel)) + .expectNextMatches( + responseWithRedirectModel -> { + + redirectConsentLocation = responseWithRedirectModel.getRedirectTo(); + + return redirectConsentLocation + .matches( + String.format( + "^https:\\/\\/%s\\/oauth2\\/auth\\?client_id=%s&code_challenge=%s&code_challenge_method=%s&login_verifier=.+&response_type=code&scope=.+&state=%s$", + AUTH_DOMAIN, clientId, codeChallenge, codeChallengeMethod, state)); + }) + .verifyComplete(); + + /* END ory hydra login flow */ + + URI redirectConsentLocationURI = new URI(redirectConsentLocation); + var queryParamsStrRedirectConsent = redirectConsentLocationURI.getQuery(); + + // remember the login flow state and switch to ory hydra consent flow + oryHydraInitConsentFlow(queryParamsStrRedirectConsent); + + /* BEGIN ory hydra consent flow */ + + StepVerifier + .create(this.oryHydraService.consentRequestInfo(consentChallenge)) + .expectNextMatches(body -> body.getClient().getClientId().equals(clientId)) + .verifyComplete(); + + TestAccessTokenExtension accessTokenExtension = new TestAccessTokenExtension(); + accessTokenExtension.setId(1L); + accessTokenExtension.setName("some_name"); + + TestIdTokenExtension idTokenExtension = new TestIdTokenExtension(); + idTokenExtension.setHash("some_hash"); + + var acceptConsentRequestModelMono = Mono.just( + AcceptConsentRequestModelBuilder.builder() + .setGrantScope(Arrays.asList(scopes.split(" "))) + .setRemember(true) + .setRememberFor(36L * 60L * 60L) + .setSession( + SessionForTokenModelBuilder + .builder() + .setAccessTokenExtension(accessTokenExtension) + .setIdTokenExtension(idTokenExtension) + .build()) + .build()); + + StepVerifier + .create(this.oryHydraService.acceptConsentRequest(consentChallenge, acceptConsentRequestModelMono)) + .expectNextMatches( + responseWithRedirectModel -> { + + redirectForContentVerifier = responseWithRedirectModel.getRedirectTo(); + + return redirectForContentVerifier + .matches( + String.format( + "^https:\\/\\/%s\\/oauth2\\/auth\\?client_id=%s&code_challenge=%s&code_challenge_method=%s&consent_verifier=.+&response_type=code&scope=.+&state=%s$", + AUTH_DOMAIN, clientId, codeChallenge, codeChallengeMethod, state)); + }) + .verifyComplete(); + + URI redirectForContentVerifierURI = new URI(redirectForContentVerifier); + var queryParamsForContentVerifier = redirectForContentVerifierURI.getQuery(); + + /* END ory hydra consent flow */ + + // THE END + publicWebTestClient + .get() + .uri( + uriBuilder -> uriBuilder + .path("/oauth2/auth") + .query(queryParamsForContentVerifier) + .build()) + .cookies(cookies -> { + cookies.addAll(cookiesBeforeOauth2ConsentRedirect); + cookiesBeforeOauth2LoginRedirect.entrySet() + .removeIf(k -> cookiesBeforeOauth2ConsentRedirect.containsKey(k.getKey())); + cookies.addAll(cookiesBeforeOauth2LoginRedirect); + cookies.add(OAUTH2_AUTHENTICATION_SESSION, oauth2AuthenticationSession); + }) + .exchange() + .expectStatus() + .isSeeOther() + .expectHeader() + .exists("Location") + .expectHeader() + .valueMatches("Location", String.format("^%s\\?code=.+&scope=.+&state=%s$", redirectUri, state)); + } + + @Test + @Order(1) + @DisplayName("Full cycle of user authentication and authorization") + void fullCycleAuthentication() throws UnsupportedEncodingException, NoSuchAlgorithmException, URISyntaxException { + fullCycleAuth(); + } + + @Test + @Order(2) + @DisplayName("Reject login flow") + void rejectLoginRequest() throws URISyntaxException, UnsupportedEncodingException { + + // authentication request + oryHydraInitLoginFlow(); + + // error for reject + var errorModel = ErrorModelBuilder + .builder() + .setError("some_error") + .setErrorDescription("some_description") + .setStatusCode(504L) + .setErrorDebug("some_debug") + .setErrorHint("hint") + .build(); + var errorModelMono = Mono.just(errorModel); + + StepVerifier + .create(this.oryHydraService.rejectLoginRequest(loginChallenge, errorModelMono)) + .expectNextMatches( + responseWithRedirectModel -> { + + redirectConsentLocation = responseWithRedirectModel.getRedirectTo(); + + return redirectConsentLocation + .matches( + String.format( + "^https:\\/\\/%s\\/oauth2\\/auth\\?client_id=%s&code_challenge=%s&code_challenge_method=%s&login_verifier=.+&response_type=code&scope=.+&state=%s$", + AUTH_DOMAIN, clientId, codeChallenge, codeChallengeMethod, state)); + }) + .verifyComplete(); + + URI redirectConsentLocationURI = new URI(redirectConsentLocation); + var queryParamsStrRedirectConsent = redirectConsentLocationURI.getQuery(); + + publicWebTestClient + .get() + .uri( + uriBuilder -> uriBuilder + .path("/oauth2/auth") + .query(queryParamsStrRedirectConsent) + .build()) + .cookies(cookies -> cookies.addAll(cookiesBeforeOauth2LoginRedirect)) + .exchange() + .expectStatus() + .isSeeOther() + .expectHeader() + .exists("Location") + .expectHeader() + .valueMatches("Location", + String.format("^%s\\?error=%s&error_description=%s\\+hint&state=%s$", + redirectUri, errorModel.getError(), errorModel.getErrorDescription(), state)); + } + + @Test + @Order(3) + @DisplayName("Reject consent flow") + void rejectConsentRequest() throws URISyntaxException, UnsupportedEncodingException { + + oryHydraInitLoginFlow(); + + /* BEGIN ory hydra login flow */ + + var acceptLoginRequestModel = Mono.just( + AcceptLoginRequestModelBuilder.builder() + .setSubject(login) + .setRemember(true) + .setRememberFor(60L * 60L * 24L) + .setContextModel("") + .build()); + + StepVerifier + .create(this.oryHydraService.acceptLoginRequest(loginChallenge, acceptLoginRequestModel)) + .expectNextMatches( + responseWithRedirectModel -> { + + redirectConsentLocation = responseWithRedirectModel.getRedirectTo(); + + return redirectConsentLocation + .matches( + String.format( + "^https:\\/\\/%s\\/oauth2\\/auth\\?client_id=%s&code_challenge=%s&code_challenge_method=%s&login_verifier=.+&response_type=code&scope=.+&state=%s$", + AUTH_DOMAIN, clientId, codeChallenge, codeChallengeMethod, state)); + }) + .verifyComplete(); + + /* END ory hydra login flow */ + + URI redirectConsentLocationURI = new URI(redirectConsentLocation); + var queryParamsStrRedirectConsent = redirectConsentLocationURI.getQuery(); + + oryHydraInitConsentFlow(queryParamsStrRedirectConsent); + + /* BEGIN ory hydra consent flow */ + + var errorModel = ErrorModelBuilder + .builder() + .setError("some_error") + .setErrorDescription("some_description") + .setStatusCode(504L) + .build(); + + var errorModelMono = Mono.just(errorModel); + + StepVerifier + .create(this.oryHydraService.rejectConsentRequest(consentChallenge, errorModelMono)) + .expectNextMatches( + responseWithRedirectModel -> { + + redirectForContentVerifier = responseWithRedirectModel.getRedirectTo(); + + return redirectForContentVerifier + .matches( + String.format( + "^https:\\/\\/%s\\/oauth2\\/auth\\?client_id=%s&code_challenge=%s&code_challenge_method=%s&consent_verifier=.+&response_type=code&scope=.+&state=%s$", + AUTH_DOMAIN, clientId, codeChallenge, codeChallengeMethod, state)); + }) + .verifyComplete(); + + URI redirectForContentVerifierURI = new URI(redirectForContentVerifier); + var queryParamsForContentVerifier = redirectForContentVerifierURI.getQuery(); + + /* END ory hydra consent flow */ + + publicWebTestClient + .get() + .uri( + uriBuilder -> uriBuilder + .path("/oauth2/auth") + .query(queryParamsForContentVerifier) + .build()) + .cookies(cookies -> { + cookies.addAll(cookiesBeforeOauth2ConsentRedirect); + cookiesBeforeOauth2LoginRedirect.entrySet() + .removeIf(k -> cookiesBeforeOauth2ConsentRedirect.containsKey(k.getKey())); + cookies.addAll(cookiesBeforeOauth2LoginRedirect); + cookies.add(OAUTH2_AUTHENTICATION_SESSION, oauth2AuthenticationSession); + }) + .exchange() + .expectStatus() + .isSeeOther() + .expectHeader() + .exists("Location") + .expectHeader() + .valueMatches("Location", + String.format("^%s\\?error=%s&error_description=%s&state=%s$", + redirectUri, errorModel.getError(), errorModel.getErrorDescription(), state)); + } + + @Test + @Order(4) + @DisplayName("Full exit cycle") + void fullCycleLogout() + throws URISyntaxException, UnsupportedEncodingException, NoSuchAlgorithmException { + + fullCycleAuth(); + + /* BEGIN ory hydra logout flow */ + + publicWebTestClient + .get() + .uri(uriBuilder -> uriBuilder + .path("oauth2/sessions/logout") + .build()) + .cookie(OAUTH2_AUTHENTICATION_SESSION, oauth2AuthenticationSession) + .exchange() + .expectStatus() + .isFound() + .expectHeader() + .exists("Location") + .expectHeader() + .valueMatches("Location", + String.format("^https:\\/\\/%s\\/api\\/logout\\?logout_challenge=.+$", + AUTH_DOMAIN)) + .expectHeader() + .value("Location", location -> logoutLocation = location); + + URI logoutLocationURI = new URI(logoutLocation); + String queryParamsStr = logoutLocationURI.getQuery(); + + var queryParams = Arrays + .stream(queryParamsStr.split("&")) + .map(SupportModule::splitQueryParameter) + .collect( + Collectors.groupingBy( + SimpleImmutableEntry::getKey, + LinkedHashMap::new, + Collectors.mapping(Map.Entry::getValue, + Collectors.toList()))); + + logoutChallenge = queryParams.get(LOGOUT_CHALLENGE).get(0); + + StepVerifier + .create(this.oryHydraService.logoutRequestInfo(logoutChallenge)) + .expectNextMatches(body -> body.getSubject().equals(login)) + .verifyComplete(); + + StepVerifier + .create(this.oryHydraService.acceptLogoutRequest(logoutChallenge)) + .expectNextMatches( + responseWithRedirectModel -> { + + redirectLogoutLocation = responseWithRedirectModel.getRedirectTo(); + + return redirectLogoutLocation + .matches( + String.format( + "^https:\\/\\/%s\\/oauth2\\/sessions\\/logout\\?logout_verifier=.+$", + AUTH_DOMAIN)); + }) + .verifyComplete(); + + URI redirectForLogoutVerifierURI = new URI(redirectLogoutLocation); + var queryParamsForLogoutVerifier = redirectForLogoutVerifierURI.getQuery(); + + publicWebTestClient + .get() + .uri( + uriBuilder -> uriBuilder + .path("oauth2/sessions/logout") + .query(queryParamsForLogoutVerifier) + .build()) + .cookie(OAUTH2_AUTHENTICATION_SESSION, oauth2AuthenticationSession) + .exchange() + .expectStatus() + .isFound() + .expectHeader() + .exists("Location") + .expectHeader() + .valueMatches("Location", + String.format("^https:\\/\\/%s\\/logout\\/success$", + AUTH_DOMAIN)); + + /* END ory hydra logout flow */ + } + + @Test + @Order(5) + @DisplayName("reject Logout Flow") + void rejectLogoutRequest() + throws URISyntaxException, UnsupportedEncodingException, NoSuchAlgorithmException { + + fullCycleAuth(); + + /* BEGIN ory hydra logout flow */ + + publicWebTestClient + .get() + .uri(uriBuilder -> uriBuilder + .path("oauth2/sessions/logout") + .build()) + .cookie(OAUTH2_AUTHENTICATION_SESSION, oauth2AuthenticationSession) + .exchange() + .expectStatus() + .isFound() + .expectHeader() + .exists("Location") + .expectHeader() + .valueMatches("Location", + String.format("^https:\\/\\/%s\\/api\\/logout\\?logout_challenge=.+$", + AUTH_DOMAIN)) + .expectHeader() + .value("Location", location -> logoutLocation = location); + + URI logoutLocationURI = new URI(logoutLocation); + String queryParamsStr = logoutLocationURI.getQuery(); + + var queryParams = Arrays + .stream(queryParamsStr.split("&")) + .map(SupportModule::splitQueryParameter) + .collect( + Collectors.groupingBy( + SimpleImmutableEntry::getKey, + LinkedHashMap::new, + Collectors.mapping(Map.Entry::getValue, + Collectors.toList()))); + + logoutChallenge = queryParams.get(LOGOUT_CHALLENGE).get(0); + + StepVerifier + .create(this.oryHydraService.logoutRequestInfo(logoutChallenge)) + .expectNextMatches(body -> body.getSubject().equals(login)) + .verifyComplete(); + + StepVerifier + .create(this.oryHydraService.rejectLogoutRequest(logoutChallenge)) + .verifyComplete(); + + /* END ory hydra logout flow */ + } + +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/services/UserServiceTest.java b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/services/UserServiceTest.java new file mode 100644 index 00000000..83042446 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/java/com/github/chistousov/authorization_backend/services/UserServiceTest.java @@ -0,0 +1,249 @@ +package com.github.chistousov.authorization_backend.services; + +import java.io.File; +import java.io.UnsupportedEncodingException; +import java.nio.file.Path; +import java.time.Duration; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.DockerComposeContainer; +import org.testcontainers.containers.wait.strategy.Wait; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import com.github.chistousov.authorization_backend.dao.entities.User; +import com.github.chistousov.authorization_backend.exceptions.IncorrectPasswordException; +import com.github.chistousov.authorization_backend.exceptions.LoginDoesNotExistException; +import com.github.chistousov.authorization_backend.models.PostRegistrationModel; + +import reactor.test.StepVerifier; + +@Testcontainers +@SpringBootTest +public class UserServiceTest { + + /*------- const (begin) ------- */ + + // path docker compose + private static final File pathToResourceDockerComposeFile = Path.of("").toAbsolutePath().getParent().getParent() + .resolve("docker-compose.yaml").toFile(); + + // postgresql service in docker compose + private static final String postgresqlUserDataContainerDockerCompose = "ory-hydra-oauth2-ex-auth-server-userdata-postgresql"; + private static final int postgresqlUserDataPortDockerCompose = 5432; + private static final String postgresqlUserDataUserDockerCompose = "user_data"; + private static final String postgresqlUserDataPassDockerCompose = "superpass"; + + /*------- const (end) ------- */ + + // start docker compose + @Container + public static DockerComposeContainer containersDockerCompose = new DockerComposeContainer<>( + pathToResourceDockerComposeFile) + // .env docker compose + .withEnv("USER_DATA_POSTGRESQL_PASSWORD", postgresqlUserDataPassDockerCompose) + .withEnv("HYDRA_POSTGRESQL_PASSWORD", "superpass2") + .withEnv("HYDRA_SECRETS_COOKIE", "some_cookies111111111111111122222") + .withEnv("HYDRA_SECRETS_SYSTEM", "some_secrets111111111111111122222") + .withEnv("HYDRA_DEPENDS_ON_MIGRATE", "service_started") + // open postgresql port + .withExposedService(postgresqlUserDataContainerDockerCompose, postgresqlUserDataPortDockerCompose, + Wait.forSuccessfulCommand( + String.format("pg_isready -U %s", postgresqlUserDataUserDockerCompose)) + .withStartupTimeout(Duration.ofMinutes(1))) + // .yaml v2 <-> v3 + .withOptions("--compatibility") + // docker-compose local + .withLocalCompose(true); + + @DynamicPropertySource + public static void setting(DynamicPropertyRegistry registry) + throws UnsupportedEncodingException { + + registry.add("spring.datasource.driverClassName", () -> "org.postgresql.Driver"); + registry.add("spring.jpa.properties.hibernate.dialect", () -> "org.hibernate.dialect.PostgreSQLDialect"); + + String postgresqlStringConn = String.format( + "jdbc:postgresql://%s:%d/%s?user=%s&password=%s&escapeSyntaxCallMode=callIfNoReturn", + containersDockerCompose.getServiceHost(postgresqlUserDataContainerDockerCompose, + postgresqlUserDataPortDockerCompose), + containersDockerCompose.getServicePort(postgresqlUserDataContainerDockerCompose, + postgresqlUserDataPortDockerCompose), + postgresqlUserDataUserDockerCompose, + postgresqlUserDataUserDockerCompose, + postgresqlUserDataPassDockerCompose); + + registry.add("spring.datasource.url", () -> postgresqlStringConn); + + registry.add("application.ory-hydra.admin.baseURI", () -> ""); + registry.add("application.ory-hydra.public.baseURI", () -> ""); + } + + @Autowired + private UserService userService; + + @Test + @DisplayName("Successful user creation and attempt to re-create it") + void testCreateUser() { + // given (instead of when) + + final String login1 = "someuser1"; + final String login2 = "someuser2"; + + final String pass = "asdasfdasffsadfa"; + + final String org1 = "someorg1"; + final String org2 = "someorg2"; + + final PostRegistrationModel user1 = PostRegistrationModel + .builder() + .login(login1) + .password(pass) + .orgName(org1) + .build(); + + final PostRegistrationModel user2 = PostRegistrationModel + .builder() + .login(login1) + .password(pass) + .orgName(org2) + .build(); + + final PostRegistrationModel user3 = PostRegistrationModel + .builder() + .login(login2) + .password(pass) + .orgName(org1) + .build(); + + final PostRegistrationModel user4 = PostRegistrationModel + .builder() + .login(login2) + .password(pass) + .orgName(org2) + .build(); + + // when + StepVerifier + .create(userService.createUser(user1)) + .expectNextCount(1) + .verifyComplete(); + + StepVerifier + .create(userService.createUser(user2)) + .verifyError(); + + StepVerifier + .create(userService.createUser(user3)) + .verifyError(); + + StepVerifier + .create(userService.createUser(user4)) + .expectNextCount(1) + .verifyComplete(); + + // then (instead of verify) + + } + + @Test + @DisplayName("Check user") + void testGetUserAndCheck() { + + // given (instead of when) + + final String login1 = "someuser1_"; + final String login2 = "someuser2_"; + + final String pass1 = "zxcvxbxvvcxvxcvxcv"; + final String pass2 = "jdfglkvjbjbjbj"; + + final String org1 = "someorg1_"; + + final PostRegistrationModel user = PostRegistrationModel + .builder() + .login(login1) + .password(pass1) + .orgName(org1) + .build(); + + final User expectedUser = User.builder() + .login(login1) + .password("") + .orgName(org1) + .build(); + + StepVerifier + .create(userService.createUser(user)) + .expectNextCount(1) + .verifyComplete(); + + // when + + StepVerifier + .create(userService.getUserAndCheck(user.getLogin(), user.getPassword())) + .expectNext(expectedUser) + .verifyComplete(); + + StepVerifier + .create(userService.getUserAndCheck(login2, pass1)) + .verifyErrorMatches(ex -> ex instanceof LoginDoesNotExistException + && ex.getMessage().equals("login does not exist")); + + StepVerifier + .create(userService.getUserAndCheck(login1, pass2)) + .verifyErrorMatches(ex -> ex instanceof IncorrectPasswordException + && ex.getMessage().equals("Password is incorrect! ")); + + } + + @Test + @DisplayName("Get user") + void testGetUser() { + + // given (instead of when) + + final String login1 = "someuser1_czxc"; + final String login2 = "someuser2_czx"; + + final String pass1 = "zxcvxbxvvcxvxcvxcvccc"; + + final String org1 = "someorg1_adsad"; + + final PostRegistrationModel user = PostRegistrationModel + .builder() + .login(login1) + .password(pass1) + .orgName(org1) + .build(); + + final User expectedUser = User.builder() + .login(login1) + .password("") + .orgName(org1) + .build(); + + StepVerifier + .create(userService.createUser(user)) + .expectNextCount(1) + .verifyComplete(); + + // when + + StepVerifier + .create(userService.getUser(user.getLogin())) + .expectNext(expectedUser) + .verifyComplete(); + + StepVerifier + .create(userService.getUser(login2)) + .verifyErrorMatches(ex -> ex instanceof LoginDoesNotExistException + && ex.getMessage().equals("login does not exist")); + + } +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/resources/ory-hydra-open-api-v3.json b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/resources/ory-hydra-open-api-v3.json new file mode 100644 index 00000000..f812412d --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/src/test/resources/ory-hydra-open-api-v3.json @@ -0,0 +1,3689 @@ +{ + "components": { + "responses": { + "emptyResponse": { + "description": "Empty responses are sent when, for example, resources are deleted. The HTTP status code for empty responses is\ntypically 201." + }, + "errorOAuth2BadRequest": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "Bad Request Error Response" + }, + "errorOAuth2Default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "Default Error Response" + }, + "errorOAuth2NotFound": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "Not Found Error Response" + }, + "listOAuth2Clients": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/oAuth2Client" + }, + "type": "array" + } + } + }, + "description": "Paginated OAuth2 Client List Response" + } + }, + "schemas": { + "DefaultError": {}, + "JSONRawMessage": { + "title": "JSONRawMessage represents a json.RawMessage that works well with JSON, SQL, and Swagger." + }, + "NullBool": { + "nullable": true, + "type": "boolean" + }, + "NullDuration": { + "description": "Specify a time duration in milliseconds, seconds, minutes, hours.", + "pattern": "^([0-9]+(ns|us|ms|s|m|h))*$", + "title": "Time duration", + "type": "string" + }, + "NullInt": { + "nullable": true, + "type": "integer" + }, + "NullString": { + "nullable": true, + "type": "string" + }, + "NullTime": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "NullUUID": { + "format": "uuid4", + "nullable": true, + "type": "string" + }, + "StringSliceJSONFormat": { + "items": { + "type": "string" + }, + "title": "StringSliceJSONFormat represents []string{} which is encoded to/from JSON for SQL storage.", + "type": "array" + }, + "Time": { + "format": "date-time", + "type": "string" + }, + "UUID": { + "format": "uuid4", + "type": "string" + }, + "acceptOAuth2ConsentRequest": { + "properties": { + "grant_access_token_audience": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, + "grant_scope": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, + "handled_at": { + "$ref": "#/components/schemas/nullTime" + }, + "remember": { + "description": "Remember, if set to true, tells ORY Hydra to remember this consent authorization and reuse it if the same\nclient asks the same user for the same, or a subset of, scope.", + "type": "boolean" + }, + "remember_for": { + "description": "RememberFor sets how long the consent authorization should be remembered for in seconds. If set to `0`, the\nauthorization will be remembered indefinitely.", + "format": "int64", + "type": "integer" + }, + "session": { + "$ref": "#/components/schemas/acceptOAuth2ConsentRequestSession" + } + }, + "title": "The request payload used to accept a consent request.", + "type": "object" + }, + "acceptOAuth2ConsentRequestSession": { + "properties": { + "access_token": { + "description": "AccessToken sets session data for the access and refresh token, as well as any future tokens issued by the\nrefresh grant. Keep in mind that this data will be available to anyone performing OAuth 2.0 Challenge Introspection.\nIf only your services can perform OAuth 2.0 Challenge Introspection, this is usually fine. But if third parties\ncan access that endpoint as well, sensitive data from the session might be exposed to them. Use with care!" + }, + "id_token": { + "description": "IDToken sets session data for the OpenID Connect ID token. Keep in mind that the session'id payloads are readable\nby anyone that has access to the ID Challenge. Use with care!" + } + }, + "title": "Pass session data to a consent request.", + "type": "object" + }, + "acceptOAuth2LoginRequest": { + "properties": { + "acr": { + "description": "ACR sets the Authentication AuthorizationContext Class Reference value for this authentication session. You can use it\nto express that, for example, a user authenticated using two factor authentication.", + "type": "string" + }, + "amr": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, + "context": { + "$ref": "#/components/schemas/JSONRawMessage" + }, + "extend_session_lifespan": { + "description": "Extend OAuth2 authentication session lifespan\n\nIf set to `true`, the OAuth2 authentication cookie lifespan is extended. This is for example useful if you want the user to be able to use `prompt=none` continuously.\n\nThis value can only be set to `true` if the user has an authentication, which is the case if the `skip` value is `true`.", + "type": "boolean" + }, + "force_subject_identifier": { + "description": "ForceSubjectIdentifier forces the \"pairwise\" user ID of the end-user that authenticated. The \"pairwise\" user ID refers to the\n(Pairwise Identifier Algorithm)[http://openid.net/specs/openid-connect-core-1_0.html#PairwiseAlg] of the OpenID\nConnect specification. It allows you to set an obfuscated subject (\"user\") identifier that is unique to the client.\n\nPlease note that this changes the user ID on endpoint /userinfo and sub claim of the ID Token. It does not change the\nsub claim in the OAuth 2.0 Introspection.\n\nPer default, ORY Hydra handles this value with its own algorithm. In case you want to set this yourself\nyou can use this field. Please note that setting this field has no effect if `pairwise` is not configured in\nORY Hydra or the OAuth 2.0 Client does not expect a pairwise identifier (set via `subject_type` key in the client's\nconfiguration).\n\nPlease also be aware that ORY Hydra is unable to properly compute this value during authentication. This implies\nthat you have to compute this value on every authentication process (probably depending on the client ID or some\nother unique value).\n\nIf you fail to compute the proper value, then authentication processes which have id_token_hint set might fail.", + "type": "string" + }, + "remember": { + "description": "Remember, if set to true, tells ORY Hydra to remember this user by telling the user agent (browser) to store\na cookie with authentication data. If the same user performs another OAuth 2.0 Authorization Request, he/she\nwill not be asked to log in again.", + "type": "boolean" + }, + "remember_for": { + "description": "RememberFor sets how long the authentication should be remembered for in seconds. If set to `0`, the\nauthorization will be remembered for the duration of the browser session (using a session cookie).", + "format": "int64", + "type": "integer" + }, + "subject": { + "description": "Subject is the user ID of the end-user that authenticated.", + "type": "string" + } + }, + "required": [ + "subject" + ], + "title": "HandledLoginRequest is the request payload used to accept a login request.", + "type": "object" + }, + "createJsonWebKeySet": { + "description": "Create JSON Web Key Set Request Body", + "properties": { + "alg": { + "description": "JSON Web Key Algorithm\n\nThe algorithm to be used for creating the key. Supports `RS256`, `ES256`, `ES512`, `HS512`, and `HS256`.", + "type": "string" + }, + "kid": { + "description": "JSON Web Key ID\n\nThe Key ID of the key to be created.", + "type": "string" + }, + "use": { + "description": "JSON Web Key Use\n\nThe \"use\" (public key use) parameter identifies the intended use of\nthe public key. The \"use\" parameter is employed to indicate whether\na public key is used for encrypting data or verifying the signature\non data. Valid values are \"enc\" and \"sig\".", + "type": "string" + } + }, + "required": [ + "alg", + "use", + "kid" + ], + "type": "object" + }, + "errorOAuth2": { + "description": "Error", + "properties": { + "error": { + "description": "Error", + "type": "string" + }, + "error_debug": { + "description": "Error Debug Information\n\nOnly available in dev mode.", + "type": "string" + }, + "error_description": { + "description": "Error Description", + "type": "string" + }, + "error_hint": { + "description": "Error Hint\n\nHelps the user identify the error cause.", + "example": "The redirect URL is not allowed.", + "type": "string" + }, + "status_code": { + "description": "HTTP Status Code", + "example": 401, + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "genericError": { + "properties": { + "code": { + "description": "The status code", + "example": 404, + "format": "int64", + "type": "integer" + }, + "debug": { + "description": "Debug information\n\nThis field is often not exposed to protect against leaking\nsensitive information.", + "example": "SQL field \"foo\" is not a bool.", + "type": "string" + }, + "details": { + "description": "Further error details" + }, + "id": { + "description": "The error ID\n\nUseful when trying to identify various errors in application logic.", + "type": "string" + }, + "message": { + "description": "Error message\n\nThe error's message.", + "example": "The resource could not be found", + "type": "string" + }, + "reason": { + "description": "A human-readable reason for the error", + "example": "User with ID 1234 does not exist.", + "type": "string" + }, + "request": { + "description": "The request ID\n\nThe request ID is often exposed internally in order to trace\nerrors across service architectures. This is often a UUID.", + "example": "d7ef54b1-ec15-46e6-bccb-524b82c035e6", + "type": "string" + }, + "status": { + "description": "The status description", + "example": "Not Found", + "type": "string" + } + }, + "required": [ + "message" + ], + "type": "object" + }, + "healthNotReadyStatus": { + "properties": { + "errors": { + "additionalProperties": { + "type": "string" + }, + "description": "Errors contains a list of errors that caused the not ready status.", + "type": "object" + } + }, + "type": "object" + }, + "healthStatus": { + "properties": { + "status": { + "description": "Status always contains \"ok\".", + "type": "string" + } + }, + "type": "object" + }, + "introspectedOAuth2Token": { + "description": "Introspection contains an access token's session data as specified by\n[IETF RFC 7662](https://tools.ietf.org/html/rfc7662)", + "properties": { + "active": { + "description": "Active is a boolean indicator of whether or not the presented token\nis currently active. The specifics of a token's \"active\" state\nwill vary depending on the implementation of the authorization\nserver and the information it keeps about its tokens, but a \"true\"\nvalue return for the \"active\" property will generally indicate\nthat a given token has been issued by this authorization server,\nhas not been revoked by the resource owner, and is within its\ngiven time window of validity (e.g., after its issuance time and\nbefore its expiration time).", + "type": "boolean" + }, + "aud": { + "description": "Audience contains a list of the token's intended audiences.", + "items": { + "type": "string" + }, + "type": "array" + }, + "client_id": { + "description": "ID is aclient identifier for the OAuth 2.0 client that\nrequested this token.", + "type": "string" + }, + "exp": { + "description": "Expires at is an integer timestamp, measured in the number of seconds\nsince January 1 1970 UTC, indicating when this token will expire.", + "format": "int64", + "type": "integer" + }, + "ext": { + "additionalProperties": {}, + "description": "Extra is arbitrary data set by the session.", + "type": "object" + }, + "iat": { + "description": "Issued at is an integer timestamp, measured in the number of seconds\nsince January 1 1970 UTC, indicating when this token was\noriginally issued.", + "format": "int64", + "type": "integer" + }, + "iss": { + "description": "IssuerURL is a string representing the issuer of this token", + "type": "string" + }, + "nbf": { + "description": "NotBefore is an integer timestamp, measured in the number of seconds\nsince January 1 1970 UTC, indicating when this token is not to be\nused before.", + "format": "int64", + "type": "integer" + }, + "obfuscated_subject": { + "description": "ObfuscatedSubject is set when the subject identifier algorithm was set to \"pairwise\" during authorization.\nIt is the `sub` value of the ID Token that was issued.", + "type": "string" + }, + "scope": { + "description": "Scope is a JSON string containing a space-separated list of\nscopes associated with this token.", + "type": "string" + }, + "sub": { + "description": "Subject of the token, as defined in JWT [RFC7519].\nUsually a machine-readable identifier of the resource owner who\nauthorized this token.", + "type": "string" + }, + "token_type": { + "description": "TokenType is the introspected token's type, typically `Bearer`.", + "type": "string" + }, + "token_use": { + "description": "TokenUse is the introspected token's use, for example `access_token` or `refresh_token`.", + "type": "string" + }, + "username": { + "description": "Username is a human-readable identifier for the resource owner who\nauthorized this token.", + "type": "string" + } + }, + "required": [ + "active" + ], + "type": "object" + }, + "jsonPatch": { + "description": "A JSONPatch document as defined by RFC 6902", + "properties": { + "from": { + "description": "This field is used together with operation \"move\" and uses JSON Pointer notation.\n\nLearn more [about JSON Pointers](https://datatracker.ietf.org/doc/html/rfc6901#section-5).", + "example": "/name", + "type": "string" + }, + "op": { + "description": "The operation to be performed. One of \"add\", \"remove\", \"replace\", \"move\", \"copy\", or \"test\".", + "example": "replace", + "type": "string" + }, + "path": { + "description": "The path to the target path. Uses JSON pointer notation.\n\nLearn more [about JSON Pointers](https://datatracker.ietf.org/doc/html/rfc6901#section-5).", + "example": "/name", + "type": "string" + }, + "value": { + "description": "The value to be used within the operations.\n\nLearn more [about JSON Pointers](https://datatracker.ietf.org/doc/html/rfc6901#section-5).", + "example": "foobar" + } + }, + "required": [ + "op", + "path" + ], + "type": "object" + }, + "jsonPatchDocument": { + "description": "A JSONPatchDocument request", + "items": { + "$ref": "#/components/schemas/jsonPatch" + }, + "type": "array" + }, + "jsonWebKey": { + "properties": { + "alg": { + "description": "The \"alg\" (algorithm) parameter identifies the algorithm intended for\nuse with the key. The values used should either be registered in the\nIANA \"JSON Web Signature and Encryption Algorithms\" registry\nestablished by [JWA] or be a value that contains a Collision-\nResistant Name.", + "example": "RS256", + "type": "string" + }, + "crv": { + "example": "P-256", + "type": "string" + }, + "d": { + "example": "T_N8I-6He3M8a7X1vWt6TGIx4xB_GP3Mb4SsZSA4v-orvJzzRiQhLlRR81naWYxfQAYt5isDI6_C2L9bdWo4FFPjGQFvNoRX-_sBJyBI_rl-TBgsZYoUlAj3J92WmY2inbA-PwyJfsaIIDceYBC-eX-xiCu6qMqkZi3MwQAFL6bMdPEM0z4JBcwFT3VdiWAIRUuACWQwrXMq672x7fMuaIaHi7XDGgt1ith23CLfaREmJku9PQcchbt_uEY-hqrFY6ntTtS4paWWQj86xLL94S-Tf6v6xkL918PfLSOTq6XCzxvlFwzBJqApnAhbwqLjpPhgUG04EDRrqrSBc5Y1BLevn6Ip5h1AhessBp3wLkQgz_roeckt-ybvzKTjESMuagnpqLvOT7Y9veIug2MwPJZI2VjczRc1vzMs25XrFQ8DpUy-bNdp89TmvAXwctUMiJdgHloJw23Cv03gIUAkDnsTqZmkpbIf-crpgNKFmQP_EDKoe8p_PXZZgfbRri3NoEVGP7Mk6yEu8LjJhClhZaBNjuWw2-KlBfOA3g79mhfBnkInee5KO9mGR50qPk1V-MorUYNTFMZIm0kFE6eYVWFBwJHLKYhHU34DoiK1VP-svZpC2uAMFNA_UJEwM9CQ2b8qe4-5e9aywMvwcuArRkAB5mBIfOaOJao3mfukKAE", + "type": "string" + }, + "dp": { + "example": "G4sPXkc6Ya9y8oJW9_ILj4xuppu0lzi_H7VTkS8xj5SdX3coE0oimYwxIi2emTAue0UOa5dpgFGyBJ4c8tQ2VF402XRugKDTP8akYhFo5tAA77Qe_NmtuYZc3C3m3I24G2GvR5sSDxUyAN2zq8Lfn9EUms6rY3Ob8YeiKkTiBj0", + "type": "string" + }, + "dq": { + "example": "s9lAH9fggBsoFR8Oac2R_E2gw282rT2kGOAhvIllETE1efrA6huUUvMfBcMpn8lqeW6vzznYY5SSQF7pMdC_agI3nG8Ibp1BUb0JUiraRNqUfLhcQb_d9GF4Dh7e74WbRsobRonujTYN1xCaP6TO61jvWrX-L18txXw494Q_cgk", + "type": "string" + }, + "e": { + "example": "AQAB", + "type": "string" + }, + "k": { + "example": "GawgguFyGrWKav7AX4VKUg", + "type": "string" + }, + "kid": { + "description": "The \"kid\" (key ID) parameter is used to match a specific key. This\nis used, for instance, to choose among a set of keys within a JWK Set\nduring key rollover. The structure of the \"kid\" value is\nunspecified. When \"kid\" values are used within a JWK Set, different\nkeys within the JWK Set SHOULD use distinct \"kid\" values. (One\nexample in which different keys might use the same \"kid\" value is if\nthey have different \"kty\" (key type) values but are considered to be\nequivalent alternatives by the application using them.) The \"kid\"\nvalue is a case-sensitive string.", + "example": "1603dfe0af8f4596", + "type": "string" + }, + "kty": { + "description": "The \"kty\" (key type) parameter identifies the cryptographic algorithm\nfamily used with the key, such as \"RSA\" or \"EC\". \"kty\" values should\neither be registered in the IANA \"JSON Web Key Types\" registry\nestablished by [JWA] or be a value that contains a Collision-\nResistant Name. The \"kty\" value is a case-sensitive string.", + "example": "RSA", + "type": "string" + }, + "n": { + "example": "vTqrxUyQPl_20aqf5kXHwDZrel-KovIp8s7ewJod2EXHl8tWlRB3_Rem34KwBfqlKQGp1nqah-51H4Jzruqe0cFP58hPEIt6WqrvnmJCXxnNuIB53iX_uUUXXHDHBeaPCSRoNJzNysjoJ30TIUsKBiirhBa7f235PXbKiHducLevV6PcKxJ5cY8zO286qJLBWSPm-OIevwqsIsSIH44Qtm9sioFikhkbLwoqwWORGAY0nl6XvVOlhADdLjBSqSAeT1FPuCDCnXwzCDR8N9IFB_IjdStFkC-rVt2K5BYfPd0c3yFp_vHR15eRd0zJ8XQ7woBC8Vnsac6Et1pKS59pX6256DPWu8UDdEOolKAPgcd_g2NpA76cAaF_jcT80j9KrEzw8Tv0nJBGesuCjPNjGs_KzdkWTUXt23Hn9QJsdc1MZuaW0iqXBepHYfYoqNelzVte117t4BwVp0kUM6we0IqyXClaZgOI8S-WDBw2_Ovdm8e5NmhYAblEVoygcX8Y46oH6bKiaCQfKCFDMcRgChme7AoE1yZZYsPbaG_3IjPrC4LBMHQw8rM9dWjJ8ImjicvZ1pAm0dx-KHCP3y5PVKrxBDf1zSOsBRkOSjB8TPODnJMz6-jd5hTtZxpZPwPoIdCanTZ3ZD6uRBpTmDwtpRGm63UQs1m5FWPwb0T2IF0", + "type": "string" + }, + "p": { + "example": "6NbkXwDWUhi-eR55Cgbf27FkQDDWIamOaDr0rj1q0f1fFEz1W5A_09YvG09Fiv1AO2-D8Rl8gS1Vkz2i0zCSqnyy8A025XOcRviOMK7nIxE4OH_PEsko8dtIrb3TmE2hUXvCkmzw9EsTF1LQBOGC6iusLTXepIC1x9ukCKFZQvdgtEObQ5kzd9Nhq-cdqmSeMVLoxPLd1blviVT9Vm8-y12CtYpeJHOaIDtVPLlBhJiBoPKWg3vxSm4XxIliNOefqegIlsmTIa3MpS6WWlCK3yHhat0Q-rRxDxdyiVdG_wzJvp0Iw_2wms7pe-PgNPYvUWH9JphWP5K38YqEBiJFXQ", + "type": "string" + }, + "q": { + "example": "0A1FmpOWR91_RAWpqreWSavNaZb9nXeKiBo0DQGBz32DbqKqQ8S4aBJmbRhJcctjCLjain-ivut477tAUMmzJwVJDDq2MZFwC9Q-4VYZmFU4HJityQuSzHYe64RjN-E_NQ02TWhG3QGW6roq6c57c99rrUsETwJJiwS8M5p15Miuz53DaOjv-uqqFAFfywN5WkxHbraBcjHtMiQuyQbQqkCFh-oanHkwYNeytsNhTu2mQmwR5DR2roZ2nPiFjC6nsdk-A7E3S3wMzYYFw7jvbWWoYWo9vB40_MY2Y0FYQSqcDzcBIcq_0tnnasf3VW4Fdx6m80RzOb2Fsnln7vKXAQ", + "type": "string" + }, + "qi": { + "example": "GyM_p6JrXySiz1toFgKbWV-JdI3jQ4ypu9rbMWx3rQJBfmt0FoYzgUIZEVFEcOqwemRN81zoDAaa-Bk0KWNGDjJHZDdDmFhW3AN7lI-puxk_mHZGJ11rxyR8O55XLSe3SPmRfKwZI6yU24ZxvQKFYItdldUKGzO6Ia6zTKhAVRU", + "type": "string" + }, + "use": { + "description": "Use (\"public key use\") identifies the intended use of\nthe public key. The \"use\" parameter is employed to indicate whether\na public key is used for encrypting data or verifying the signature\non data. Values are commonly \"sig\" (signature) or \"enc\" (encryption).", + "example": "sig", + "type": "string" + }, + "x": { + "example": "f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU", + "type": "string" + }, + "x5c": { + "description": "The \"x5c\" (X.509 certificate chain) parameter contains a chain of one\nor more PKIX certificates [RFC5280]. The certificate chain is\nrepresented as a JSON array of certificate value strings. Each\nstring in the array is a base64-encoded (Section 4 of [RFC4648] --\nnot base64url-encoded) DER [ITU.X690.1994] PKIX certificate value.\nThe PKIX certificate containing the key value MUST be the first\ncertificate.", + "items": { + "type": "string" + }, + "type": "array" + }, + "y": { + "example": "x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0", + "type": "string" + } + }, + "required": [ + "use", + "kty", + "kid", + "alg" + ], + "type": "object" + }, + "jsonWebKeySet": { + "description": "JSON Web Key Set", + "properties": { + "keys": { + "description": "List of JSON Web Keys\n\nThe value of the \"keys\" parameter is an array of JSON Web Key (JWK)\nvalues. By default, the order of the JWK values within the array does\nnot imply an order of preference among them, although applications\nof JWK Sets can choose to assign a meaning to the order for their\npurposes, if desired.", + "items": { + "$ref": "#/components/schemas/jsonWebKey" + }, + "type": "array" + } + }, + "type": "object" + }, + "nullDuration": { + "nullable": true, + "pattern": "^[0-9]+(ns|us|ms|s|m|h)$", + "type": "string" + }, + "nullInt64": { + "nullable": true, + "type": "integer" + }, + "nullTime": { + "format": "date-time", + "title": "NullTime implements sql.NullTime functionality.", + "type": "string" + }, + "oAuth2Client": { + "description": "OAuth 2.0 Clients are used to perform OAuth 2.0 and OpenID Connect flows. Usually, OAuth 2.0 clients are\ngenerated for applications which want to consume your OAuth 2.0 or OpenID Connect capabilities.", + "properties": { + "access_token_strategy": { + "description": "OAuth 2.0 Access Token Strategy\n\nAccessTokenStrategy is the strategy used to generate access tokens.\nValid options are `jwt` and `opaque`. `jwt` is a bad idea, see https://www.ory.sh/docs/hydra/advanced#json-web-tokens\nSetting the stragegy here overrides the global setting in `strategies.access_token`.", + "type": "string" + }, + "allowed_cors_origins": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, + "audience": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, + "authorization_code_grant_access_token_lifespan": { + "$ref": "#/components/schemas/NullDuration" + }, + "authorization_code_grant_id_token_lifespan": { + "$ref": "#/components/schemas/NullDuration" + }, + "authorization_code_grant_refresh_token_lifespan": { + "$ref": "#/components/schemas/NullDuration" + }, + "backchannel_logout_session_required": { + "description": "OpenID Connect Back-Channel Logout Session Required\n\nBoolean value specifying whether the RP requires that a sid (session ID) Claim be included in the Logout\nToken to identify the RP session with the OP when the backchannel_logout_uri is used.\nIf omitted, the default value is false.", + "type": "boolean" + }, + "backchannel_logout_uri": { + "description": "OpenID Connect Back-Channel Logout URI\n\nRP URL that will cause the RP to log itself out when sent a Logout Token by the OP.", + "type": "string" + }, + "client_credentials_grant_access_token_lifespan": { + "$ref": "#/components/schemas/NullDuration" + }, + "client_id": { + "description": "OAuth 2.0 Client ID\n\nThe ID is autogenerated and immutable.", + "type": "string" + }, + "client_name": { + "description": "OAuth 2.0 Client Name\n\nThe human-readable name of the client to be presented to the\nend-user during authorization.", + "type": "string" + }, + "client_secret": { + "description": "OAuth 2.0 Client Secret\n\nThe secret will be included in the create request as cleartext, and then\nnever again. The secret is kept in hashed format and is not recoverable once lost.", + "type": "string" + }, + "client_secret_expires_at": { + "description": "OAuth 2.0 Client Secret Expires At\n\nThe field is currently not supported and its value is always 0.", + "format": "int64", + "type": "integer" + }, + "client_uri": { + "description": "OAuth 2.0 Client URI\n\nClientURI is a URL string of a web page providing information about the client.\nIf present, the server SHOULD display this URL to the end-user in\na clickable fashion.", + "type": "string" + }, + "contacts": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, + "created_at": { + "description": "OAuth 2.0 Client Creation Date\n\nCreatedAt returns the timestamp of the client's creation.", + "format": "date-time", + "type": "string" + }, + "frontchannel_logout_session_required": { + "description": "OpenID Connect Front-Channel Logout Session Required\n\nBoolean value specifying whether the RP requires that iss (issuer) and sid (session ID) query parameters be\nincluded to identify the RP session with the OP when the frontchannel_logout_uri is used.\nIf omitted, the default value is false.", + "type": "boolean" + }, + "frontchannel_logout_uri": { + "description": "OpenID Connect Front-Channel Logout URI\n\nRP URL that will cause the RP to log itself out when rendered in an iframe by the OP. An iss (issuer) query\nparameter and a sid (session ID) query parameter MAY be included by the OP to enable the RP to validate the\nrequest and to determine which of the potentially multiple sessions is to be logged out; if either is\nincluded, both MUST be.", + "type": "string" + }, + "grant_types": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, + "implicit_grant_access_token_lifespan": { + "$ref": "#/components/schemas/NullDuration" + }, + "implicit_grant_id_token_lifespan": { + "$ref": "#/components/schemas/NullDuration" + }, + "jwks": { + "description": "OAuth 2.0 Client JSON Web Key Set\n\nClient's JSON Web Key Set [JWK] document, passed by value. The semantics of the jwks parameter are the same as\nthe jwks_uri parameter, other than that the JWK Set is passed by value, rather than by reference. This parameter\nis intended only to be used by Clients that, for some reason, are unable to use the jwks_uri parameter, for\ninstance, by native applications that might not have a location to host the contents of the JWK Set. If a Client\ncan use jwks_uri, it MUST NOT use jwks. One significant downside of jwks is that it does not enable key rotation\n(which jwks_uri does, as described in Section 10 of OpenID Connect Core 1.0 [OpenID.Core]). The jwks_uri and jwks\nparameters MUST NOT be used together." + }, + "jwks_uri": { + "description": "OAuth 2.0 Client JSON Web Key Set URL\n\nURL for the Client's JSON Web Key Set [JWK] document. If the Client signs requests to the Server, it contains\nthe signing key(s) the Server uses to validate signatures from the Client. The JWK Set MAY also contain the\nClient's encryption keys(s), which are used by the Server to encrypt responses to the Client. When both signing\nand encryption keys are made available, a use (Key Use) parameter value is REQUIRED for all keys in the referenced\nJWK Set to indicate each key's intended usage. Although some algorithms allow the same key to be used for both\nsignatures and encryption, doing so is NOT RECOMMENDED, as it is less secure. The JWK x5c parameter MAY be used\nto provide X.509 representations of keys provided. When used, the bare key values MUST still be present and MUST\nmatch those in the certificate.", + "type": "string" + }, + "jwt_bearer_grant_access_token_lifespan": { + "$ref": "#/components/schemas/NullDuration" + }, + "logo_uri": { + "description": "OAuth 2.0 Client Logo URI\n\nA URL string referencing the client's logo.", + "type": "string" + }, + "metadata": { + "$ref": "#/components/schemas/JSONRawMessage" + }, + "owner": { + "description": "OAuth 2.0 Client Owner\n\nOwner is a string identifying the owner of the OAuth 2.0 Client.", + "type": "string" + }, + "policy_uri": { + "description": "OAuth 2.0 Client Policy URI\n\nPolicyURI is a URL string that points to a human-readable privacy policy document\nthat describes how the deployment organization collects, uses,\nretains, and discloses personal data.", + "type": "string" + }, + "post_logout_redirect_uris": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, + "redirect_uris": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, + "refresh_token_grant_access_token_lifespan": { + "$ref": "#/components/schemas/NullDuration" + }, + "refresh_token_grant_id_token_lifespan": { + "$ref": "#/components/schemas/NullDuration" + }, + "refresh_token_grant_refresh_token_lifespan": { + "$ref": "#/components/schemas/NullDuration" + }, + "registration_access_token": { + "description": "OpenID Connect Dynamic Client Registration Access Token\n\nRegistrationAccessToken can be used to update, get, or delete the OAuth2 Client. It is sent when creating a client\nusing Dynamic Client Registration.", + "type": "string" + }, + "registration_client_uri": { + "description": "OpenID Connect Dynamic Client Registration URL\n\nRegistrationClientURI is the URL used to update, get, or delete the OAuth2 Client.", + "type": "string" + }, + "request_object_signing_alg": { + "description": "OpenID Connect Request Object Signing Algorithm\n\nJWS [JWS] alg algorithm [JWA] that MUST be used for signing Request Objects sent to the OP. All Request Objects\nfrom this Client MUST be rejected, if not signed with this algorithm.", + "type": "string" + }, + "request_uris": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, + "response_types": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, + "scope": { + "description": "OAuth 2.0 Client Scope\n\nScope is a string containing a space-separated list of scope values (as\ndescribed in Section 3.3 of OAuth 2.0 [RFC6749]) that the client\ncan use when requesting access tokens.", + "example": "scope1 scope-2 scope.3 scope:4", + "type": "string" + }, + "sector_identifier_uri": { + "description": "OpenID Connect Sector Identifier URI\n\nURL using the https scheme to be used in calculating Pseudonymous Identifiers by the OP. The URL references a\nfile with a single JSON array of redirect_uri values.", + "type": "string" + }, + "skip_consent": { + "description": "SkipConsent skips the consent screen for this client. This field can only\nbe set from the admin API.", + "type": "boolean" + }, + "subject_type": { + "description": "OpenID Connect Subject Type\n\nThe `subject_types_supported` Discovery parameter contains a\nlist of the supported subject_type values for this server. Valid types include `pairwise` and `public`.", + "type": "string" + }, + "token_endpoint_auth_method": { + "default": "client_secret_basic", + "description": "OAuth 2.0 Token Endpoint Authentication Method\n\nRequested Client Authentication method for the Token Endpoint. The options are:\n\n`client_secret_basic`: (default) Send `client_id` and `client_secret` as `application/x-www-form-urlencoded` encoded in the HTTP Authorization header.\n`client_secret_post`: Send `client_id` and `client_secret` as `application/x-www-form-urlencoded` in the HTTP body.\n`private_key_jwt`: Use JSON Web Tokens to authenticate the client.\n`none`: Used for public clients (native apps, mobile apps) which can not have secrets.", + "type": "string" + }, + "token_endpoint_auth_signing_alg": { + "description": "OAuth 2.0 Token Endpoint Signing Algorithm\n\nRequested Client Authentication signing algorithm for the Token Endpoint.", + "type": "string" + }, + "tos_uri": { + "description": "OAuth 2.0 Client Terms of Service URI\n\nA URL string pointing to a human-readable terms of service\ndocument for the client that describes a contractual relationship\nbetween the end-user and the client that the end-user accepts when\nauthorizing the client.", + "type": "string" + }, + "updated_at": { + "description": "OAuth 2.0 Client Last Update Date\n\nUpdatedAt returns the timestamp of the last update.", + "format": "date-time", + "type": "string" + }, + "userinfo_signed_response_alg": { + "description": "OpenID Connect Request Userinfo Signed Response Algorithm\n\nJWS alg algorithm [JWA] REQUIRED for signing UserInfo Responses. If this is specified, the response will be JWT\n[JWT] serialized, and signed using JWS. The default, if omitted, is for the UserInfo Response to return the Claims\nas a UTF-8 encoded JSON object using the application/json content-type.", + "type": "string" + } + }, + "title": "OAuth 2.0 Client", + "type": "object" + }, + "oAuth2ClientTokenLifespans": { + "description": "Lifespans of different token types issued for this OAuth 2.0 Client.", + "properties": { + "authorization_code_grant_access_token_lifespan": { + "$ref": "#/components/schemas/NullDuration" + }, + "authorization_code_grant_id_token_lifespan": { + "$ref": "#/components/schemas/NullDuration" + }, + "authorization_code_grant_refresh_token_lifespan": { + "$ref": "#/components/schemas/NullDuration" + }, + "client_credentials_grant_access_token_lifespan": { + "$ref": "#/components/schemas/NullDuration" + }, + "implicit_grant_access_token_lifespan": { + "$ref": "#/components/schemas/NullDuration" + }, + "implicit_grant_id_token_lifespan": { + "$ref": "#/components/schemas/NullDuration" + }, + "jwt_bearer_grant_access_token_lifespan": { + "$ref": "#/components/schemas/NullDuration" + }, + "refresh_token_grant_access_token_lifespan": { + "$ref": "#/components/schemas/NullDuration" + }, + "refresh_token_grant_id_token_lifespan": { + "$ref": "#/components/schemas/NullDuration" + }, + "refresh_token_grant_refresh_token_lifespan": { + "$ref": "#/components/schemas/NullDuration" + } + }, + "title": "OAuth 2.0 Client Token Lifespans", + "type": "object" + }, + "oAuth2ConsentRequest": { + "properties": { + "acr": { + "description": "ACR represents the Authentication AuthorizationContext Class Reference value for this authentication session. You can use it\nto express that, for example, a user authenticated using two factor authentication.", + "type": "string" + }, + "amr": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, + "challenge": { + "description": "ID is the identifier (\"authorization challenge\") of the consent authorization request. It is used to\nidentify the session.", + "type": "string" + }, + "client": { + "$ref": "#/components/schemas/oAuth2Client" + }, + "context": { + "$ref": "#/components/schemas/JSONRawMessage" + }, + "login_challenge": { + "description": "LoginChallenge is the login challenge this consent challenge belongs to. It can be used to associate\na login and consent request in the login & consent app.", + "type": "string" + }, + "login_session_id": { + "description": "LoginSessionID is the login session ID. If the user-agent reuses a login session (via cookie / remember flag)\nthis ID will remain the same. If the user-agent did not have an existing authentication session (e.g. remember is false)\nthis will be a new random value. This value is used as the \"sid\" parameter in the ID Token and in OIDC Front-/Back-\nchannel logout. It's value can generally be used to associate consecutive login requests by a certain user.", + "type": "string" + }, + "oidc_context": { + "$ref": "#/components/schemas/oAuth2ConsentRequestOpenIDConnectContext" + }, + "request_url": { + "description": "RequestURL is the original OAuth 2.0 Authorization URL requested by the OAuth 2.0 client. It is the URL which\ninitiates the OAuth 2.0 Authorization Code or OAuth 2.0 Implicit flow. This URL is typically not needed, but\nmight come in handy if you want to deal with additional request parameters.", + "type": "string" + }, + "requested_access_token_audience": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, + "requested_scope": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, + "skip": { + "description": "Skip, if true, implies that the client has requested the same scopes from the same user previously.\nIf true, you must not ask the user to grant the requested scopes. You must however either allow or deny the\nconsent request using the usual API call.", + "type": "boolean" + }, + "subject": { + "description": "Subject is the user ID of the end-user that authenticated. Now, that end user needs to grant or deny the scope\nrequested by the OAuth 2.0 client.", + "type": "string" + } + }, + "required": [ + "challenge" + ], + "title": "Contains information on an ongoing consent request.", + "type": "object" + }, + "oAuth2ConsentRequestOpenIDConnectContext": { + "properties": { + "acr_values": { + "description": "ACRValues is the Authentication AuthorizationContext Class Reference requested in the OAuth 2.0 Authorization request.\nIt is a parameter defined by OpenID Connect and expresses which level of authentication (e.g. 2FA) is required.\n\nOpenID Connect defines it as follows:\n> Requested Authentication AuthorizationContext Class Reference values. Space-separated string that specifies the acr values\nthat the Authorization Server is being requested to use for processing this Authentication Request, with the\nvalues appearing in order of preference. The Authentication AuthorizationContext Class satisfied by the authentication\nperformed is returned as the acr Claim Value, as specified in Section 2. The acr Claim is requested as a\nVoluntary Claim by this parameter.", + "items": { + "type": "string" + }, + "type": "array" + }, + "display": { + "description": "Display is a string value that specifies how the Authorization Server displays the authentication and consent user interface pages to the End-User.\nThe defined values are:\npage: The Authorization Server SHOULD display the authentication and consent UI consistent with a full User Agent page view. If the display parameter is not specified, this is the default display mode.\npopup: The Authorization Server SHOULD display the authentication and consent UI consistent with a popup User Agent window. The popup User Agent window should be of an appropriate size for a login-focused dialog and should not obscure the entire window that it is popping up over.\ntouch: The Authorization Server SHOULD display the authentication and consent UI consistent with a device that leverages a touch interface.\nwap: The Authorization Server SHOULD display the authentication and consent UI consistent with a \"feature phone\" type display.\n\nThe Authorization Server MAY also attempt to detect the capabilities of the User Agent and present an appropriate display.", + "type": "string" + }, + "id_token_hint_claims": { + "additionalProperties": {}, + "description": "IDTokenHintClaims are the claims of the ID Token previously issued by the Authorization Server being passed as a hint about the\nEnd-User's current or past authenticated session with the Client.", + "type": "object" + }, + "login_hint": { + "description": "LoginHint hints about the login identifier the End-User might use to log in (if necessary).\nThis hint can be used by an RP if it first asks the End-User for their e-mail address (or other identifier)\nand then wants to pass that value as a hint to the discovered authorization service. This value MAY also be a\nphone number in the format specified for the phone_number Claim. The use of this parameter is optional.", + "type": "string" + }, + "ui_locales": { + "description": "UILocales is the End-User'id preferred languages and scripts for the user interface, represented as a\nspace-separated list of BCP47 [RFC5646] language tag values, ordered by preference. For instance, the value\n\"fr-CA fr en\" represents a preference for French as spoken in Canada, then French (without a region designation),\nfollowed by English (without a region designation). An error SHOULD NOT result if some or all of the requested\nlocales are not supported by the OpenID Provider.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "title": "Contains optional information about the OpenID Connect request.", + "type": "object" + }, + "oAuth2ConsentSession": { + "description": "A completed OAuth 2.0 Consent Session.", + "properties": { + "consent_request": { + "$ref": "#/components/schemas/oAuth2ConsentRequest" + }, + "expires_at": { + "properties": { + "access_token": { + "format": "date-time", + "type": "string" + }, + "authorize_code": { + "format": "date-time", + "type": "string" + }, + "id_token": { + "format": "date-time", + "type": "string" + }, + "par_context": { + "format": "date-time", + "type": "string" + }, + "refresh_token": { + "format": "date-time", + "type": "string" + } + }, + "type": "object" + }, + "grant_access_token_audience": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, + "grant_scope": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, + "handled_at": { + "$ref": "#/components/schemas/nullTime" + }, + "remember": { + "description": "Remember Consent\n\nRemember, if set to true, tells ORY Hydra to remember this consent authorization and reuse it if the same\nclient asks the same user for the same, or a subset of, scope.", + "type": "boolean" + }, + "remember_for": { + "description": "Remember Consent For\n\nRememberFor sets how long the consent authorization should be remembered for in seconds. If set to `0`, the\nauthorization will be remembered indefinitely.", + "format": "int64", + "type": "integer" + }, + "session": { + "$ref": "#/components/schemas/acceptOAuth2ConsentRequestSession" + } + }, + "title": "OAuth 2.0 Consent Session", + "type": "object" + }, + "oAuth2ConsentSessions": { + "description": "List of OAuth 2.0 Consent Sessions", + "items": { + "$ref": "#/components/schemas/oAuth2ConsentSession" + }, + "type": "array" + }, + "oAuth2LoginRequest": { + "properties": { + "challenge": { + "description": "ID is the identifier (\"login challenge\") of the login request. It is used to\nidentify the session.", + "type": "string" + }, + "client": { + "$ref": "#/components/schemas/oAuth2Client" + }, + "oidc_context": { + "$ref": "#/components/schemas/oAuth2ConsentRequestOpenIDConnectContext" + }, + "request_url": { + "description": "RequestURL is the original OAuth 2.0 Authorization URL requested by the OAuth 2.0 client. It is the URL which\ninitiates the OAuth 2.0 Authorization Code or OAuth 2.0 Implicit flow. This URL is typically not needed, but\nmight come in handy if you want to deal with additional request parameters.", + "type": "string" + }, + "requested_access_token_audience": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, + "requested_scope": { + "$ref": "#/components/schemas/StringSliceJSONFormat" + }, + "session_id": { + "description": "SessionID is the login session ID. If the user-agent reuses a login session (via cookie / remember flag)\nthis ID will remain the same. If the user-agent did not have an existing authentication session (e.g. remember is false)\nthis will be a new random value. This value is used as the \"sid\" parameter in the ID Token and in OIDC Front-/Back-\nchannel logout. It's value can generally be used to associate consecutive login requests by a certain user.", + "type": "string" + }, + "skip": { + "description": "Skip, if true, implies that the client has requested the same scopes from the same user previously.\nIf true, you can skip asking the user to grant the requested scopes, and simply forward the user to the redirect URL.\n\nThis feature allows you to update / set session information.", + "type": "boolean" + }, + "subject": { + "description": "Subject is the user ID of the end-user that authenticated. Now, that end user needs to grant or deny the scope\nrequested by the OAuth 2.0 client. If this value is set and `skip` is true, you MUST include this subject type\nwhen accepting the login request, or the request will fail.", + "type": "string" + } + }, + "required": [ + "challenge", + "requested_scope", + "requested_access_token_audience", + "skip", + "subject", + "client", + "request_url" + ], + "title": "Contains information on an ongoing login request.", + "type": "object" + }, + "oAuth2LogoutRequest": { + "properties": { + "challenge": { + "description": "Challenge is the identifier (\"logout challenge\") of the logout authentication request. It is used to\nidentify the session.", + "type": "string" + }, + "client": { + "$ref": "#/components/schemas/oAuth2Client" + }, + "request_url": { + "description": "RequestURL is the original Logout URL requested.", + "type": "string" + }, + "rp_initiated": { + "description": "RPInitiated is set to true if the request was initiated by a Relying Party (RP), also known as an OAuth 2.0 Client.", + "type": "boolean" + }, + "sid": { + "description": "SessionID is the login session ID that was requested to log out.", + "type": "string" + }, + "subject": { + "description": "Subject is the user for whom the logout was request.", + "type": "string" + } + }, + "title": "Contains information about an ongoing logout request.", + "type": "object" + }, + "oAuth2RedirectTo": { + "description": "Contains a redirect URL used to complete a login, consent, or logout request.", + "properties": { + "redirect_to": { + "description": "RedirectURL is the URL which you should redirect the user's browser to once the authentication process is completed.", + "type": "string" + } + }, + "required": [ + "redirect_to" + ], + "title": "OAuth 2.0 Redirect Browser To", + "type": "object" + }, + "oAuth2TokenExchange": { + "description": "OAuth2 Token Exchange Result", + "properties": { + "access_token": { + "description": "The access token issued by the authorization server.", + "type": "string" + }, + "expires_in": { + "description": "The lifetime in seconds of the access token. For\nexample, the value \"3600\" denotes that the access token will\nexpire in one hour from the time the response was generated.", + "format": "int64", + "type": "integer" + }, + "id_token": { + "description": "To retrieve a refresh token request the id_token scope.", + "format": "int64", + "type": "integer" + }, + "refresh_token": { + "description": "The refresh token, which can be used to obtain new\naccess tokens. To retrieve it add the scope \"offline\" to your access token request.", + "type": "string" + }, + "scope": { + "description": "The scope of the access token", + "type": "string" + }, + "token_type": { + "description": "The type of the token issued", + "type": "string" + } + }, + "type": "object" + }, + "oidcConfiguration": { + "description": "Includes links to several endpoints (for example `/oauth2/token`) and exposes information on supported signature algorithms\namong others.", + "properties": { + "authorization_endpoint": { + "description": "OAuth 2.0 Authorization Endpoint URL", + "example": "https://playground.ory.sh/ory-hydra/public/oauth2/auth", + "type": "string" + }, + "backchannel_logout_session_supported": { + "description": "OpenID Connect Back-Channel Logout Session Required\n\nBoolean value specifying whether the OP can pass a sid (session ID) Claim in the Logout Token to identify the RP\nsession with the OP. If supported, the sid Claim is also included in ID Tokens issued by the OP", + "type": "boolean" + }, + "backchannel_logout_supported": { + "description": "OpenID Connect Back-Channel Logout Supported\n\nBoolean value specifying whether the OP supports back-channel logout, with true indicating support.", + "type": "boolean" + }, + "claims_parameter_supported": { + "description": "OpenID Connect Claims Parameter Parameter Supported\n\nBoolean value specifying whether the OP supports use of the claims parameter, with true indicating support.", + "type": "boolean" + }, + "claims_supported": { + "description": "OpenID Connect Supported Claims\n\nJSON array containing a list of the Claim Names of the Claims that the OpenID Provider MAY be able to supply\nvalues for. Note that for privacy or other reasons, this might not be an exhaustive list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "code_challenge_methods_supported": { + "description": "OAuth 2.0 PKCE Supported Code Challenge Methods\n\nJSON array containing a list of Proof Key for Code Exchange (PKCE) [RFC7636] code challenge methods supported\nby this authorization server.", + "items": { + "type": "string" + }, + "type": "array" + }, + "end_session_endpoint": { + "description": "OpenID Connect End-Session Endpoint\n\nURL at the OP to which an RP can perform a redirect to request that the End-User be logged out at the OP.", + "type": "string" + }, + "frontchannel_logout_session_supported": { + "description": "OpenID Connect Front-Channel Logout Session Required\n\nBoolean value specifying whether the OP can pass iss (issuer) and sid (session ID) query parameters to identify\nthe RP session with the OP when the frontchannel_logout_uri is used. If supported, the sid Claim is also\nincluded in ID Tokens issued by the OP.", + "type": "boolean" + }, + "frontchannel_logout_supported": { + "description": "OpenID Connect Front-Channel Logout Supported\n\nBoolean value specifying whether the OP supports HTTP-based logout, with true indicating support.", + "type": "boolean" + }, + "grant_types_supported": { + "description": "OAuth 2.0 Supported Grant Types\n\nJSON array containing a list of the OAuth 2.0 Grant Type values that this OP supports.", + "items": { + "type": "string" + }, + "type": "array" + }, + "id_token_signed_response_alg": { + "description": "OpenID Connect Default ID Token Signing Algorithms\n\nAlgorithm used to sign OpenID Connect ID Tokens.", + "items": { + "type": "string" + }, + "type": "array" + }, + "id_token_signing_alg_values_supported": { + "description": "OpenID Connect Supported ID Token Signing Algorithms\n\nJSON array containing a list of the JWS signing algorithms (alg values) supported by the OP for the ID Token\nto encode the Claims in a JWT.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "OpenID Connect Issuer URL\n\nAn URL using the https scheme with no query or fragment component that the OP asserts as its IssuerURL Identifier.\nIf IssuerURL discovery is supported , this value MUST be identical to the issuer value returned\nby WebFinger. This also MUST be identical to the iss Claim value in ID Tokens issued from this IssuerURL.", + "example": "https://playground.ory.sh/ory-hydra/public/", + "type": "string" + }, + "jwks_uri": { + "description": "OpenID Connect Well-Known JSON Web Keys URL\n\nURL of the OP's JSON Web Key Set [JWK] document. This contains the signing key(s) the RP uses to validate\nsignatures from the OP. The JWK Set MAY also contain the Server's encryption key(s), which are used by RPs\nto encrypt requests to the Server. When both signing and encryption keys are made available, a use (Key Use)\nparameter value is REQUIRED for all keys in the referenced JWK Set to indicate each key's intended usage.\nAlthough some algorithms allow the same key to be used for both signatures and encryption, doing so is\nNOT RECOMMENDED, as it is less secure. The JWK x5c parameter MAY be used to provide X.509 representations of\nkeys provided. When used, the bare key values MUST still be present and MUST match those in the certificate.", + "example": "https://{slug}.projects.oryapis.com/.well-known/jwks.json", + "type": "string" + }, + "registration_endpoint": { + "description": "OpenID Connect Dynamic Client Registration Endpoint URL", + "example": "https://playground.ory.sh/ory-hydra/admin/client", + "type": "string" + }, + "request_object_signing_alg_values_supported": { + "description": "OpenID Connect Supported Request Object Signing Algorithms\n\nJSON array containing a list of the JWS signing algorithms (alg values) supported by the OP for Request Objects,\nwhich are described in Section 6.1 of OpenID Connect Core 1.0 [OpenID.Core]. These algorithms are used both when\nthe Request Object is passed by value (using the request parameter) and when it is passed by reference\n(using the request_uri parameter).", + "items": { + "type": "string" + }, + "type": "array" + }, + "request_parameter_supported": { + "description": "OpenID Connect Request Parameter Supported\n\nBoolean value specifying whether the OP supports use of the request parameter, with true indicating support.", + "type": "boolean" + }, + "request_uri_parameter_supported": { + "description": "OpenID Connect Request URI Parameter Supported\n\nBoolean value specifying whether the OP supports use of the request_uri parameter, with true indicating support.", + "type": "boolean" + }, + "require_request_uri_registration": { + "description": "OpenID Connect Requires Request URI Registration\n\nBoolean value specifying whether the OP requires any request_uri values used to be pre-registered\nusing the request_uris registration parameter.", + "type": "boolean" + }, + "response_modes_supported": { + "description": "OAuth 2.0 Supported Response Modes\n\nJSON array containing a list of the OAuth 2.0 response_mode values that this OP supports.", + "items": { + "type": "string" + }, + "type": "array" + }, + "response_types_supported": { + "description": "OAuth 2.0 Supported Response Types\n\nJSON array containing a list of the OAuth 2.0 response_type values that this OP supports. Dynamic OpenID\nProviders MUST support the code, id_token, and the token id_token Response Type values.", + "items": { + "type": "string" + }, + "type": "array" + }, + "revocation_endpoint": { + "description": "OAuth 2.0 Token Revocation URL\n\nURL of the authorization server's OAuth 2.0 revocation endpoint.", + "type": "string" + }, + "scopes_supported": { + "description": "OAuth 2.0 Supported Scope Values\n\nJSON array containing a list of the OAuth 2.0 [RFC6749] scope values that this server supports. The server MUST\nsupport the openid scope value. Servers MAY choose not to advertise some supported scope values even when this parameter is used", + "items": { + "type": "string" + }, + "type": "array" + }, + "subject_types_supported": { + "description": "OpenID Connect Supported Subject Types\n\nJSON array containing a list of the Subject Identifier types that this OP supports. Valid types include\npairwise and public.", + "items": { + "type": "string" + }, + "type": "array" + }, + "token_endpoint": { + "description": "OAuth 2.0 Token Endpoint URL", + "example": "https://playground.ory.sh/ory-hydra/public/oauth2/token", + "type": "string" + }, + "token_endpoint_auth_methods_supported": { + "description": "OAuth 2.0 Supported Client Authentication Methods\n\nJSON array containing a list of Client Authentication methods supported by this Token Endpoint. The options are\nclient_secret_post, client_secret_basic, client_secret_jwt, and private_key_jwt, as described in Section 9 of OpenID Connect Core 1.0", + "items": { + "type": "string" + }, + "type": "array" + }, + "userinfo_endpoint": { + "description": "OpenID Connect Userinfo URL\n\nURL of the OP's UserInfo Endpoint.", + "type": "string" + }, + "userinfo_signed_response_alg": { + "description": "OpenID Connect User Userinfo Signing Algorithm\n\nAlgorithm used to sign OpenID Connect Userinfo Responses.", + "items": { + "type": "string" + }, + "type": "array" + }, + "userinfo_signing_alg_values_supported": { + "description": "OpenID Connect Supported Userinfo Signing Algorithm\n\nJSON array containing a list of the JWS [JWS] signing algorithms (alg values) [JWA] supported by the UserInfo Endpoint to encode the Claims in a JWT [JWT].", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "issuer", + "authorization_endpoint", + "token_endpoint", + "jwks_uri", + "subject_types_supported", + "response_types_supported", + "id_token_signing_alg_values_supported", + "id_token_signed_response_alg", + "userinfo_signed_response_alg" + ], + "title": "OpenID Connect Discovery Metadata", + "type": "object" + }, + "oidcUserInfo": { + "description": "OpenID Connect Userinfo", + "properties": { + "birthdate": { + "description": "End-User's birthday, represented as an ISO 8601:2004 [ISO8601‑2004] YYYY-MM-DD format. The year MAY be 0000, indicating that it is omitted. To represent only the year, YYYY format is allowed. Note that depending on the underlying platform's date related function, providing just year can result in varying month and day, so the implementers need to take this factor into account to correctly process the dates.", + "type": "string" + }, + "email": { + "description": "End-User's preferred e-mail address. Its value MUST conform to the RFC 5322 [RFC5322] addr-spec syntax. The RP MUST NOT rely upon this value being unique, as discussed in Section 5.7.", + "type": "string" + }, + "email_verified": { + "description": "True if the End-User's e-mail address has been verified; otherwise false. When this Claim Value is true, this means that the OP took affirmative steps to ensure that this e-mail address was controlled by the End-User at the time the verification was performed. The means by which an e-mail address is verified is context-specific, and dependent upon the trust framework or contractual agreements within which the parties are operating.", + "type": "boolean" + }, + "family_name": { + "description": "Surname(s) or last name(s) of the End-User. Note that in some cultures, people can have multiple family names or no family name; all can be present, with the names being separated by space characters.", + "type": "string" + }, + "gender": { + "description": "End-User's gender. Values defined by this specification are female and male. Other values MAY be used when neither of the defined values are applicable.", + "type": "string" + }, + "given_name": { + "description": "Given name(s) or first name(s) of the End-User. Note that in some cultures, people can have multiple given names; all can be present, with the names being separated by space characters.", + "type": "string" + }, + "locale": { + "description": "End-User's locale, represented as a BCP47 [RFC5646] language tag. This is typically an ISO 639-1 Alpha-2 [ISO639‑1] language code in lowercase and an ISO 3166-1 Alpha-2 [ISO3166‑1] country code in uppercase, separated by a dash. For example, en-US or fr-CA. As a compatibility note, some implementations have used an underscore as the separator rather than a dash, for example, en_US; Relying Parties MAY choose to accept this locale syntax as well.", + "type": "string" + }, + "middle_name": { + "description": "Middle name(s) of the End-User. Note that in some cultures, people can have multiple middle names; all can be present, with the names being separated by space characters. Also note that in some cultures, middle names are not used.", + "type": "string" + }, + "name": { + "description": "End-User's full name in displayable form including all name parts, possibly including titles and suffixes, ordered according to the End-User's locale and preferences.", + "type": "string" + }, + "nickname": { + "description": "Casual name of the End-User that may or may not be the same as the given_name. For instance, a nickname value of Mike might be returned alongside a given_name value of Michael.", + "type": "string" + }, + "phone_number": { + "description": "End-User's preferred telephone number. E.164 [E.164] is RECOMMENDED as the format of this Claim, for example, +1 (425) 555-1212 or +56 (2) 687 2400. If the phone number contains an extension, it is RECOMMENDED that the extension be represented using the RFC 3966 [RFC3966] extension syntax, for example, +1 (604) 555-1234;ext=5678.", + "type": "string" + }, + "phone_number_verified": { + "description": "True if the End-User's phone number has been verified; otherwise false. When this Claim Value is true, this means that the OP took affirmative steps to ensure that this phone number was controlled by the End-User at the time the verification was performed. The means by which a phone number is verified is context-specific, and dependent upon the trust framework or contractual agreements within which the parties are operating. When true, the phone_number Claim MUST be in E.164 format and any extensions MUST be represented in RFC 3966 format.", + "type": "boolean" + }, + "picture": { + "description": "URL of the End-User's profile picture. This URL MUST refer to an image file (for example, a PNG, JPEG, or GIF image file), rather than to a Web page containing an image. Note that this URL SHOULD specifically reference a profile photo of the End-User suitable for displaying when describing the End-User, rather than an arbitrary photo taken by the End-User.", + "type": "string" + }, + "preferred_username": { + "description": "Non-unique shorthand name by which the End-User wishes to be referred to at the RP, such as janedoe or j.doe. This value MAY be any valid JSON string including special characters such as @, /, or whitespace.", + "type": "string" + }, + "profile": { + "description": "URL of the End-User's profile page. The contents of this Web page SHOULD be about the End-User.", + "type": "string" + }, + "sub": { + "description": "Subject - Identifier for the End-User at the IssuerURL.", + "type": "string" + }, + "updated_at": { + "description": "Time the End-User's information was last updated. Its value is a JSON number representing the number of seconds from 1970-01-01T0:0:0Z as measured in UTC until the date/time.", + "format": "int64", + "type": "integer" + }, + "website": { + "description": "URL of the End-User's Web page or blog. This Web page SHOULD contain information published by the End-User or an organization that the End-User is affiliated with.", + "type": "string" + }, + "zoneinfo": { + "description": "String from zoneinfo [zoneinfo] time zone database representing the End-User's time zone. For example, Europe/Paris or America/Los_Angeles.", + "type": "string" + } + }, + "type": "object" + }, + "pagination": { + "properties": { + "page_size": { + "default": 250, + "description": "Items per page\n\nThis is the number of items per page to return.\nFor details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).", + "format": "int64", + "maximum": 1000, + "minimum": 1, + "type": "integer" + }, + "page_token": { + "default": "1", + "description": "Next Page Token\n\nThe next page token.\nFor details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).", + "minimum": 1, + "type": "string" + } + }, + "type": "object" + }, + "paginationHeaders": { + "properties": { + "link": { + "description": "The link header contains pagination links.\n\nFor details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).\n\nin: header", + "type": "string" + }, + "x-total-count": { + "description": "The total number of clients.\n\nin: header", + "type": "string" + } + }, + "type": "object" + }, + "rejectOAuth2Request": { + "properties": { + "error": { + "description": "The error should follow the OAuth2 error format (e.g. `invalid_request`, `login_required`).\n\nDefaults to `request_denied`.", + "type": "string" + }, + "error_debug": { + "description": "Debug contains information to help resolve the problem as a developer. Usually not exposed\nto the public but only in the server logs.", + "type": "string" + }, + "error_description": { + "description": "Description of the error in a human readable format.", + "type": "string" + }, + "error_hint": { + "description": "Hint to help resolve the error.", + "type": "string" + }, + "status_code": { + "description": "Represents the HTTP status code of the error (e.g. 401 or 403)\n\nDefaults to 400", + "format": "int64", + "type": "integer" + } + }, + "title": "The request payload used to accept a login or consent request.", + "type": "object" + }, + "tokenPagination": { + "properties": { + "page_size": { + "default": 250, + "description": "Items per page\n\nThis is the number of items per page to return.\nFor details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).", + "format": "int64", + "maximum": 1000, + "minimum": 1, + "type": "integer" + }, + "page_token": { + "default": "1", + "description": "Next Page Token\n\nThe next page token.\nFor details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).", + "minimum": 1, + "type": "string" + } + }, + "type": "object" + }, + "tokenPaginationHeaders": { + "properties": { + "link": { + "description": "The link header contains pagination links.\n\nFor details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).\n\nin: header", + "type": "string" + }, + "x-total-count": { + "description": "The total number of clients.\n\nin: header", + "type": "string" + } + }, + "type": "object" + }, + "tokenPaginationRequestParameters": { + "description": "The `Link` HTTP header contains multiple links (`first`, `next`, `last`, `previous`) formatted as:\n`; rel=\"{page}\"`\n\nFor details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).", + "properties": { + "page_size": { + "default": 250, + "description": "Items per Page\n\nThis is the number of items per page to return.\nFor details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).", + "format": "int64", + "maximum": 500, + "minimum": 1, + "type": "integer" + }, + "page_token": { + "default": "1", + "description": "Next Page Token\n\nThe next page token.\nFor details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).", + "minimum": 1, + "type": "string" + } + }, + "title": "Pagination Request Parameters", + "type": "object" + }, + "tokenPaginationResponseHeaders": { + "description": "The `Link` HTTP header contains multiple links (`first`, `next`, `last`, `previous`) formatted as:\n`; rel=\"{page}\"`\n\nFor details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).", + "properties": { + "link": { + "description": "The Link HTTP Header\n\nThe `Link` header contains a comma-delimited list of links to the following pages:\n\nfirst: The first page of results.\nnext: The next page of results.\nprev: The previous page of results.\nlast: The last page of results.\n\nPages are omitted if they do not exist. For example, if there is no next page, the `next` link is omitted. Examples:\n\n; rel=\"first\",; rel=\"next\",; rel=\"prev\",; rel=\"last\"", + "type": "string" + }, + "x-total-count": { + "description": "The X-Total-Count HTTP Header\n\nThe `X-Total-Count` header contains the total number of items in the collection.", + "format": "int64", + "type": "integer" + } + }, + "title": "Pagination Response Header", + "type": "object" + }, + "trustOAuth2JwtGrantIssuer": { + "description": "Trust OAuth2 JWT Bearer Grant Type Issuer Request Body", + "properties": { + "allow_any_subject": { + "description": "The \"allow_any_subject\" indicates that the issuer is allowed to have any principal as the subject of the JWT.", + "type": "boolean" + }, + "expires_at": { + "description": "The \"expires_at\" indicates, when grant will expire, so we will reject assertion from \"issuer\" targeting \"subject\".", + "format": "date-time", + "type": "string" + }, + "issuer": { + "description": "The \"issuer\" identifies the principal that issued the JWT assertion (same as \"iss\" claim in JWT).", + "example": "https://jwt-idp.example.com", + "type": "string" + }, + "jwk": { + "$ref": "#/components/schemas/jsonWebKey" + }, + "scope": { + "description": "The \"scope\" contains list of scope values (as described in Section 3.3 of OAuth 2.0 [RFC6749])", + "example": [ + "openid", + "offline" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "subject": { + "description": "The \"subject\" identifies the principal that is the subject of the JWT.", + "example": "mike@example.com", + "type": "string" + } + }, + "required": [ + "issuer", + "scope", + "jwk", + "expires_at" + ], + "type": "object" + }, + "trustedOAuth2JwtGrantIssuer": { + "description": "OAuth2 JWT Bearer Grant Type Issuer Trust Relationship", + "properties": { + "allow_any_subject": { + "description": "The \"allow_any_subject\" indicates that the issuer is allowed to have any principal as the subject of the JWT.", + "type": "boolean" + }, + "created_at": { + "description": "The \"created_at\" indicates, when grant was created.", + "format": "date-time", + "type": "string" + }, + "expires_at": { + "description": "The \"expires_at\" indicates, when grant will expire, so we will reject assertion from \"issuer\" targeting \"subject\".", + "format": "date-time", + "type": "string" + }, + "id": { + "example": "9edc811f-4e28-453c-9b46-4de65f00217f", + "type": "string" + }, + "issuer": { + "description": "The \"issuer\" identifies the principal that issued the JWT assertion (same as \"iss\" claim in JWT).", + "example": "https://jwt-idp.example.com", + "type": "string" + }, + "public_key": { + "$ref": "#/components/schemas/trustedOAuth2JwtGrantJsonWebKey" + }, + "scope": { + "description": "The \"scope\" contains list of scope values (as described in Section 3.3 of OAuth 2.0 [RFC6749])", + "example": [ + "openid", + "offline" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "subject": { + "description": "The \"subject\" identifies the principal that is the subject of the JWT.", + "example": "mike@example.com", + "type": "string" + } + }, + "type": "object" + }, + "trustedOAuth2JwtGrantIssuers": { + "description": "OAuth2 JWT Bearer Grant Type Issuer Trust Relationships", + "items": { + "$ref": "#/components/schemas/trustedOAuth2JwtGrantIssuer" + }, + "type": "array" + }, + "trustedOAuth2JwtGrantJsonWebKey": { + "description": "OAuth2 JWT Bearer Grant Type Issuer Trusted JSON Web Key", + "properties": { + "kid": { + "description": "The \"key_id\" is key unique identifier (same as kid header in jws/jwt).", + "example": "123e4567-e89b-12d3-a456-426655440000", + "type": "string" + }, + "set": { + "description": "The \"set\" is basically a name for a group(set) of keys. Will be the same as \"issuer\" in grant.", + "example": "https://jwt-idp.example.com", + "type": "string" + } + }, + "type": "object" + }, + "unexpectedError": { + "type": "string" + }, + "version": { + "properties": { + "version": { + "description": "Version is the service's version.", + "type": "string" + } + }, + "type": "object" + } + }, + "securitySchemes": { + "basic": { + "scheme": "basic", + "type": "http" + }, + "bearer": { + "scheme": "bearer", + "type": "http" + }, + "oauth2": { + "flows": { + "authorizationCode": { + "authorizationUrl": "https://hydra.demo.ory.sh/oauth2/auth", + "scopes": { + "offline": "A scope required when requesting refresh tokens (alias for `offline_access`)", + "offline_access": "A scope required when requesting refresh tokens", + "openid": "Request an OpenID Connect ID Token" + }, + "tokenUrl": "https://hydra.demo.ory.sh/oauth2/token" + } + }, + "type": "oauth2" + } + } + }, + "info": { + "contact": { + "email": "hi@ory.sh" + }, + "description": "Documentation for all of Ory Hydra's APIs.\n", + "license": { + "name": "Apache 2.0" + }, + "title": "Ory Hydra API", + "version": "" + }, + "openapi": "3.0.3", + "paths": { + "/.well-known/jwks.json": { + "get": { + "description": "This endpoint returns JSON Web Keys required to verifying OpenID Connect ID Tokens and,\nif enabled, OAuth 2.0 JWT Access Tokens. This endpoint can be used with client libraries like\n[node-jwks-rsa](https://github.com/auth0/node-jwks-rsa) among others.", + "operationId": "discoverJsonWebKeys", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/jsonWebKeySet" + } + } + }, + "description": "jsonWebKeySet" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "errorOAuth2" + } + }, + "summary": "Discover Well-Known JSON Web Keys", + "tags": [ + "wellknown" + ] + } + }, + "/.well-known/openid-configuration": { + "get": { + "description": "A mechanism for an OpenID Connect Relying Party to discover the End-User's OpenID Provider and obtain information needed to interact with it, including its OAuth 2.0 endpoint locations.\n\nPopular libraries for OpenID Connect clients include oidc-client-js (JavaScript), go-oidc (Golang), and others.\nFor a full list of clients go here: https://openid.net/developers/certified/", + "operationId": "discoverOidcConfiguration", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oidcConfiguration" + } + } + }, + "description": "oidcConfiguration" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "errorOAuth2" + } + }, + "summary": "OpenID Connect Discovery", + "tags": [ + "oidc" + ] + } + }, + "/admin/clients": { + "get": { + "description": "This endpoint lists all clients in the database, and never returns client secrets.\nAs a default it lists the first 100 clients.", + "operationId": "listOAuth2Clients", + "parameters": [ + { + "description": "Items per Page\n\nThis is the number of items per page to return.\nFor details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).", + "in": "query", + "name": "page_size", + "schema": { + "default": 250, + "format": "int64", + "maximum": 500, + "minimum": 1, + "type": "integer" + } + }, + { + "description": "Next Page Token\n\nThe next page token.\nFor details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).", + "in": "query", + "name": "page_token", + "schema": { + "default": "1", + "minimum": 1, + "type": "string" + } + }, + { + "description": "The name of the clients to filter by.", + "in": "query", + "name": "client_name", + "schema": { + "type": "string" + } + }, + { + "description": "The owner of the clients to filter by.", + "in": "query", + "name": "owner", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "$ref": "#/components/responses/listOAuth2Clients" + }, + "default": { + "$ref": "#/components/responses/errorOAuth2Default" + } + }, + "summary": "List OAuth 2.0 Clients", + "tags": [ + "oAuth2" + ] + }, + "post": { + "description": "Create a new OAuth 2.0 client. If you pass `client_secret` the secret is used, otherwise a random secret\nis generated. The secret is echoed in the response. It is not possible to retrieve it later on.", + "operationId": "createOAuth2Client", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oAuth2Client" + } + } + }, + "description": "OAuth 2.0 Client Request Body", + "required": true, + "x-originalParamName": "Body" + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oAuth2Client" + } + } + }, + "description": "oAuth2Client" + }, + "400": { + "$ref": "#/components/responses/errorOAuth2BadRequest" + }, + "default": { + "$ref": "#/components/responses/errorOAuth2Default" + } + }, + "summary": "Create OAuth 2.0 Client", + "tags": [ + "oAuth2" + ] + } + }, + "/admin/clients/{id}": { + "delete": { + "description": "Delete an existing OAuth 2.0 Client by its ID.\n\nOAuth 2.0 clients are used to perform OAuth 2.0 and OpenID Connect flows. Usually, OAuth 2.0 clients are\ngenerated for applications which want to consume your OAuth 2.0 or OpenID Connect capabilities.\n\nMake sure that this endpoint is well protected and only callable by first-party components.", + "operationId": "deleteOAuth2Client", + "parameters": [ + { + "description": "The id of the OAuth 2.0 Client.", + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "$ref": "#/components/responses/emptyResponse" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/genericError" + } + } + }, + "description": "genericError" + } + }, + "summary": "Delete OAuth 2.0 Client", + "tags": [ + "oAuth2" + ] + }, + "get": { + "description": "Get an OAuth 2.0 client by its ID. This endpoint never returns the client secret.\n\nOAuth 2.0 clients are used to perform OAuth 2.0 and OpenID Connect flows. Usually, OAuth 2.0 clients are\ngenerated for applications which want to consume your OAuth 2.0 or OpenID Connect capabilities.", + "operationId": "getOAuth2Client", + "parameters": [ + { + "description": "The id of the OAuth 2.0 Client.", + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oAuth2Client" + } + } + }, + "description": "oAuth2Client" + }, + "default": { + "$ref": "#/components/responses/errorOAuth2Default" + } + }, + "summary": "Get an OAuth 2.0 Client", + "tags": [ + "oAuth2" + ] + }, + "patch": { + "description": "Patch an existing OAuth 2.0 Client using JSON Patch. If you pass `client_secret`\nthe secret will be updated and returned via the API. This is the\nonly time you will be able to retrieve the client secret, so write it down and keep it safe.\n\nOAuth 2.0 clients are used to perform OAuth 2.0 and OpenID Connect flows. Usually, OAuth 2.0 clients are\ngenerated for applications which want to consume your OAuth 2.0 or OpenID Connect capabilities.", + "operationId": "patchOAuth2Client", + "parameters": [ + { + "description": "The id of the OAuth 2.0 Client.", + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/jsonPatchDocument" + } + } + }, + "description": "OAuth 2.0 Client JSON Patch Body", + "required": true, + "x-originalParamName": "Body" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oAuth2Client" + } + } + }, + "description": "oAuth2Client" + }, + "404": { + "$ref": "#/components/responses/errorOAuth2NotFound" + }, + "default": { + "$ref": "#/components/responses/errorOAuth2Default" + } + }, + "summary": "Patch OAuth 2.0 Client", + "tags": [ + "oAuth2" + ] + }, + "put": { + "description": "Replaces an existing OAuth 2.0 Client with the payload you send. If you pass `client_secret` the secret is used,\notherwise the existing secret is used.\n\nIf set, the secret is echoed in the response. It is not possible to retrieve it later on.\n\nOAuth 2.0 Clients are used to perform OAuth 2.0 and OpenID Connect flows. Usually, OAuth 2.0 clients are\ngenerated for applications which want to consume your OAuth 2.0 or OpenID Connect capabilities.", + "operationId": "setOAuth2Client", + "parameters": [ + { + "description": "OAuth 2.0 Client ID", + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oAuth2Client" + } + } + }, + "description": "OAuth 2.0 Client Request Body", + "required": true, + "x-originalParamName": "Body" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oAuth2Client" + } + } + }, + "description": "oAuth2Client" + }, + "400": { + "$ref": "#/components/responses/errorOAuth2BadRequest" + }, + "404": { + "$ref": "#/components/responses/errorOAuth2NotFound" + }, + "default": { + "$ref": "#/components/responses/errorOAuth2Default" + } + }, + "summary": "Set OAuth 2.0 Client", + "tags": [ + "oAuth2" + ] + } + }, + "/admin/clients/{id}/lifespans": { + "put": { + "description": "Set lifespans of different token types issued for this OAuth 2.0 client. Does not modify other fields.", + "operationId": "setOAuth2ClientLifespans", + "parameters": [ + { + "description": "OAuth 2.0 Client ID", + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oAuth2ClientTokenLifespans" + } + } + }, + "x-originalParamName": "Body" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oAuth2Client" + } + } + }, + "description": "oAuth2Client" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/genericError" + } + } + }, + "description": "genericError" + } + }, + "summary": "Set OAuth2 Client Token Lifespans", + "tags": [ + "oAuth2" + ] + } + }, + "/admin/keys/{set}": { + "delete": { + "description": "Use this endpoint to delete a complete JSON Web Key Set and all the keys in that set.\n\nA JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. A JWK Set is a JSON data structure that represents a set of JWKs. A JSON Web Key is identified by its set and key id. ORY Hydra uses this functionality to store cryptographic keys used for TLS and JSON Web Tokens (such as OpenID Connect ID tokens), and allows storing user-defined keys as well.", + "operationId": "deleteJsonWebKeySet", + "parameters": [ + { + "description": "The JSON Web Key Set", + "in": "path", + "name": "set", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "$ref": "#/components/responses/emptyResponse" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "errorOAuth2" + } + }, + "summary": "Delete JSON Web Key Set", + "tags": [ + "jwk" + ] + }, + "get": { + "description": "This endpoint can be used to retrieve JWK Sets stored in ORY Hydra.\n\nA JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. A JWK Set is a JSON data structure that represents a set of JWKs. A JSON Web Key is identified by its set and key id. ORY Hydra uses this functionality to store cryptographic keys used for TLS and JSON Web Tokens (such as OpenID Connect ID tokens), and allows storing user-defined keys as well.", + "operationId": "getJsonWebKeySet", + "parameters": [ + { + "description": "JSON Web Key Set ID", + "in": "path", + "name": "set", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/jsonWebKeySet" + } + } + }, + "description": "jsonWebKeySet" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "errorOAuth2" + } + }, + "summary": "Retrieve a JSON Web Key Set", + "tags": [ + "jwk" + ] + }, + "post": { + "description": "This endpoint is capable of generating JSON Web Key Sets for you. There a different strategies available, such as symmetric cryptographic keys (HS256, HS512) and asymetric cryptographic keys (RS256, ECDSA). If the specified JSON Web Key Set does not exist, it will be created.\n\nA JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. A JWK Set is a JSON data structure that represents a set of JWKs. A JSON Web Key is identified by its set and key id. ORY Hydra uses this functionality to store cryptographic keys used for TLS and JSON Web Tokens (such as OpenID Connect ID tokens), and allows storing user-defined keys as well.", + "operationId": "createJsonWebKeySet", + "parameters": [ + { + "description": "The JSON Web Key Set ID", + "in": "path", + "name": "set", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/createJsonWebKeySet" + } + } + }, + "required": true, + "x-originalParamName": "Body" + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/jsonWebKeySet" + } + } + }, + "description": "jsonWebKeySet" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "errorOAuth2" + } + }, + "summary": "Create JSON Web Key", + "tags": [ + "jwk" + ] + }, + "put": { + "description": "Use this method if you do not want to let Hydra generate the JWKs for you, but instead save your own.\n\nA JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. A JWK Set is a JSON data structure that represents a set of JWKs. A JSON Web Key is identified by its set and key id. ORY Hydra uses this functionality to store cryptographic keys used for TLS and JSON Web Tokens (such as OpenID Connect ID tokens), and allows storing user-defined keys as well.", + "operationId": "setJsonWebKeySet", + "parameters": [ + { + "description": "The JSON Web Key Set ID", + "in": "path", + "name": "set", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/jsonWebKeySet" + } + } + }, + "x-originalParamName": "Body" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/jsonWebKeySet" + } + } + }, + "description": "jsonWebKeySet" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "errorOAuth2" + } + }, + "summary": "Update a JSON Web Key Set", + "tags": [ + "jwk" + ] + } + }, + "/admin/keys/{set}/{kid}": { + "delete": { + "description": "Use this endpoint to delete a single JSON Web Key.\n\nA JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. A\nJWK Set is a JSON data structure that represents a set of JWKs. A JSON Web Key is identified by its set and key id. ORY Hydra uses\nthis functionality to store cryptographic keys used for TLS and JSON Web Tokens (such as OpenID Connect ID tokens),\nand allows storing user-defined keys as well.", + "operationId": "deleteJsonWebKey", + "parameters": [ + { + "description": "The JSON Web Key Set", + "in": "path", + "name": "set", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The JSON Web Key ID (kid)", + "in": "path", + "name": "kid", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "$ref": "#/components/responses/emptyResponse" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "errorOAuth2" + } + }, + "summary": "Delete JSON Web Key", + "tags": [ + "jwk" + ] + }, + "get": { + "description": "This endpoint returns a singular JSON Web Key contained in a set. It is identified by the set and the specific key ID (kid).", + "operationId": "getJsonWebKey", + "parameters": [ + { + "description": "JSON Web Key Set ID", + "in": "path", + "name": "set", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "JSON Web Key ID", + "in": "path", + "name": "kid", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/jsonWebKeySet" + } + } + }, + "description": "jsonWebKeySet" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "errorOAuth2" + } + }, + "summary": "Get JSON Web Key", + "tags": [ + "jwk" + ] + }, + "put": { + "description": "Use this method if you do not want to let Hydra generate the JWKs for you, but instead save your own.\n\nA JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. A JWK Set is a JSON data structure that represents a set of JWKs. A JSON Web Key is identified by its set and key id. ORY Hydra uses this functionality to store cryptographic keys used for TLS and JSON Web Tokens (such as OpenID Connect ID tokens), and allows storing user-defined keys as well.", + "operationId": "setJsonWebKey", + "parameters": [ + { + "description": "The JSON Web Key Set ID", + "in": "path", + "name": "set", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "JSON Web Key ID", + "in": "path", + "name": "kid", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/jsonWebKey" + } + } + }, + "x-originalParamName": "Body" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/jsonWebKey" + } + } + }, + "description": "jsonWebKey" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "errorOAuth2" + } + }, + "summary": "Set JSON Web Key", + "tags": [ + "jwk" + ] + } + }, + "/admin/oauth2/auth/requests/consent": { + "get": { + "description": "When an authorization code, hybrid, or implicit OAuth 2.0 Flow is initiated, Ory asks the login provider\nto authenticate the subject and then tell Ory now about it. If the subject authenticated, he/she must now be asked if\nthe OAuth 2.0 Client which initiated the flow should be allowed to access the resources on the subject's behalf.\n\nThe consent challenge is appended to the consent provider's URL to which the subject's user-agent (browser) is redirected to. The consent\nprovider uses that challenge to fetch information on the OAuth2 request and then tells Ory if the subject accepted\nor rejected the request.\n\nThe default consent provider is available via the Ory Managed Account Experience. To customize the consent provider, please\nhead over to the OAuth 2.0 documentation.", + "operationId": "getOAuth2ConsentRequest", + "parameters": [ + { + "description": "OAuth 2.0 Consent Request Challenge", + "in": "query", + "name": "consent_challenge", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oAuth2ConsentRequest" + } + } + }, + "description": "oAuth2ConsentRequest" + }, + "410": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oAuth2RedirectTo" + } + } + }, + "description": "oAuth2RedirectTo" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "errorOAuth2" + } + }, + "summary": "Get OAuth 2.0 Consent Request", + "tags": [ + "oAuth2" + ] + } + }, + "/admin/oauth2/auth/requests/consent/accept": { + "put": { + "description": "When an authorization code, hybrid, or implicit OAuth 2.0 Flow is initiated, Ory asks the login provider\nto authenticate the subject and then tell Ory now about it. If the subject authenticated, he/she must now be asked if\nthe OAuth 2.0 Client which initiated the flow should be allowed to access the resources on the subject's behalf.\n\nThe consent challenge is appended to the consent provider's URL to which the subject's user-agent (browser) is redirected to. The consent\nprovider uses that challenge to fetch information on the OAuth2 request and then tells Ory if the subject accepted\nor rejected the request.\n\nThis endpoint tells Ory that the subject has authorized the OAuth 2.0 client to access resources on his/her behalf.\nThe consent provider includes additional information, such as session data for access and ID tokens, and if the\nconsent request should be used as basis for future requests.\n\nThe response contains a redirect URL which the consent provider should redirect the user-agent to.\n\nThe default consent provider is available via the Ory Managed Account Experience. To customize the consent provider, please\nhead over to the OAuth 2.0 documentation.", + "operationId": "acceptOAuth2ConsentRequest", + "parameters": [ + { + "description": "OAuth 2.0 Consent Request Challenge", + "in": "query", + "name": "consent_challenge", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/acceptOAuth2ConsentRequest" + } + } + }, + "x-originalParamName": "Body" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oAuth2RedirectTo" + } + } + }, + "description": "oAuth2RedirectTo" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "errorOAuth2" + } + }, + "summary": "Accept OAuth 2.0 Consent Request", + "tags": [ + "oAuth2" + ] + } + }, + "/admin/oauth2/auth/requests/consent/reject": { + "put": { + "description": "When an authorization code, hybrid, or implicit OAuth 2.0 Flow is initiated, Ory asks the login provider\nto authenticate the subject and then tell Ory now about it. If the subject authenticated, he/she must now be asked if\nthe OAuth 2.0 Client which initiated the flow should be allowed to access the resources on the subject's behalf.\n\nThe consent challenge is appended to the consent provider's URL to which the subject's user-agent (browser) is redirected to. The consent\nprovider uses that challenge to fetch information on the OAuth2 request and then tells Ory if the subject accepted\nor rejected the request.\n\nThis endpoint tells Ory that the subject has not authorized the OAuth 2.0 client to access resources on his/her behalf.\nThe consent provider must include a reason why the consent was not granted.\n\nThe response contains a redirect URL which the consent provider should redirect the user-agent to.\n\nThe default consent provider is available via the Ory Managed Account Experience. To customize the consent provider, please\nhead over to the OAuth 2.0 documentation.", + "operationId": "rejectOAuth2ConsentRequest", + "parameters": [ + { + "description": "OAuth 2.0 Consent Request Challenge", + "in": "query", + "name": "consent_challenge", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/rejectOAuth2Request" + } + } + }, + "x-originalParamName": "Body" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oAuth2RedirectTo" + } + } + }, + "description": "oAuth2RedirectTo" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "errorOAuth2" + } + }, + "summary": "Reject OAuth 2.0 Consent Request", + "tags": [ + "oAuth2" + ] + } + }, + "/admin/oauth2/auth/requests/login": { + "get": { + "description": "When an authorization code, hybrid, or implicit OAuth 2.0 Flow is initiated, Ory asks the login provider\nto authenticate the subject and then tell the Ory OAuth2 Service about it.\n\nPer default, the login provider is Ory itself. You may use a different login provider which needs to be a web-app\nyou write and host, and it must be able to authenticate (\"show the subject a login screen\")\na subject (in OAuth2 the proper name for subject is \"resource owner\").\n\nThe authentication challenge is appended to the login provider URL to which the subject's user-agent (browser) is redirected to. The login\nprovider uses that challenge to fetch information on the OAuth2 request and then accept or reject the requested authentication process.", + "operationId": "getOAuth2LoginRequest", + "parameters": [ + { + "description": "OAuth 2.0 Login Request Challenge", + "in": "query", + "name": "login_challenge", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oAuth2LoginRequest" + } + } + }, + "description": "oAuth2LoginRequest" + }, + "410": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oAuth2RedirectTo" + } + } + }, + "description": "oAuth2RedirectTo" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "errorOAuth2" + } + }, + "summary": "Get OAuth 2.0 Login Request", + "tags": [ + "oAuth2" + ] + } + }, + "/admin/oauth2/auth/requests/login/accept": { + "put": { + "description": "When an authorization code, hybrid, or implicit OAuth 2.0 Flow is initiated, Ory asks the login provider\nto authenticate the subject and then tell the Ory OAuth2 Service about it.\n\nThe authentication challenge is appended to the login provider URL to which the subject's user-agent (browser) is redirected to. The login\nprovider uses that challenge to fetch information on the OAuth2 request and then accept or reject the requested authentication process.\n\nThis endpoint tells Ory that the subject has successfully authenticated and includes additional information such as\nthe subject's ID and if Ory should remember the subject's subject agent for future authentication attempts by setting\na cookie.\n\nThe response contains a redirect URL which the login provider should redirect the user-agent to.", + "operationId": "acceptOAuth2LoginRequest", + "parameters": [ + { + "description": "OAuth 2.0 Login Request Challenge", + "in": "query", + "name": "login_challenge", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/acceptOAuth2LoginRequest" + } + } + }, + "x-originalParamName": "Body" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oAuth2RedirectTo" + } + } + }, + "description": "oAuth2RedirectTo" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "errorOAuth2" + } + }, + "summary": "Accept OAuth 2.0 Login Request", + "tags": [ + "oAuth2" + ] + } + }, + "/admin/oauth2/auth/requests/login/reject": { + "put": { + "description": "When an authorization code, hybrid, or implicit OAuth 2.0 Flow is initiated, Ory asks the login provider\nto authenticate the subject and then tell the Ory OAuth2 Service about it.\n\nThe authentication challenge is appended to the login provider URL to which the subject's user-agent (browser) is redirected to. The login\nprovider uses that challenge to fetch information on the OAuth2 request and then accept or reject the requested authentication process.\n\nThis endpoint tells Ory that the subject has not authenticated and includes a reason why the authentication\nwas denied.\n\nThe response contains a redirect URL which the login provider should redirect the user-agent to.", + "operationId": "rejectOAuth2LoginRequest", + "parameters": [ + { + "description": "OAuth 2.0 Login Request Challenge", + "in": "query", + "name": "login_challenge", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/rejectOAuth2Request" + } + } + }, + "x-originalParamName": "Body" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oAuth2RedirectTo" + } + } + }, + "description": "oAuth2RedirectTo" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "errorOAuth2" + } + }, + "summary": "Reject OAuth 2.0 Login Request", + "tags": [ + "oAuth2" + ] + } + }, + "/admin/oauth2/auth/requests/logout": { + "get": { + "description": "Use this endpoint to fetch an Ory OAuth 2.0 logout request.", + "operationId": "getOAuth2LogoutRequest", + "parameters": [ + { + "in": "query", + "name": "logout_challenge", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oAuth2LogoutRequest" + } + } + }, + "description": "oAuth2LogoutRequest" + }, + "410": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oAuth2RedirectTo" + } + } + }, + "description": "oAuth2RedirectTo" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "errorOAuth2" + } + }, + "summary": "Get OAuth 2.0 Session Logout Request", + "tags": [ + "oAuth2" + ] + } + }, + "/admin/oauth2/auth/requests/logout/accept": { + "put": { + "description": "When a user or an application requests Ory OAuth 2.0 to remove the session state of a subject, this endpoint is used to confirm that logout request.\n\nThe response contains a redirect URL which the consent provider should redirect the user-agent to.", + "operationId": "acceptOAuth2LogoutRequest", + "parameters": [ + { + "description": "OAuth 2.0 Logout Request Challenge", + "in": "query", + "name": "logout_challenge", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oAuth2RedirectTo" + } + } + }, + "description": "oAuth2RedirectTo" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "errorOAuth2" + } + }, + "summary": "Accept OAuth 2.0 Session Logout Request", + "tags": [ + "oAuth2" + ] + } + }, + "/admin/oauth2/auth/requests/logout/reject": { + "put": { + "description": "When a user or an application requests Ory OAuth 2.0 to remove the session state of a subject, this endpoint is used to deny that logout request.\nNo HTTP request body is required.\n\nThe response is empty as the logout provider has to chose what action to perform next.", + "operationId": "rejectOAuth2LogoutRequest", + "parameters": [ + { + "in": "query", + "name": "logout_challenge", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "$ref": "#/components/responses/emptyResponse" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "errorOAuth2" + } + }, + "summary": "Reject OAuth 2.0 Session Logout Request", + "tags": [ + "oAuth2" + ] + } + }, + "/admin/oauth2/auth/sessions/consent": { + "delete": { + "description": "This endpoint revokes a subject's granted consent sessions and invalidates all\nassociated OAuth 2.0 Access Tokens. You may also only revoke sessions for a specific OAuth 2.0 Client ID.", + "operationId": "revokeOAuth2ConsentSessions", + "parameters": [ + { + "description": "OAuth 2.0 Consent Subject\n\nThe subject whose consent sessions should be deleted.", + "in": "query", + "name": "subject", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "OAuth 2.0 Client ID\n\nIf set, deletes only those consent sessions that have been granted to the specified OAuth 2.0 Client ID.", + "in": "query", + "name": "client", + "schema": { + "type": "string" + } + }, + { + "description": "Revoke All Consent Sessions\n\nIf set to `true` deletes all consent sessions by the Subject that have been granted.", + "in": "query", + "name": "all", + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "204": { + "$ref": "#/components/responses/emptyResponse" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "errorOAuth2" + } + }, + "summary": "Revoke OAuth 2.0 Consent Sessions of a Subject", + "tags": [ + "oAuth2" + ] + }, + "get": { + "description": "This endpoint lists all subject's granted consent sessions, including client and granted scope.\nIf the subject is unknown or has not granted any consent sessions yet, the endpoint returns an\nempty JSON array with status code 200 OK.", + "operationId": "listOAuth2ConsentSessions", + "parameters": [ + { + "description": "Items per Page\n\nThis is the number of items per page to return.\nFor details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).", + "in": "query", + "name": "page_size", + "schema": { + "default": 250, + "format": "int64", + "maximum": 500, + "minimum": 1, + "type": "integer" + } + }, + { + "description": "Next Page Token\n\nThe next page token.\nFor details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).", + "in": "query", + "name": "page_token", + "schema": { + "default": "1", + "minimum": 1, + "type": "string" + } + }, + { + "description": "The subject to list the consent sessions for.", + "in": "query", + "name": "subject", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The login session id to list the consent sessions for.", + "in": "query", + "name": "login_session_id", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oAuth2ConsentSessions" + } + } + }, + "description": "oAuth2ConsentSessions" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "errorOAuth2" + } + }, + "summary": "List OAuth 2.0 Consent Sessions of a Subject", + "tags": [ + "oAuth2" + ] + } + }, + "/admin/oauth2/auth/sessions/login": { + "delete": { + "description": "This endpoint invalidates authentication sessions. After revoking the authentication session(s), the subject\nhas to re-authenticate at the Ory OAuth2 Provider. This endpoint does not invalidate any tokens.\n\nIf you send the subject in a query param, all authentication sessions that belong to that subject are revoked.\nNo OpennID Connect Front- or Back-channel logout is performed in this case.\n\nAlternatively, you can send a SessionID via `sid` query param, in which case, only the session that is connected\nto that SessionID is revoked. OpenID Connect Back-channel logout is performed in this case.", + "operationId": "revokeOAuth2LoginSessions", + "parameters": [ + { + "description": "OAuth 2.0 Subject\n\nThe subject to revoke authentication sessions for.", + "in": "query", + "name": "subject", + "schema": { + "type": "string" + } + }, + { + "description": "OAuth 2.0 Subject\n\nThe subject to revoke authentication sessions for.", + "in": "query", + "name": "sid", + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "$ref": "#/components/responses/emptyResponse" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "errorOAuth2" + } + }, + "summary": "Revokes OAuth 2.0 Login Sessions by either a Subject or a SessionID", + "tags": [ + "oAuth2" + ] + } + }, + "/admin/oauth2/introspect": { + "post": { + "description": "The introspection endpoint allows to check if a token (both refresh and access) is active or not. An active token\nis neither expired nor revoked. If a token is active, additional information on the token will be included. You can\nset additional data for a token by setting `session.access_token` during the consent flow.", + "operationId": "introspectOAuth2Token", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "properties": { + "scope": { + "description": "An optional, space separated list of required scopes. If the access token was not granted one of the\nscopes, the result of active will be false.", + "type": "string", + "x-formData-name": "scope" + }, + "token": { + "description": "The string value of the token. For access tokens, this\nis the \"access_token\" value returned from the token endpoint\ndefined in OAuth 2.0. For refresh tokens, this is the \"refresh_token\"\nvalue returned.", + "required": [ + "token" + ], + "type": "string", + "x-formData-name": "token" + } + }, + "required": [ + "token" + ], + "type": "object" + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/introspectedOAuth2Token" + } + } + }, + "description": "introspectedOAuth2Token" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "errorOAuth2" + } + }, + "summary": "Introspect OAuth2 Access and Refresh Tokens", + "tags": [ + "oAuth2" + ] + } + }, + "/admin/oauth2/tokens": { + "delete": { + "description": "This endpoint deletes OAuth2 access tokens issued to an OAuth 2.0 Client from the database.", + "operationId": "deleteOAuth2Token", + "parameters": [ + { + "description": "OAuth 2.0 Client ID", + "in": "query", + "name": "client_id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "$ref": "#/components/responses/emptyResponse" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "errorOAuth2" + } + }, + "summary": "Delete OAuth 2.0 Access Tokens from specific OAuth 2.0 Client", + "tags": [ + "oAuth2" + ] + } + }, + "/admin/trust/grants/jwt-bearer/issuers": { + "get": { + "description": "Use this endpoint to list all trusted JWT Bearer Grant Type Issuers.", + "operationId": "listTrustedOAuth2JwtGrantIssuers", + "parameters": [ + { + "in": "query", + "name": "MaxItems", + "schema": { + "format": "int64", + "type": "integer" + } + }, + { + "in": "query", + "name": "DefaultItems", + "schema": { + "format": "int64", + "type": "integer" + } + }, + { + "description": "If optional \"issuer\" is supplied, only jwt-bearer grants with this issuer will be returned.", + "in": "query", + "name": "issuer", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/trustedOAuth2JwtGrantIssuers" + } + } + }, + "description": "trustedOAuth2JwtGrantIssuers" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/genericError" + } + } + }, + "description": "genericError" + } + }, + "summary": "List Trusted OAuth2 JWT Bearer Grant Type Issuers", + "tags": [ + "oAuth2" + ] + }, + "post": { + "description": "Use this endpoint to establish a trust relationship for a JWT issuer\nto perform JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication\nand Authorization Grants [RFC7523](https://datatracker.ietf.org/doc/html/rfc7523).", + "operationId": "trustOAuth2JwtGrantIssuer", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/trustOAuth2JwtGrantIssuer" + } + } + }, + "x-originalParamName": "Body" + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/trustedOAuth2JwtGrantIssuer" + } + } + }, + "description": "trustedOAuth2JwtGrantIssuer" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/genericError" + } + } + }, + "description": "genericError" + } + }, + "summary": "Trust OAuth2 JWT Bearer Grant Type Issuer", + "tags": [ + "oAuth2" + ] + } + }, + "/admin/trust/grants/jwt-bearer/issuers/{id}": { + "delete": { + "description": "Use this endpoint to delete trusted JWT Bearer Grant Type Issuer. The ID is the one returned when you\ncreated the trust relationship.\n\nOnce deleted, the associated issuer will no longer be able to perform the JSON Web Token (JWT) Profile\nfor OAuth 2.0 Client Authentication and Authorization Grant.", + "operationId": "deleteTrustedOAuth2JwtGrantIssuer", + "parameters": [ + { + "description": "The id of the desired grant", + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "$ref": "#/components/responses/emptyResponse" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/genericError" + } + } + }, + "description": "genericError" + } + }, + "summary": "Delete Trusted OAuth2 JWT Bearer Grant Type Issuer", + "tags": [ + "oAuth2" + ] + }, + "get": { + "description": "Use this endpoint to get a trusted JWT Bearer Grant Type Issuer. The ID is the one returned when you\ncreated the trust relationship.", + "operationId": "getTrustedOAuth2JwtGrantIssuer", + "parameters": [ + { + "description": "The id of the desired grant", + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/trustedOAuth2JwtGrantIssuer" + } + } + }, + "description": "trustedOAuth2JwtGrantIssuer" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/genericError" + } + } + }, + "description": "genericError" + } + }, + "summary": "Get Trusted OAuth2 JWT Bearer Grant Type Issuer", + "tags": [ + "oAuth2" + ] + } + }, + "/health/alive": { + "get": { + "description": "This endpoint returns a HTTP 200 status code when Ory Hydra is accepting incoming\nHTTP requests. This status does currently not include checks whether the database connection is working.\n\nIf the service supports TLS Edge Termination, this endpoint does not require the\n`X-Forwarded-Proto` header to be set.\n\nBe aware that if you are running multiple nodes of this service, the health status will never\nrefer to the cluster state, only to a single instance.", + "operationId": "isAlive", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/healthStatus" + } + } + }, + "description": "Ory Hydra is ready to accept connections." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/genericError" + } + } + }, + "description": "genericError" + } + }, + "summary": "Check HTTP Server Status", + "tags": [ + "metadata" + ] + } + }, + "/health/ready": { + "get": { + "description": "This endpoint returns a HTTP 200 status code when Ory Hydra is up running and the environment dependencies (e.g.\nthe database) are responsive as well.\n\nIf the service supports TLS Edge Termination, this endpoint does not require the\n`X-Forwarded-Proto` header to be set.\n\nBe aware that if you are running multiple nodes of Ory Hydra, the health status will never\nrefer to the cluster state, only to a single instance.", + "operationId": "isReady", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "status": { + "description": "Always \"ok\".", + "type": "string" + } + }, + "type": "object" + } + } + }, + "description": "Ory Hydra is ready to accept requests." + }, + "503": { + "content": { + "application/json": { + "schema": { + "properties": { + "errors": { + "additionalProperties": { + "type": "string" + }, + "description": "Errors contains a list of errors that caused the not ready status.", + "type": "object" + } + }, + "type": "object" + } + } + }, + "description": "Ory Kratos is not yet ready to accept requests." + } + }, + "summary": "Check HTTP Server and Database Status", + "tags": [ + "metadata" + ] + } + }, + "/oauth2/auth": { + "get": { + "description": "Use open source libraries to perform OAuth 2.0 and OpenID Connect\navailable for any programming language. You can find a list of libraries at https://oauth.net/code/\n\nThe Ory SDK is not yet able to this endpoint properly.", + "operationId": "oAuth2Authorize", + "responses": { + "302": { + "$ref": "#/components/responses/emptyResponse" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "errorOAuth2" + } + }, + "summary": "OAuth 2.0 Authorize Endpoint", + "tags": [ + "oAuth2" + ] + } + }, + "/oauth2/register": { + "post": { + "description": "This endpoint behaves like the administrative counterpart (`createOAuth2Client`) but is capable of facing the\npublic internet directly and can be used in self-service. It implements the OpenID Connect\nDynamic Client Registration Protocol. This feature needs to be enabled in the configuration. This endpoint\nis disabled by default. It can be enabled by an administrator.\n\nPlease note that using this endpoint you are not able to choose the `client_secret` nor the `client_id` as those\nvalues will be server generated when specifying `token_endpoint_auth_method` as `client_secret_basic` or\n`client_secret_post`.\n\nThe `client_secret` will be returned in the response and you will not be able to retrieve it later on.\nWrite the secret down and keep it somewhere safe.", + "operationId": "createOidcDynamicClient", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oAuth2Client" + } + } + }, + "description": "Dynamic Client Registration Request Body", + "required": true, + "x-originalParamName": "Body" + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oAuth2Client" + } + } + }, + "description": "oAuth2Client" + }, + "400": { + "$ref": "#/components/responses/errorOAuth2BadRequest" + }, + "default": { + "$ref": "#/components/responses/errorOAuth2Default" + } + }, + "summary": "Register OAuth2 Client using OpenID Dynamic Client Registration", + "tags": [ + "oidc" + ] + } + }, + "/oauth2/register/{id}": { + "delete": { + "description": "This endpoint behaves like the administrative counterpart (`deleteOAuth2Client`) but is capable of facing the\npublic internet directly and can be used in self-service. It implements the OpenID Connect\nDynamic Client Registration Protocol. This feature needs to be enabled in the configuration. This endpoint\nis disabled by default. It can be enabled by an administrator.\n\nTo use this endpoint, you will need to present the client's authentication credentials. If the OAuth2 Client\nuses the Token Endpoint Authentication Method `client_secret_post`, you need to present the client secret in the URL query.\nIf it uses `client_secret_basic`, present the Client ID and the Client Secret in the Authorization header.\n\nOAuth 2.0 clients are used to perform OAuth 2.0 and OpenID Connect flows. Usually, OAuth 2.0 clients are\ngenerated for applications which want to consume your OAuth 2.0 or OpenID Connect capabilities.", + "operationId": "deleteOidcDynamicClient", + "parameters": [ + { + "description": "The id of the OAuth 2.0 Client.", + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "$ref": "#/components/responses/emptyResponse" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/genericError" + } + } + }, + "description": "genericError" + } + }, + "security": [ + { + "bearer": [] + } + ], + "summary": "Delete OAuth 2.0 Client using the OpenID Dynamic Client Registration Management Protocol", + "tags": [ + "oidc" + ] + }, + "get": { + "description": "This endpoint behaves like the administrative counterpart (`getOAuth2Client`) but is capable of facing the\npublic internet directly and can be used in self-service. It implements the OpenID Connect\nDynamic Client Registration Protocol.\n\nTo use this endpoint, you will need to present the client's authentication credentials. If the OAuth2 Client\nuses the Token Endpoint Authentication Method `client_secret_post`, you need to present the client secret in the URL query.\nIf it uses `client_secret_basic`, present the Client ID and the Client Secret in the Authorization header.", + "operationId": "getOidcDynamicClient", + "parameters": [ + { + "description": "The id of the OAuth 2.0 Client.", + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oAuth2Client" + } + } + }, + "description": "oAuth2Client" + }, + "default": { + "$ref": "#/components/responses/errorOAuth2Default" + } + }, + "security": [ + { + "bearer": [] + } + ], + "summary": "Get OAuth2 Client using OpenID Dynamic Client Registration", + "tags": [ + "oidc" + ] + }, + "put": { + "description": "This endpoint behaves like the administrative counterpart (`setOAuth2Client`) but is capable of facing the\npublic internet directly to be used by third parties. It implements the OpenID Connect\nDynamic Client Registration Protocol.\n\nThis feature is disabled per default. It can be enabled by a system administrator.\n\nIf you pass `client_secret` the secret is used, otherwise the existing secret is used. If set, the secret is echoed in the response.\nIt is not possible to retrieve it later on.\n\nTo use this endpoint, you will need to present the client's authentication credentials. If the OAuth2 Client\nuses the Token Endpoint Authentication Method `client_secret_post`, you need to present the client secret in the URL query.\nIf it uses `client_secret_basic`, present the Client ID and the Client Secret in the Authorization header.\n\nOAuth 2.0 clients are used to perform OAuth 2.0 and OpenID Connect flows. Usually, OAuth 2.0 clients are\ngenerated for applications which want to consume your OAuth 2.0 or OpenID Connect capabilities.", + "operationId": "setOidcDynamicClient", + "parameters": [ + { + "description": "OAuth 2.0 Client ID", + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oAuth2Client" + } + } + }, + "description": "OAuth 2.0 Client Request Body", + "required": true, + "x-originalParamName": "Body" + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oAuth2Client" + } + } + }, + "description": "oAuth2Client" + }, + "404": { + "$ref": "#/components/responses/errorOAuth2NotFound" + }, + "default": { + "$ref": "#/components/responses/errorOAuth2Default" + } + }, + "security": [ + { + "bearer": [] + } + ], + "summary": "Set OAuth2 Client using OpenID Dynamic Client Registration", + "tags": [ + "oidc" + ] + } + }, + "/oauth2/revoke": { + "post": { + "description": "Revoking a token (both access and refresh) means that the tokens will be invalid. A revoked access token can no\nlonger be used to make access requests, and a revoked refresh token can no longer be used to refresh an access token.\nRevoking a refresh token also invalidates the access token that was created with it. A token may only be revoked by\nthe client the token was generated for.", + "operationId": "revokeOAuth2Token", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "properties": { + "client_id": { + "type": "string", + "x-formData-name": "client_id" + }, + "client_secret": { + "type": "string", + "x-formData-name": "client_secret" + }, + "token": { + "required": [ + "token" + ], + "type": "string", + "x-formData-name": "token" + } + }, + "required": [ + "token" + ], + "type": "object" + } + } + } + }, + "responses": { + "200": { + "$ref": "#/components/responses/emptyResponse" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "errorOAuth2" + } + }, + "security": [ + { + "basic": [] + }, + { + "oauth2": [] + } + ], + "summary": "Revoke OAuth 2.0 Access or Refresh Token", + "tags": [ + "oAuth2" + ] + } + }, + "/oauth2/sessions/logout": { + "get": { + "description": "This endpoint initiates and completes user logout at the Ory OAuth2 & OpenID provider and initiates OpenID Connect Front- / Back-channel logout:\n\nhttps://openid.net/specs/openid-connect-frontchannel-1_0.html\nhttps://openid.net/specs/openid-connect-backchannel-1_0.html\n\nBack-channel logout is performed asynchronously and does not affect logout flow.", + "operationId": "revokeOidcSession", + "responses": { + "302": { + "$ref": "#/components/responses/emptyResponse" + } + }, + "summary": "OpenID Connect Front- and Back-channel Enabled Logout", + "tags": [ + "oidc" + ] + } + }, + "/oauth2/token": { + "post": { + "description": "Use open source libraries to perform OAuth 2.0 and OpenID Connect\navailable for any programming language. You can find a list of libraries here https://oauth.net/code/\n\nThe Ory SDK is not yet able to this endpoint properly.", + "operationId": "oauth2TokenExchange", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "properties": { + "client_id": { + "type": "string", + "x-formData-name": "client_id" + }, + "code": { + "type": "string", + "x-formData-name": "code" + }, + "grant_type": { + "required": [ + "grant_type" + ], + "type": "string", + "x-formData-name": "grant_type" + }, + "redirect_uri": { + "type": "string", + "x-formData-name": "redirect_uri" + }, + "refresh_token": { + "type": "string", + "x-formData-name": "refresh_token" + } + }, + "required": [ + "grant_type" + ], + "type": "object" + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oAuth2TokenExchange" + } + } + }, + "description": "oAuth2TokenExchange" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "errorOAuth2" + } + }, + "security": [ + { + "basic": [] + }, + { + "oauth2": [] + } + ], + "summary": "The OAuth 2.0 Token Endpoint", + "tags": [ + "oAuth2" + ] + } + }, + "/userinfo": { + "get": { + "description": "This endpoint returns the payload of the ID Token, including `session.id_token` values, of\nthe provided OAuth 2.0 Access Token's consent request.\n\nIn the case of authentication error, a WWW-Authenticate header might be set in the response\nwith more information about the error. See [the spec](https://datatracker.ietf.org/doc/html/rfc6750#section-3)\nfor more details about header format.", + "operationId": "getOidcUserInfo", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/oidcUserInfo" + } + } + }, + "description": "oidcUserInfo" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/errorOAuth2" + } + } + }, + "description": "errorOAuth2" + } + }, + "security": [ + { + "oauth2": [] + } + ], + "summary": "OpenID Connect Userinfo", + "tags": [ + "oidc" + ] + } + }, + "/version": { + "get": { + "description": "This endpoint returns the version of Ory Hydra.\n\nIf the service supports TLS Edge Termination, this endpoint does not require the\n`X-Forwarded-Proto` header to be set.\n\nBe aware that if you are running multiple nodes of this service, the version will never\nrefer to the cluster state, only to a single instance.", + "operationId": "getVersion", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "version": { + "description": "The version of Ory Hydra.", + "type": "string" + } + }, + "type": "object" + } + } + }, + "description": "Returns the Ory Hydra version." + } + }, + "summary": "Return Running Software Version.", + "tags": [ + "metadata" + ] + } + } + }, + "tags": [ + { + "description": "OAuth 2.0", + "name": "oAuth2" + }, + { + "description": "OpenID Connect", + "name": "oidc" + }, + { + "description": "JSON Web Keys", + "name": "jwk" + }, + { + "description": "Well-Known Endpoints", + "name": "wellknown" + }, + { + "description": "Service Metadata", + "name": "metadata" + } + ], + "x-forwarded-proto": "string", + "x-request-id": "string" +} \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/test_and_report.bash b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/test_and_report.bash new file mode 100644 index 00000000..ef6d5fe6 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/test_and_report.bash @@ -0,0 +1,3 @@ +#!/bin/bash + +./gradlew test jacocoTestReport diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/.editorconfig b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/.editorconfig new file mode 100644 index 00000000..59d9a3a3 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/.editorconfig @@ -0,0 +1,16 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.ts] +quote_type = single + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/.gitignore b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/.gitignore new file mode 100644 index 00000000..1f4031f1 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/.gitignore @@ -0,0 +1,44 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# Compiled output +/dist +/tmp +/out-tsc +/bazel-out + +# Node +/node_modules +npm-debug.log +yarn-error.log + +# IDEs and editors +.idea/ +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# Visual Studio Code +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# Miscellaneous +/.angular/cache +.sass-cache/ +/connect.lock +/coverage +/libpeerconnection.log +testem.log +/typings + +# System files +.DS_Store +Thumbs.db + +package-lock.json diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/angular.json b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/angular.json new file mode 100644 index 00000000..934de8c3 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/angular.json @@ -0,0 +1,125 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "authorization-frontend": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:application", + "options": { + "outputPath": "dist/authorization-frontend", + "index": "src/index.html", + "browser": "src/main.ts", + "polyfills": [ + "zone.js" + ], + "tsConfig": "tsconfig.app.json", + "inlineStyleLanguage": "scss", + "assets": [ + "src/favicon.ico", + "src/assets", + "src/fonts" + ], + "styles": [ + "src/styles.scss" + ], + "scripts": [], + "server": "src/main.server.ts", + "prerender": true, + "ssr": { + "entry": "server.ts" + } + }, + "configurations": { + "production": { + "budgets": [ + { + "type": "initial", + "maximumWarning": "500kb", + "maximumError": "1mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "2kb", + "maximumError": "4kb" + } + ], + "outputHashing": "all" + }, + "development": { + "optimization": false, + "extractLicenses": false, + "sourceMap": true, + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.development.ts" + } + ] + } + }, + "defaultConfiguration": "production" + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "configurations": { + "production": { + "buildTarget": "authorization-frontend:build:production" + }, + "development": { + "buildTarget": "authorization-frontend:build:development" + } + }, + "defaultConfiguration": "development" + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "buildTarget": "authorization-frontend:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "polyfills": [ + "zone.js", + "zone.js/testing" + ], + "tsConfig": "tsconfig.spec.json", + "inlineStyleLanguage": "scss", + "assets": [ + "src/favicon.ico", + "src/assets", + "src/fonts" + ], + "styles": [ + "src/styles.scss" + ], + "scripts": [], + "karmaConfig": "karma.conf.js", + "codeCoverageExclude": [ + "src/app/window.service.ts", + "src/app/app.component.ts" + ] + } + } + } + } + }, + "cli": { + "cache": { + "path": "/tmp/.angular/cache" + }, + "analytics": false + } +} \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/build_image.bash b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/build_image.bash new file mode 100644 index 00000000..6834a81b --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/build_image.bash @@ -0,0 +1,47 @@ +#!/bin/bash + +# export HTTP_PROXY="http://proxyuser:proxypass@192.168.20.4:8822/" +# export HTTPS_PROXY="http://proxyuser:proxypass@192.168.20.4:8822/" +# export NO_PROXY="localhost,127.0.0.1" + +export REPO_IMAGE="chistousov" +export PROJECT_NAME="ory-hydra-oauth2-example-authorization-server-frontend" +export VERSION="1.0.0" + +# install pack +# https://buildpacks.io/docs/tools/pack/#linux-script-install +# (curl -sSL "https://github.com/buildpacks/pack/releases/download/v0.29.0/pack-v0.29.0-linux.tgz" | sudo tar -C /usr/local/bin/ --no-same-owner -xzv pack) + +npm i + +ng test --no-watch --code-coverage --browsers Firefox +rm -rf dist/ || true +npm run build + +docker pull paketobuildpacks/builder-jammy-full:0.3.316 + +rm -rf app_server/ || true +mkdir app_server +mv dist/ app_server/dist + +pack -v \ +--path app_server \ +build \ +$REPO_IMAGE/$PROJECT_NAME:$VERSION \ +--env HTTP_PROXY="$HTTP_PROXY" \ +--env HTTPS_PROXY="$HTTPS_PROXY" \ +--env NO_PROXY="$NO_PROXY" \ +--env BP_NODE_OPTIMIZE_MEMORY=true \ +--env BP_HEALTH_CHECKER_ENABLED=true \ +--env BP_LAUNCHPOINT="dist/authorization-frontend/server/server.mjs" \ +--buildpack gcr.io/paketo-buildpacks/nodejs \ +--buildpack gcr.io/paketo-buildpacks/health-checker:latest \ +--builder paketobuildpacks/builder-jammy-full:0.3.316 + +rm -rf app_server + +# publish in docker hub +# docker login +# docker push $REPO_IMAGE/$PROJECT_NAME:$VERSION +# docker logout +# docker rmi $REPO_IMAGE/$PROJECT_NAME:$VERSION diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/karma.conf.js b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/karma.conf.js new file mode 100644 index 00000000..ec05f3cc --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/karma.conf.js @@ -0,0 +1,40 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage'), + require('@angular-devkit/build-angular/plugins/karma'), + require("karma-firefox-launcher") + ], + client: { + jasmine: { + // you can add configuration options for Jasmine here + // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html + // for example, you can disable the random execution with `random: false` + // or set a specific seed with `seed: 4321` + }, + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + jasmineHtmlReporter: { + suppressAll: true // removes the duplicated traces + }, + coverageReporter: { + dir: require('path').join(__dirname, './coverage/authorization-frontend'), + subdir: '.', + reporters: [ + { type: 'html' }, + { type: 'text-summary' } + ] + }, + reporters: ['progress', 'kjhtml'], + browsers: ['Firefox'], + restartOnFileChange: true + }); +}; diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/mock-data.json b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/mock-data.json new file mode 100644 index 00000000..48c67be4 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/mock-data.json @@ -0,0 +1,16 @@ +{ + "data":[ + { + "x": 1, + "y": 2.3 + }, + { + "x": 2, + "y": 5.6 + }, + { + "x": 3, + "y": 4.7 + } + ] + } diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/mock-server.js b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/mock-server.js new file mode 100644 index 00000000..1cd22fba --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/mock-server.js @@ -0,0 +1,60 @@ +const jsonServer = require('json-server'); +const server = jsonServer.create(); +const router = jsonServer.router('mock-data.json'); +const middlewares = jsonServer.defaults(); + +server.use(middlewares); + +server.post('/login', (req, res) => { + res.status(200).jsonp({ + redirect_to: "/consent" + }) +}) + +server.get('/somesome', (req, res) => { + res.status(200).jsonp({ + "test": "aaaaaaaaaaaaaaaaaaaaaaaa!" + }) +}) + +server.get('/consent/scopes', (req, res) => { + res.status(200).jsonp(["read", "write"]) +}) + +server.get('/consent/subject', (req, res) => { + res.status(200).jsonp('So Good Man') +}) + +server.get('/consent/client-name', (req, res) => { + res.status(200).jsonp('Some App') +}) + +server.put('/consent', (req, res) => { + res.status(200).jsonp({ + redirect_to: "some_redirect" + }); +}) + +server.delete('/consent/cancel', (req, res) => { + res.status(200).jsonp({ + redirect_to: "some_redirect" + }); +}) + +server.put('/logout', (req, res) => { + res.status(200).jsonp({ + redirect_to: "/logout/sssaaa" + }); +}) + +server.post('/registration', (req, res) => { + res.status(200).jsonp({}); +}) + + + +server.use(router); + +server.listen(3000, () => { + console.log('JSON Server is running'); +}); diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/package.json b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/package.json new file mode 100644 index 00000000..9a2e1473 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/package.json @@ -0,0 +1,49 @@ +{ + "name": "authorization-frontend", + "version": "0.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build", + "watch": "ng build --watch --configuration development", + "test": "ng test", + "dev:mock": "node mock-server.js", + "serve:ssr:authorization-frontend": "ng build --configuration development && node dist/authorization-frontend/server/server.mjs" + }, + "private": true, + "dependencies": { + "@angular/animations": "^17.0.0", + "@angular/cdk": "^17.0.1", + "@angular/common": "^17.0.0", + "@angular/compiler": "^17.0.0", + "@angular/core": "^17.0.0", + "@angular/forms": "^17.0.0", + "@angular/material": "^17.0.1", + "@angular/platform-browser": "^17.0.0", + "@angular/platform-browser-dynamic": "^17.0.0", + "@angular/platform-server": "^17.0.0", + "@angular/router": "^17.0.0", + "@angular/ssr": "^17.0.1", + "express": "^4.18.2", + "rxjs": "~7.8.0", + "tslib": "^2.3.0", + "zone.js": "~0.14.2" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^17.0.1", + "@angular/cli": "~17.0.1", + "@angular/compiler-cli": "^17.0.0", + "@types/express": "^4.17.17", + "@types/jasmine": "~5.1.0", + "@types/node": "^18.18.0", + "jasmine-core": "~5.1.0", + "json-server": "^0.17.4", + "karma": "~6.4.0", + "karma-chrome-launcher": "~3.2.0", + "karma-coverage": "~2.2.0", + "karma-firefox-launcher": "^2.1.2", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "~2.1.0", + "typescript": "~5.2.2" + } +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/server.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/server.ts new file mode 100644 index 00000000..96014ed6 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/server.ts @@ -0,0 +1,60 @@ +import { APP_BASE_HREF } from '@angular/common'; +import { CommonEngine } from '@angular/ssr'; +import express from 'express'; +import { fileURLToPath } from 'node:url'; +import { dirname, join, resolve } from 'node:path'; +import bootstrap from './src/main.server'; + +// The Express app is exported so that it can be used by serverless Functions. +export function app(): express.Express { + const server = express(); + const serverDistFolder = dirname(fileURLToPath(import.meta.url)); + const browserDistFolder = resolve(serverDistFolder, '../browser'); + const indexHtml = join(serverDistFolder, 'index.server.html'); + + const commonEngine = new CommonEngine(); + + server.set('view engine', 'html'); + server.set('views', browserDistFolder); + + server.get('/health', (req, res) => { + res.status(200).send('Ok'); + }); + + // Example Express Rest API endpoints + // server.get('/api/**', (req, res) => { }); + // Serve static files from /browser + server.get('*.*', express.static(browserDistFolder, { + maxAge: '1y' + })); + + // All regular routes use the Angular engine + server.get('*', (req, res, next) => { + const { protocol, originalUrl, baseUrl, headers } = req; + + commonEngine + .render({ + bootstrap, + documentFilePath: indexHtml, + url: `${protocol}://${headers.host}${originalUrl}`, + publicPath: browserDistFolder, + providers: [{ provide: APP_BASE_HREF, useValue: baseUrl }], + }) + .then((html) => res.send(html)) + .catch((err) => next(err)); + }); + + return server; +} + +function run(): void { + const port = process.env['PORT'] || 4000; + + // Start up the Node server + const server = app(); + server.listen(port, () => { + console.log(`Node Express server listening on http://localhost:${port}`); + }); +} + +run(); diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.component.html b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.component.html new file mode 100644 index 00000000..90c6b646 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.component.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.component.scss b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.component.scss new file mode 100644 index 00000000..00608b47 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.component.scss @@ -0,0 +1,7 @@ +:host { + min-width: inherit; + width: inherit; + min-height: inherit; + height: inherit; + display: block; +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.component.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.component.ts new file mode 100644 index 00000000..1b9a9744 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.component.ts @@ -0,0 +1,32 @@ +import { CommonModule } from '@angular/common'; +import { Component, HostListener, QueryList, ViewChildren } from '@angular/core'; +import { MatTooltip } from '@angular/material/tooltip'; +import { RouterOutlet } from '@angular/router'; + +@Component({ + selector: 'app-root', + standalone: true, + imports: [CommonModule, RouterOutlet], + templateUrl: './app.component.html', + styleUrls: ['./app.component.scss'] +}) +export class AppComponent { + + @ViewChildren(MatTooltip) allMatTooltip !: QueryList; + + @HostListener('window:keydown', ['$event']) onKeydownHandler(event: KeyboardEvent) { + if (!event.ctrlKey) { return; } + + if (event.metaKey || event?.key === 'OS') { + if (this.allMatTooltip) { + this.allMatTooltip.forEach(matTooltip => matTooltip.show()); + setTimeout(() => { + this.allMatTooltip.forEach(matTooltip => matTooltip.hide()); + }, 3000); + } + return false; + } + return; + } + +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.config.server.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.config.server.ts new file mode 100644 index 00000000..e16171fa --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.config.server.ts @@ -0,0 +1,11 @@ +import { mergeApplicationConfig, ApplicationConfig } from '@angular/core'; +import { provideServerRendering } from '@angular/platform-server'; +import { appConfig } from './app.config'; + +const serverConfig: ApplicationConfig = { + providers: [ + provideServerRendering() + ] +}; + +export const config = mergeApplicationConfig(appConfig, serverConfig); \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.config.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.config.ts new file mode 100644 index 00000000..cad68d66 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.config.ts @@ -0,0 +1,29 @@ +import { ApplicationConfig, importProvidersFrom } from '@angular/core'; +import { provideRouter } from '@angular/router'; + +import { routes } from './app.routes'; +import { provideAnimations } from '@angular/platform-browser/animations'; +import { HttpClientModule } from '@angular/common/http'; +import { provideClientHydration } from '@angular/platform-browser'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; +import { MatTooltipModule } from '@angular/material/tooltip'; +import { MatButtonModule } from '@angular/material/button'; + +export const appConfig: ApplicationConfig = { + providers: [ + provideRouter(routes), + provideAnimations(), + importProvidersFrom( + HttpClientModule, + FormsModule, + ReactiveFormsModule, + MatFormFieldModule, + MatInputModule, + MatTooltipModule, + MatButtonModule + ), provideClientHydration() + ] +}; + diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.routes.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.routes.ts new file mode 100644 index 00000000..2f084bff --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.routes.ts @@ -0,0 +1,35 @@ +import { Routes } from '@angular/router'; +import { NotFoundComponent } from './not-found/not-found.component'; + +export const routes: Routes = [ + { + path: 'error', + loadComponent: () => import("./error/error.component").then(c => c.ErrorComponent) + }, + { path: 'registration', loadChildren: () => import('./registration/registration.module').then(m => m.RegistrationModule) }, + { + path: '', + redirectTo: '/registration', + pathMatch: 'full' + }, + { + path: 'login', + loadComponent: () => import("./login/login.component").then(c => c.LoginComponent) + }, + { + path: 'consent', + loadComponent: () => import("./consent/consent.component").then(c => c.ConsentComponent) + }, + { + path: "logout/request", + loadComponent: () => import("./logout-request/logout-request.component").then(c => c.LogoutRequestComponent) + }, + { + path: "logout/:status", + loadComponent: () => import("./logout-handled/logout-handled.component").then(c => c.LogoutHandledComponent) + }, + { + path: '**', + component: NotFoundComponent + } +]; diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.service.spec.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.service.spec.ts new file mode 100644 index 00000000..7da7dab2 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.service.spec.ts @@ -0,0 +1,18 @@ +import { TestBed } from '@angular/core/testing'; + +import { AppService } from './app.service'; + +describe('AppService', () => { + let service: AppService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(AppService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + + expect(service.generateRandomString(20)).toBeTruthy(); + }); +}); diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.service.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.service.ts new file mode 100644 index 00000000..c864b18b --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/app.service.ts @@ -0,0 +1,20 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) +export class AppService { + + generateRandomString(length: number): string { + + let result: string = ''; + let characters: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + let charactersLength: number = characters.length; + + for (let i: number = 0; i < length; i++) { + result += characters.charAt(Math.floor(Math.random() * charactersLength)); + } + + return result; + } +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/consent/consent.component.html b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/consent/consent.component.html new file mode 100644 index 00000000..29353424 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/consent/consent.component.html @@ -0,0 +1,48 @@ +
+ +
+ + + + + +
+ Hi {{ subject }}, application {{ clientName }} wants access resources on your + behalf + and to: +
+ + + @for (scope of scopes; track scope; let idx = $index) { + {{ scope }} + @if(idx !== (scopes.length - 1)){ + + } + } + + +
+ Do you want to be asked next time when this application wants to access your data? The application + will + not be able to ask for more permissions without your consent. +
+ Do not ask me + again + +
+ + + +
+
+
+
+
\ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/consent/consent.component.scss b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/consent/consent.component.scss new file mode 100644 index 00000000..48a8e953 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/consent/consent.component.scss @@ -0,0 +1,11 @@ +:host { + min-width: inherit; + width: inherit; + min-height: inherit; + height: inherit; + + display: flex; + flex-direction: column; + + margin: 1em; +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/consent/consent.component.spec.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/consent/consent.component.spec.ts new file mode 100644 index 00000000..459a79ae --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/consent/consent.component.spec.ts @@ -0,0 +1,288 @@ +import { ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing'; + +import { ConsentComponent } from './consent.component'; +import { GenerationCookieCsrfService } from '../generation-cookie-csrf.service'; +import { ConsentService } from './consent.service'; +import { WindowService } from '../window.service'; +import { DebugElement } from '@angular/core'; +import { MatCheckboxHarness } from '@angular/material/checkbox/testing'; +import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'; +import { HarnessLoader } from '@angular/cdk/testing'; +import { By } from '@angular/platform-browser'; +import { of, throwError } from 'rxjs'; +import { ResponseWithRedirectModel } from '../models/response-with-redirect.model'; +import { HttpErrorResponse } from '@angular/common/http'; + +describe('ConsentComponent', () => { + let generationCookieCsrfServiceSpy: jasmine.SpyObj; + let consentServiceSpy: jasmine.SpyObj; + let windowServiceSpy: jasmine.SpyObj; + + let component: ConsentComponent; + let fixture: ComponentFixture; + + let hostDe: DebugElement; + + let checkbox: MatCheckboxHarness; + let allowButton: HTMLButtonElement; + let denyButton: HTMLButtonElement; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ConsentComponent], + providers: [ + { + provide: GenerationCookieCsrfService, + useValue: jasmine.createSpyObj('GenerationCookieCsrfService', ['generateCookieCsrf']) + }, + { + provide: ConsentService, + useValue: jasmine.createSpyObj('ConsentService', ['clientName', 'scopes', 'subject', 'consentSuccess', 'consentCancel']) + }, + { + provide: WindowService, useValue: jasmine.createSpyObj('WindowService', ['get']) + } + ] + }) + .compileComponents() + .then(async () => { + generationCookieCsrfServiceSpy = TestBed.inject(GenerationCookieCsrfService) as jasmine.SpyObj; + consentServiceSpy = TestBed.inject(ConsentService) as jasmine.SpyObj; + windowServiceSpy = TestBed.inject(WindowService) as jasmine.SpyObj; + + const clientName: string = 'Some client'; + const subject: string = 'Some Subject'; + const scopes: string[] = ['read', "write"]; + + consentServiceSpy.clientName.and.returnValue(of(clientName)); + consentServiceSpy.subject.and.returnValue(of(subject)); + consentServiceSpy.scopes.and.returnValue(of(scopes)); + + fixture = TestBed.createComponent(ConsentComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + + let loader: HarnessLoader = TestbedHarnessEnvironment.loader(fixture) + + checkbox = await loader.getHarness(MatCheckboxHarness.with({ name: 'isRemember' })); + + hostDe = fixture.debugElement; + + allowButton = hostDe.query(By.css("#allowButton")).nativeElement; + denyButton = hostDe.query(By.css("#denyButton")).nativeElement; + + }); + + }); + + + it('consent should be succeed (GUI)', fakeAsync(() => { + // given (instead of when) + + const responseWithRedirectModel: ResponseWithRedirectModel = { + redirect_to: "/some_url" + }; + consentServiceSpy.consentSuccess.and.returnValue(of(responseWithRedirectModel)); + + const windowObj = { + "location": { + "href": {} + } + } + windowServiceSpy.get.and.returnValue(windowObj); + + // when + + checkbox.toggle(); + tick(); + + fixture.detectChanges(); + expect(component.isRemember.value).withContext("component.isRemember === true").toEqual(true); + + allowButton.click(); + tick(); + // then (instead of verify) + + expect(generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count()) + .withContext("generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count() !== 1") + .toBe(1); + + expect(consentServiceSpy.consentSuccess.calls.count()) + .withContext("consentServiceSpy.consentSuccess.calls.count() !== 1") + .toBe(1); + expect(consentServiceSpy.consentSuccess.calls.first().args) + .withContext(`consentServiceSpy.consentSuccess.calls.first().args != [${true} ]`) + .toEqual([true]); + + expect(windowServiceSpy.get.calls.count()) + .withContext("windowServiceSpy.get.calls.count() !== 1") + .toBe(1); + + })); + + it('consent should be succeed (GUI) (enter)', fakeAsync(() => { + // given (instead of when) + + const responseWithRedirectModel: ResponseWithRedirectModel = { + redirect_to: "/some_url" + }; + consentServiceSpy.consentSuccess.and.returnValue(of(responseWithRedirectModel)); + + const windowObj = { + "location": { + "href": {} + } + } + windowServiceSpy.get.and.returnValue(windowObj); + + // when + + // enter + window.dispatchEvent(new KeyboardEvent('keydown', { + key: 'enter' + })); + fixture.detectChanges(); + + // then (instead of verify) + + expect(generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count()) + .withContext("generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count() !== 1") + .toBe(1); + + expect(consentServiceSpy.consentSuccess.calls.count()) + .withContext("consentServiceSpy.consentSuccess.calls.count() !== 1") + .toBe(1); + expect(consentServiceSpy.consentSuccess.calls.first().args) + .withContext(`consentServiceSpy.consentSuccess.calls.first().args != [${false} ]`) + .toEqual([false]); + + expect(windowServiceSpy.get.calls.count()) + .withContext("windowServiceSpy.get.calls.count() !== 1") + .toBe(1); + })); + + + it('deny (GUI)', fakeAsync(() => { + // given (instead of when) + + const responseWithRedirectModel: ResponseWithRedirectModel = { + redirect_to: "/some_url" + }; + consentServiceSpy.consentCancel.and.returnValue(of(responseWithRedirectModel)); + + const windowObj = { + "location": { + "href": {} + } + } + windowServiceSpy.get.and.returnValue(windowObj); + + // when + + denyButton.click(); + tick(); + // then (instead of verify) + + expect(generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count()) + .withContext("generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count() !== 1") + .toBe(1); + + expect(consentServiceSpy.consentCancel.calls.count()) + .withContext("consentServiceSpy.consentCancel.calls.count() !== 1") + .toBe(1); + + expect(windowServiceSpy.get.calls.count()) + .withContext("windowServiceSpy.get.calls.count() !== 1") + .toBe(1); + })); + + it('deny (GUI) (esc)', fakeAsync(() => { + // given (instead of when) + + const responseWithRedirectModel: ResponseWithRedirectModel = { + redirect_to: "/some_url" + }; + consentServiceSpy.consentCancel.and.returnValue(of(responseWithRedirectModel)); + + const windowObj = { + "location": { + "href": {} + } + } + windowServiceSpy.get.and.returnValue(windowObj); + + // when + + // enter + window.dispatchEvent(new KeyboardEvent('keydown', { + key: 'Escape', + })); + fixture.detectChanges(); + + // then (instead of verify) + + expect(generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count()) + .withContext("generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count() !== 1") + .toBe(1); + + expect(consentServiceSpy.consentCancel.calls.count()) + .withContext("consentServiceSpy.consentCancel.calls.count() !== 1") + .toBe(1); + + expect(windowServiceSpy.get.calls.count()) + .withContext("windowServiceSpy.get.calls.count() !== 1") + .toBe(1); + })); + + it('consentSuccess (GUI) (esc) (fail)', fakeAsync(() => { + // given (instead of when) + + consentServiceSpy.consentSuccess.and.returnValue(throwError(() => new HttpErrorResponse({status: 404}))); + // when + + checkbox.toggle(); + tick(); + + fixture.detectChanges(); + expect(component.isRemember.value).withContext("component.isRemember === true").toEqual(true); + + allowButton.click(); + tick(); + // then (instead of verify) + + expect(generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count()) + .withContext("generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count() !== 1") + .toBe(1); + + expect(consentServiceSpy.consentSuccess.calls.count()) + .withContext("consentServiceSpy.consentSuccess.calls.count() !== 1") + .toBe(1); + expect(consentServiceSpy.consentSuccess.calls.first().args) + .withContext(`consentServiceSpy.consentSuccess.calls.first().args != [${true} ]`) + .toEqual([true]); + + + })); + + it('deny (GUI) (fail)', fakeAsync(() => { + // given (instead of when) + + consentServiceSpy.consentCancel.and.returnValue(throwError(() => new HttpErrorResponse({status: 404}))); + // when + + denyButton.click(); + tick(); + // then (instead of verify) + + expect(generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count()) + .withContext("generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count() !== 1") + .toBe(1); + + expect(consentServiceSpy.consentCancel.calls.count()) + .withContext("consentServiceSpy.consentCancel.calls.count() !== 1") + .toBe(1); + + })); + + +}); diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/consent/consent.component.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/consent/consent.component.ts new file mode 100644 index 00000000..7ef357a3 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/consent/consent.component.ts @@ -0,0 +1,144 @@ +import { Component, HostListener, OnDestroy } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { MatButtonModule } from '@angular/material/button'; +import { MatCheckboxModule } from '@angular/material/checkbox'; + +import { MatDividerModule } from '@angular/material/divider'; +import { MatListModule } from '@angular/material/list'; +import { Observable, Subject, first, takeUntil } from 'rxjs'; +import { ConsentService } from './consent.service'; +import { FormControl, ReactiveFormsModule } from '@angular/forms'; +import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; +import { HttpErrorResponse } from '@angular/common/http'; +import { WindowService } from '../window.service'; +import { GenerationCookieCsrfService } from '../generation-cookie-csrf.service'; +import { MatTooltipModule } from '@angular/material/tooltip'; + +@Component({ + selector: 'app-consent', + standalone: true, + imports: [ + CommonModule, + MatButtonModule, + MatCheckboxModule, + MatDividerModule, + MatListModule, + ReactiveFormsModule, + MatProgressSpinnerModule, + MatTooltipModule + ], + templateUrl: './consent.component.html', + styleUrl: './consent.component.scss' +}) +export class ConsentComponent implements OnDestroy { + // to clear the rxjs memory + // для очистки памяти rxjs + private readonly onDestroy = new Subject(); + + // meta info + requestedScopes$: Observable; + subject$: Observable; + clientName$: Observable; + + readonly isRemember = new FormControl(false); + + // waiting for a response from the server + // ожидание ответа от сервера + getResponseFromServerFlag: boolean = false; + + constructor(private consentService: ConsentService, + private generationCookieCsrfService: GenerationCookieCsrfService, + private windowService: WindowService) { + + this.requestedScopes$ = this.consentService.scopes() + .pipe( + first(), + takeUntil(this.onDestroy) + ); + + this.subject$ = this.consentService.subject() + .pipe( + first(), + takeUntil(this.onDestroy) + ); + + this.clientName$ = this.consentService.clientName() + .pipe( + first(), + takeUntil(this.onDestroy) + ); + } + + @HostListener('window:keydown.enter', ['$event']) onKeydownEnterHandler(event: KeyboardEvent) { + this.allowAccess(!!this.isRemember.value); + return; + } + + @HostListener('window:keydown.esc', ['$event']) onKeydownEscHandler(event: KeyboardEvent) { + this.denyAccess(); + return; + } + + allowAccess(isRemember: boolean) { + if (!this.getResponseFromServerFlag) { + + this.getResponseFromServerFlag = true; + + this.generationCookieCsrfService.generateCookieCsrf(); + + this.consentService.consentSuccess(isRemember) + .pipe( + first(), + takeUntil(this.onDestroy) + ) + .subscribe({ + next: (responseLogin) => { + + this.windowService.get().location.href = responseLogin.redirect_to; + + }, + error: (error: HttpErrorResponse) => { + + // received response + // ответ получили + this.getResponseFromServerFlag = false; + } + }); + } + } + + denyAccess() { + + + if (!this.getResponseFromServerFlag) { + + this.getResponseFromServerFlag = true; + + this.generationCookieCsrfService.generateCookieCsrf(); + + this.consentService.consentCancel() + .pipe( + first(), + takeUntil(this.onDestroy) + ) + .subscribe({ + next: (responseLogin) => { + + this.windowService.get().location.href = responseLogin.redirect_to; + + }, + error: (error: HttpErrorResponse) => { + + // received response + // ответ получили + this.getResponseFromServerFlag = false; + } + }); + } + } + + ngOnDestroy(): void { + this.onDestroy.next(); + this.onDestroy.complete(); + } +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/consent/consent.service.spec.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/consent/consent.service.spec.ts new file mode 100644 index 00000000..ffd71687 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/consent/consent.service.spec.ts @@ -0,0 +1,246 @@ +import { TestBed } from '@angular/core/testing'; + +import { ConsentService } from './consent.service'; +import { ErrorService } from '../error.service'; +import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { environment } from '../../environments/environment'; +import { ResponseWithRedirectModel } from '../models/response-with-redirect.model'; +import { HttpErrorResponse, HttpParams } from '@angular/common/http'; + +describe('ConsentService', () => { + let service: ConsentService; + let errorServiceSpy: jasmine.SpyObj; + let httpTestingController: HttpTestingController; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [ HttpClientTestingModule ], + providers: [ + ConsentService, + { + provide: ErrorService, useValue: jasmine.createSpyObj('ErrorService', ['handle']) + } + ] + }); + service = TestBed.inject(ConsentService); + errorServiceSpy = TestBed.inject(ErrorService) as jasmine.SpyObj; + httpTestingController = TestBed.inject(HttpTestingController); + }); + + afterEach(() => { + // After every test, assert that there are no more pending requests. + httpTestingController.verify(); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + + it('clientName', (done: DoneFn) => { + // given (instead of when) + + const consentClientNameHttpURL = `${environment.apiUrl}/consent/client-name`; + + const clientNameFoo = 'Foo'; + + // when + + service.clientName() + .subscribe({ + next: clientN => { + expect(clientN).toEqual(clientNameFoo); + done(); + }, + error: er => done.fail('clientName is expected') + }); + + const req = httpTestingController.expectOne(consentClientNameHttpURL); + req.flush(clientNameFoo); + + // then (instead of verify) + + expect(req.request.method).toEqual('GET'); + }); + + it('subject', (done: DoneFn) => { + // given (instead of when) + + const subjectClientNameHttpURL = `${environment.apiUrl}/consent/subject`; + + const subject = 'qwerty'; + + // when + + service.subject() + .subscribe({ + next: sub => { + expect(sub).toEqual(subject); + done(); + }, + error: er => done.fail('subject is expected') + }); + + const req = httpTestingController.expectOne(subjectClientNameHttpURL); + req.flush(subject); + + // then (instead of verify) + + expect(req.request.method).toEqual('GET'); + }); + + it('scopes', (done: DoneFn) => { + // given (instead of when) + + const scopesHttpURL = `${environment.apiUrl}/consent/scopes`; + + const scopes: string[] = ['read', 'write']; + + // when + + service.scopes() + .subscribe({ + next: scops => { + expect(scops).toEqual(scopes); + done(); + }, + error: er => done.fail('scopes is expected') + }); + + const req = httpTestingController.expectOne(scopesHttpURL); + req.flush(scopes); + + // then (instead of verify) + + expect(req.request.method).toEqual('GET'); + }); + + it('consentSuccess', (done: DoneFn) => { + // given (instead of when) + + const consentSuccessHttpURL = `${environment.apiUrl}/consent`; + + const responseWithRedirectModel: ResponseWithRedirectModel = { + redirect_to: "some_redirect" + }; + + // when + + service.consentSuccess() + .subscribe({ + next: responseWithRedirectModelLocal => { + expect(responseWithRedirectModelLocal).toEqual(responseWithRedirectModel); + done(); + }, + error: er => done.fail('responseWithRedirectModelLocal is expected') + }); + + const req = httpTestingController.expectOne(consentSuccessHttpURL); + req.flush(responseWithRedirectModel); + + // then (instead of verify) + + expect(req.request.method).toEqual('PUT'); + }); + + + it('consentSuccess', (done: DoneFn) => { + // given (instead of when) + + const consentSuccessHttpURL = `${environment.apiUrl}/consent?is-remember=true`; + + let params = new HttpParams(); + params = params.append('is-remember', true); + + const responseWithRedirectModel: ResponseWithRedirectModel = { + redirect_to: "some_redirect" + }; + + // when + + service.consentSuccess(true) + .subscribe({ + next: responseWithRedirectModelLocal => { + expect(responseWithRedirectModelLocal).toEqual(responseWithRedirectModel); + done(); + }, + error: er => done.fail('responseWithRedirectModelLocal is expected') + }); + + const req = httpTestingController.expectOne(consentSuccessHttpURL); + req.flush(responseWithRedirectModel); + + // then (instead of verify) + + expect(req.request.method).toEqual('PUT'); + expect(req.request.params.has("is-remember")).toEqual(true); + expect(req.request.params.get("is-remember")).toEqual('true'); + }); + + + it('consentCancel', (done: DoneFn) => { + // given (instead of when) + + const consentCancelHttpURL = `${environment.apiUrl}/consent/cancel`; + + const responseWithRedirectModel: ResponseWithRedirectModel = { + redirect_to: "some_redirect" + }; + + // when + + service.consentCancel() + .subscribe({ + next: responseWithRedirectModelLocal => { + expect(responseWithRedirectModelLocal).toEqual(responseWithRedirectModel); + done(); + }, + error: er => done.fail('responseWithRedirectModelLocal is expected') + }); + + const req = httpTestingController.expectOne(consentCancelHttpURL); + req.flush(responseWithRedirectModel); + + // then (instead of verify) + + expect(req.request.method).toEqual('DELETE'); + }); + + it('consentCancel should be fail', done => { + // given (instead of when) + + const consentCancelHttpURL = `${environment.apiUrl}/consent/cancel`; + + const expectedErrorResponse = new HttpErrorResponse({ + error: '["password is invalid"]', + url: consentCancelHttpURL, + status: 400, + statusText: 'Bad request' + }); + + // when + + service.consentCancel() + .subscribe({ + next: responseWithRedirectModelLocal => done.fail('consentCancel not expected'), + error: (actualErrorResponse: HttpErrorResponse) => { + expect(actualErrorResponse).toEqual(expectedErrorResponse); + done(); + } + }); + + + const req = httpTestingController.expectOne(consentCancelHttpURL); + + req.flush(expectedErrorResponse.error, expectedErrorResponse); + + // then (instead of verify) + + expect(req.request.method).toEqual('DELETE'); + + expect(errorServiceSpy.handle.calls.count()) + .toBe(1); + expect(errorServiceSpy.handle.calls.first().args) + .toEqual([ expectedErrorResponse.error ]); + }); +}); diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/consent/consent.service.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/consent/consent.service.ts new file mode 100644 index 00000000..552a993b --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/consent/consent.service.ts @@ -0,0 +1,72 @@ +import { HttpClient, HttpErrorResponse, HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { ErrorService } from '../error.service'; +import { Observable, catchError, map, throwError } from 'rxjs'; +import { environment } from '../../environments/environment'; +import { ResponseWithRedirectModel } from '../models/response-with-redirect.model'; + +@Injectable({ + providedIn: 'root' +}) +export class ConsentService { + constructor(private http: HttpClient, private errorService: ErrorService) { } + + clientName(): Observable { + const requestOptions: Object = { + responseType: 'text' + } + + return this.http.get( + `${environment.apiUrl}/consent/client-name`, requestOptions) + .pipe( + catchError(this.errorHandler.bind(this)) + ); + } + + scopes(): Observable { + return this.http.get( + `${environment.apiUrl}/consent/scopes`) + .pipe( + catchError(this.errorHandler.bind(this)) + ); + } + + subject(): Observable { + const requestOptions: Object = { + responseType: 'text' + } + + return this.http.get( + `${environment.apiUrl}/consent/subject`, requestOptions) + .pipe( + catchError(this.errorHandler.bind(this)) + ); + } + + consentSuccess(isRemember: boolean = false): Observable { + let params = new HttpParams(); + + if(isRemember) { + params = params.append('is-remember', isRemember); + } + + return this.http.put( + `${environment.apiUrl}/consent`, {}, { params: params }) + .pipe( + catchError(this.errorHandler.bind(this)) + ); + } + + consentCancel(): Observable { + return this.http.delete( + `${environment.apiUrl}/consent/cancel`, {}) + .pipe( + catchError(this.errorHandler.bind(this)) + ); + } + + private errorHandler(error: HttpErrorResponse) { + this.errorService.handle(error.error) + return throwError(() => error) + } +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/cookie.service.spec.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/cookie.service.spec.ts new file mode 100644 index 00000000..9ba91e0f --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/cookie.service.spec.ts @@ -0,0 +1,61 @@ +import { TestBed } from '@angular/core/testing'; + +import { CookieService } from './cookie.service'; + +describe('CookieService', () => { + let service: CookieService; + + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [ + CookieService + ] + }); + service = TestBed.inject(CookieService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + it('setCookie, getCookie and deleteCookie', () => { + // given (instead of when) + + const expectedNotExistCookieValue: string | undefined = undefined; + + const expectedSomeCookie = { + name: 'myCookieName', + value: 'myCookieValue', + options: { + path: '/', + 'max-age': 120, + secure: true, + samesite: 'lax', + expires: new Date((new Date()).getTime() + 1) + } + }; + + const expectedSomeCookie2 = { + name: 'myCookieName2', + value: 'myCookieValue2' + }; + + // when + + const actualNotExistCookieValue = service.getCookie('notExistCookie'); + + service.setCookie(expectedSomeCookie.name, expectedSomeCookie.value, expectedSomeCookie.options); + const actualSomeCookieValue = service.getCookie(expectedSomeCookie.name); + + service.setCookie(expectedSomeCookie2.name, expectedSomeCookie2.value); + service.deleteCookie(expectedSomeCookie2.name); + const actualSomeCookieValue2 = service.getCookie(expectedSomeCookie2.name); + + // then (instead of verify) + + expect(actualNotExistCookieValue).toEqual(expectedNotExistCookieValue); + expect(actualSomeCookieValue).toEqual(expectedSomeCookie.value); + expect(actualSomeCookieValue2).toEqual(expectedNotExistCookieValue); + + }) +}); \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/cookie.service.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/cookie.service.ts new file mode 100644 index 00000000..edf0fc6e --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/cookie.service.ts @@ -0,0 +1,48 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) +export class CookieService { + + // возвращает куки с указанным name, + // или undefined, если ничего не найдено + getCookie(name: string): string | undefined { + + let matches = document.cookie.match(new RegExp( + "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" + )); + return matches ? decodeURIComponent(matches[1]) : undefined; + } + + setCookie(name: string, value: string, options: any = {} ) { + + options = { + path: '/', + // при необходимости добавьте другие значения по умолчанию + ...options + }; + + if (options.expires instanceof Date) { + options.expires = options.expires.toUTCString(); + } + + let updatedCookie = encodeURIComponent(name) + "=" + encodeURIComponent(value); + + for (let optionKey in options) { + updatedCookie += "; " + optionKey; + let optionValue = options[optionKey]; + if (optionValue !== true) { + updatedCookie += "=" + optionValue; + } + } + + document.cookie = updatedCookie; + } + + deleteCookie(name: string) { + this.setCookie(name, "", { + 'max-age': -1 + }) + } +} \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/error.service.spec.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/error.service.spec.ts new file mode 100644 index 00000000..b49e366b --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/error.service.spec.ts @@ -0,0 +1,50 @@ +import { TestBed } from '@angular/core/testing'; + +import { ErrorService } from './error.service'; +import { MatSnackBar, MatSnackBarConfig, MatSnackBarRef, TextOnlySnackBar } from '@angular/material/snack-bar'; + +describe('ErrorService', () => { + let service: ErrorService; + let matSnackBarSpy: jasmine.SpyObj; + + beforeEach(() => { + + TestBed.configureTestingModule({ + providers: [ + ErrorService, + { + provide: MatSnackBar, useValue: jasmine.createSpyObj('MatSnackBar', ['open']) + } + ] + }); + service = TestBed.inject(ErrorService); + matSnackBarSpy = TestBed.inject(MatSnackBar) as jasmine.SpyObj; + + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + it('handle', () => { + // given (instead of when) + + const expectedArgsOpen: [message: string, action?: string | undefined, config?: MatSnackBarConfig | undefined] = [ + 'Some Error', + service.actionCloseButtonName, + service.confOptionsSnackbar + ]; + + // when + + service.handle(expectedArgsOpen[0]); + + // then (instead of verify) + + expect(matSnackBarSpy.open.calls.count()) + .toBe(1); + expect(matSnackBarSpy.open.calls.first().args) + .toEqual(expectedArgsOpen); + }); + +}); diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/error.service.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/error.service.ts new file mode 100644 index 00000000..612f0bf0 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/error.service.ts @@ -0,0 +1,21 @@ +import {Injectable} from '@angular/core' +import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar' + +@Injectable({ + providedIn: 'root' +}) +export class ErrorService { + + readonly actionCloseButtonName = 'CLOSE'; + + readonly confOptionsSnackbar: MatSnackBarConfig = { + duration: 5000 + }; + + constructor(private matSnackBar: MatSnackBar){} + + handle(message: string) { + this.matSnackBar.open(message, this.actionCloseButtonName, this.confOptionsSnackbar); + } + +} \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/error/error.component.html b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/error/error.component.html new file mode 100644 index 00000000..d0528a65 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/error/error.component.html @@ -0,0 +1,16 @@ + + + logo +

Пришла ошибка от сервера аутентификации и авторизации

+ +

{{ errorOnPageModel.error }}

+ +

{{ errorOnPageModel.errorDescription }}

+ + + + cat_401 +
\ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/error/error.component.scss b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/error/error.component.scss new file mode 100644 index 00000000..3b7d5c08 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/error/error.component.scss @@ -0,0 +1,9 @@ +:host { + min-width: inherit; + width: inherit; + min-height: inherit; + height: inherit; + display: flex; + flex-direction: column; + align-items: center; +} \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/error/error.component.spec.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/error/error.component.spec.ts new file mode 100644 index 00000000..b6477249 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/error/error.component.spec.ts @@ -0,0 +1,161 @@ +import { ComponentFixture, TestBed, fakeAsync } from '@angular/core/testing'; + +import { RouterTestingHarness } from '@angular/router/testing'; + +import { ErrorComponent } from './error.component'; +import { ErrorOnPageModel } from '../models/error-on-page.model'; +import { ErrorResponseCode } from '../models/error-response-code.model'; +import { By } from '@angular/platform-browser'; +import { provideRouter } from '@angular/router'; +import { WindowService } from '../window.service'; + +describe('ErrorComponent', () => { + + let harness: RouterTestingHarness; + + let error: string = '111'; + let error_description: string = '222'; + let reauthentication_location: string = '/qqq'; + + let windowServiceSpy: jasmine.SpyObj; + + beforeEach(async () => { + + await TestBed.configureTestingModule({ + imports: [ErrorComponent], + providers: [ + provideRouter([ + { + path: 'error', + component: ErrorComponent + } + ]), + { + provide: WindowService, useValue: jasmine.createSpyObj('WindowService', ['get']) + }, + ] + }) + .compileComponents() + .then(async () => { + harness = await RouterTestingHarness.create(); + + windowServiceSpy = TestBed.inject(WindowService) as jasmine.SpyObj; + + }); + }); + + it('should create', done => { + harness.navigateByUrl(`/error`, ErrorComponent) + .then(comp => { + expect(comp).toBeTruthy(); + + comp + .errorOnPageModel$ + .subscribe( + { + next: el => { + + expect(`Неизвестная ошибка`).toEqual(el.error); + expect("Неизвестное описание").toEqual(el.errorDescription); + expect('/').toEqual(el.reauthenticationLocation); + + done(); + }, + error: er => done.fail("errorOnPageModel is incorrect") + }); + }); + + }); + + it('should create with query param', done => { + + harness.navigateByUrl(`/error?error=${error}&error_description=${error_description}&reauthentication_location=${reauthentication_location}`, ErrorComponent) + .then(compWithQueryParam => { + //when + expect(compWithQueryParam).toBeTruthy(); + + compWithQueryParam + .errorOnPageModel$ + .subscribe( + { + next: el => { + + expect(`Ошибка (${error})`).toEqual(el.error); + expect(error_description).toEqual(el.errorDescription); + expect(reauthentication_location).toEqual(el.reauthenticationLocation); + + done(); + }, + error: er => done.fail("errorOnPageModel is incorrect") + } + ); + + }); + + }); + + it('getErrorResponseCodeRus', async () => { + + // given (instead of when) + await harness.navigateByUrl(`/error`, ErrorComponent); + harness.detectChanges(); + + let h2 = harness.routeDebugElement!.query(By.css("h2")).nativeElement as HTMLParagraphElement; + + // when + expect(h2.textContent).toEqual("Неизвестная ошибка"); + + + let changeAndCheckError = async (currentErrorResponseCode: ErrorResponseCode) => { + await harness.navigateByUrl(`/`); + await harness.navigateByUrl(`/error?error=${currentErrorResponseCode}`, ErrorComponent); + harness.detectChanges(); + h2 = harness.routeDebugElement!.query(By.css("h2")).nativeElement as HTMLParagraphElement; + expect(h2.textContent).toEqual(ErrorOnPageModel.getErrorResponseCodeRus(currentErrorResponseCode)); + } + + await changeAndCheckError(ErrorResponseCode.AccessDenied); + await changeAndCheckError(ErrorResponseCode.InsufficientScope); + await changeAndCheckError(ErrorResponseCode.InvalidClient); + await changeAndCheckError(ErrorResponseCode.InvalidGrant); + await changeAndCheckError(ErrorResponseCode.InvalidRedirectUri); + await changeAndCheckError(ErrorResponseCode.InvalidRequest); + await changeAndCheckError(ErrorResponseCode.InvalidScope); + await changeAndCheckError(ErrorResponseCode.InvalidToken); + await changeAndCheckError(ErrorResponseCode.ServerError); + await changeAndCheckError(ErrorResponseCode.TemporarilyUnavailable); + await changeAndCheckError(ErrorResponseCode.UnauthorizedClient); + await changeAndCheckError(ErrorResponseCode.UnsupportedGrantType); + await changeAndCheckError(ErrorResponseCode.UnsupportedResponseType); + await changeAndCheckError(ErrorResponseCode.UnsupportedTokenType); + + }); + + + it('goToAuth', fakeAsync(async () => { + + // given (instead of when) + + const window = { + "location": { + "href": {} + } + } + + const comp = await harness.navigateByUrl(`/error?error=${error}&error_description=${error_description}&reauthentication_location=${reauthentication_location}`, ErrorComponent); + harness.detectChanges(); + + windowServiceSpy.get.and.returnValue(window); + + // when + expect(comp).toBeTruthy(); + + harness.detectChanges(); + let button = harness.routeDebugElement!.query(By.css("button[mat-raised-button]")).nativeElement as HTMLButtonElement; + button.click(); + harness.detectChanges(); + + expect(window.location.href).toEqual(reauthentication_location); + })); + +}); \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/error/error.component.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/error/error.component.ts new file mode 100644 index 00000000..1deab86a --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/error/error.component.ts @@ -0,0 +1,68 @@ +import { Component, OnDestroy } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { Observable, Subject, first, map, takeUntil } from 'rxjs'; +import { ErrorOnPageModel } from '../models/error-on-page.model'; +import { ActivatedRoute } from '@angular/router'; + +import {MatButtonModule} from '@angular/material/button'; +import { WindowService } from '../window.service'; + +@Component({ + selector: 'app-error', + standalone: true, + imports: [CommonModule, MatButtonModule], + templateUrl: './error.component.html', + styleUrl: './error.component.scss' +}) +export class ErrorComponent implements OnDestroy { + // для очистки памяти rxjs + private readonly onDestroy = new Subject(); + + errorOnPageModel$: Observable; + + constructor( + private windowService: WindowService, + private route: ActivatedRoute + ) { + + this.errorOnPageModel$ = this.route.queryParamMap + .pipe( + first(), + map( + (paramMap) => { + let error: string | null = paramMap.get("error"); + let errorDescription: string | null = paramMap.get("error_description"); + let reauthenticationLocation: string | null = paramMap.get("reauthentication_location"); + + if (error) { + error = ErrorOnPageModel.getErrorResponseCodeRus(error); + } else { + error = "Неизвестная ошибка" + } + + if (!errorDescription) { + errorDescription = "Неизвестное описание" + } + + if (!reauthenticationLocation) { + reauthenticationLocation = '/'; + } + + return new ErrorOnPageModel(error, errorDescription, reauthenticationLocation); + } + ), + takeUntil(this.onDestroy) + ) + } + + goToAuth(url: string) { + this.windowService.get().location.href = url; + } + + ngOnDestroy(): void { + this.onDestroy.next(); + this.onDestroy.complete(); + } + + +} \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/generation-cookie-csrf.service.spec.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/generation-cookie-csrf.service.spec.ts new file mode 100644 index 00000000..ecbff022 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/generation-cookie-csrf.service.spec.ts @@ -0,0 +1,51 @@ +import { TestBed } from '@angular/core/testing'; + +import { GenerationCookieCsrfService } from './generation-cookie-csrf.service'; +import { CookieService } from './cookie.service'; + +describe('GenerationCookieCsrfService', () => { + let service: GenerationCookieCsrfService; + let cookieServiceSpy: jasmine.SpyObj; + + beforeEach(() => { + + TestBed.configureTestingModule({ + providers: [ + GenerationCookieCsrfService, + { + provide: CookieService, useValue: jasmine.createSpyObj('CookieService', ['setCookie']) + } + ] + }); + service = TestBed.inject(GenerationCookieCsrfService); + cookieServiceSpy = TestBed.inject(CookieService) as jasmine.SpyObj; + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + it('generateCookieCsrf', () => { + // given (instead of when) + + const expectedCookieName = service.xsrfTokenCookieName; + + let actualCookieName: string = ''; + let actualCookieValue: string = ''; + cookieServiceSpy.setCookie.and.callFake( (name, value, options) => { + actualCookieName = name; + actualCookieValue = value; + }) + + // when + + service.generateCookieCsrf(); + + // then (instead of verify) + + expect(cookieServiceSpy.setCookie.calls.count()) + .toBe(1); + expect(actualCookieName).toEqual(expectedCookieName); + expect(actualCookieValue).toBeTruthy(); + }); +}); \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/generation-cookie-csrf.service.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/generation-cookie-csrf.service.ts new file mode 100644 index 00000000..9bb927c4 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/generation-cookie-csrf.service.ts @@ -0,0 +1,40 @@ +import { Injectable } from '@angular/core'; +import { CookieService } from './cookie.service'; + +@Injectable({ + providedIn: 'root' +}) +export class GenerationCookieCsrfService { + + readonly xsrfTokenCookieName = "XSRF-TOKEN"; + + constructor( + private cookieService: CookieService + ) { } + + generateCookieCsrf(){ + + //устанавливаем cookie от CSRF + this.cookieService.setCookie(this.xsrfTokenCookieName, this.generateRandomString(20), { + path: '/', + 'max-age': 120, + secure: true, + samesite: 'lax' + }); + + } + + private generateRandomString(length: number): string { + + let result: string = ''; + let characters: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + let charactersLength: number = characters.length; + + for (let i: number = 0; i < length; i++) { + result += characters.charAt(Math.floor(Math.random() * charactersLength)); + } + + return result; + } + +} \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/login/login.component.html b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/login/login.component.html new file mode 100644 index 00000000..8f7a31e2 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/login/login.component.html @@ -0,0 +1,68 @@ + +
+ logo + +

Login

+ +
+ +
+ +
+ + + Enter the login + + (Ctrl+L) Login to log in to the system + {{login.value.length || 0}} + + + The login cannot be empty + + + The minimum login consists of 4 characters + + + + + + + Enter the password + + + + (Ctrl+P) Password to log in to the system + {{password.value.length || 0}} + + + The password cannot be empty + + + The password is invalid + + + + + Remember me + + + +
+
+ + +
\ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/login/login.component.scss b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/login/login.component.scss new file mode 100644 index 00000000..bfdca74e --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/login/login.component.scss @@ -0,0 +1,77 @@ +:host { + min-width: inherit; + width: inherit; + min-height: inherit; + height: inherit; + display: flex; + justify-content: space-between; +} + + +form#login-form > mat-form-field { + margin-bottom: 1em; +} + +form#login-form > mat-checkbox { + margin-bottom: 1em; +} + + +#submitButton:hover i.fas.door::before { + content: "\f52b"; +} + +#submitButton i.fas.door::before { + content: "\f52a"; +} + +#submitButton[disabled] i.fas.door::before, +#submitButton[disabled]:hover i.fas.door::before { + content: "\f52a"; +} + +form#login-form{ + width: 30em; +} + +.left-part { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + + padding: 2em; +} + +.right-part { + width: 80vw; + background-size: cover; + background-position: center; + background-image: url(/assets/stav.jpg); +} + +@media (max-width: 960px) { + .right-part { + display: none; + } + + .left-part { + width: 100%; + padding: 0; + } +} + +@media (max-width: 960px) { + .right-part { + display: none; + } + + .left-part { + width: 100%; + padding: 0; + } + + form#login-form{ + width: 22em; + } +} \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/login/login.component.spec.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/login/login.component.spec.ts new file mode 100644 index 00000000..717b29b1 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/login/login.component.spec.ts @@ -0,0 +1,303 @@ +import { ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing'; + +import { LoginComponent } from './login.component'; +import { DebugElement, Renderer2 } from '@angular/core'; +import { GenerationCookieCsrfService } from '../generation-cookie-csrf.service'; +import { LoginService } from './login.service'; +import { By } from '@angular/platform-browser'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; +import { of, throwError } from 'rxjs'; +import { ResponseWithRedirectModel } from '../models/response-with-redirect.model'; +import { WindowService } from '../window.service'; + +import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; +import { HarnessLoader } from '@angular/cdk/testing'; +import {MatCheckboxHarness} from '@angular/material/checkbox/testing'; +import { HttpErrorResponse } from '@angular/common/http'; + +describe('LoginComponent', () => { + let generationCookieCsrfServiceSpy: jasmine.SpyObj; + let loginServiceSpy: jasmine.SpyObj; + let windowServiceSpy: jasmine.SpyObj; + + let component: LoginComponent; + let fixture: ComponentFixture; + + let hostDe: DebugElement; + + let loginInput: HTMLInputElement; + let passwordInput: HTMLInputElement; + let checkbox:MatCheckboxHarness; + let submitButton: HTMLButtonElement; + + let hideOrShowPasswordButton: HTMLButtonElement; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [LoginComponent, NoopAnimationsModule], + providers: [ + { + provide: Renderer2, + useValue: jasmine.createSpyObj('Renderer2', ['selectRootElement']) + }, + { + provide: GenerationCookieCsrfService, + useValue: jasmine.createSpyObj('GenerationCookieCsrfService', ['generateCookieCsrf']) + }, + { + provide: LoginService, + useValue: jasmine.createSpyObj('LoginService', ['login']) + }, + { + provide: WindowService, useValue: jasmine.createSpyObj('WindowService', ['get']) + } + ] + }) + .compileComponents() + .then(async () => { + generationCookieCsrfServiceSpy = TestBed.inject(GenerationCookieCsrfService) as jasmine.SpyObj; + loginServiceSpy = TestBed.inject(LoginService) as jasmine.SpyObj; + windowServiceSpy = TestBed.inject(WindowService) as jasmine.SpyObj; + + fixture = TestBed.createComponent(LoginComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + + let loader: HarnessLoader =TestbedHarnessEnvironment.loader(fixture) + + checkbox = await loader.getHarness(MatCheckboxHarness.with({ name: 'isRemember'})); + + hostDe = fixture.debugElement; + + loginInput = hostDe.query(By.css("#login")).nativeElement; + passwordInput = hostDe.query(By.css("#password")).nativeElement; + submitButton = hostDe.query(By.css("#submitButton")).nativeElement; + + hideOrShowPasswordButton = hostDe.query(By.css("button[matTooltip='Show Password']")).nativeElement; + + }); + + }); + + + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + + it('login should be succeed (GUI)', fakeAsync(() => { + // given (instead of when) + + const expectedLogin ="someLogin"; + const expectedPassword = "4Jof0#@V4cTaFev0"; + + const responseWithRedirectModel: ResponseWithRedirectModel = { + redirect_to: "/some_url" + }; + + loginServiceSpy.login.and.returnValue(of(responseWithRedirectModel)); + + const window = { + "location": { + "href": {} + } + } + + windowServiceSpy.get.and.returnValue(window); + + // check autofocus + component.ngAfterViewInit(); + tick(2); + fixture.detectChanges(); + const focusElement: HTMLElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(loginInput); + + // when + + loginInput.value = expectedLogin; + loginInput.dispatchEvent(new Event('input')); + + passwordInput.value = expectedPassword; + passwordInput.dispatchEvent(new Event('input')); + + checkbox.toggle(); + tick(); + + fixture.detectChanges(); + expect(component.isRemember.value).withContext("component.isRemember === true").toEqual(true); + + + // check hide/show password + hideOrShowPasswordButton.click(); + tick(); + expect(component.passwordShowFlag).withContext("passwordShowFlag === false").toEqual(true); + + hideOrShowPasswordButton.click(); + tick(); + expect(component.passwordShowFlag).withContext("passwordShowFlag === true").toEqual(false); + + // form valid? + expect(submitButton.disabled).withContext("submitButton.disabled === true").toEqual(false); + expect(component.loginFormGroup.invalid).withContext("component.loginFormGroup.invalid === true").toEqual(false); + + submitButton.click(); + tick(); + // then (instead of verify) + + expect(generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count()) + .withContext("generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count() !== 1") + .toBe(1); + + expect(loginServiceSpy.login.calls.count()) + .withContext("loginServiceSpy.login.calls.count() !== 1") + .toBe(1); + expect(loginServiceSpy.login.calls.first().args) + .withContext(`loginServiceSpy.login.calls.first().args != [${expectedLogin} ${expectedPassword} ${component.isRemember.value} ]`) + .toEqual([expectedLogin, expectedPassword, component.isRemember.value]); + + expect(windowServiceSpy.get.calls.count()) + .withContext("windowServiceSpy.get.calls.count() !== 1") + .toBe(1); + })); + + + it('login should be fail (GUI)', fakeAsync(() => { + // given (instead of when) + + const expectedLogin ="someLogin"; + const expectedPassword = "4Jof0#@V4cTaFev0"; + + loginServiceSpy.login.and.returnValue(throwError(() => new HttpErrorResponse({status: 404}))); + + const window = { + "location": { + "href": {} + } + } + + windowServiceSpy.get.and.returnValue(window); + + // when + + loginInput.value = expectedLogin; + loginInput.dispatchEvent(new Event('input')); + + passwordInput.value = expectedPassword; + passwordInput.dispatchEvent(new Event('input')); + + checkbox.toggle(); + tick(); + + fixture.detectChanges(); + + // form valid? + + submitButton.click(); + tick(); + // then (instead of verify) + + expect(generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count()) + .withContext("generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count() !== 1") + .toBe(1); + + expect(loginServiceSpy.login.calls.count()) + .withContext("loginServiceSpy.login.calls.count() !== 1") + .toBe(1); + expect(loginServiceSpy.login.calls.first().args) + .withContext(`loginServiceSpy.login.calls.first().args != [${expectedLogin} ${expectedPassword} ${component.isRemember.value} ]`) + .toEqual([expectedLogin, expectedPassword, component.isRemember.value]); + + })); + + it('test hot key', () => { + // given (instead of when) + + // when + + // login focus + + window.dispatchEvent(new KeyboardEvent('keydown',{ + key: 'l', + ctrlKey: true + })); + fixture.detectChanges(); + let focusElement: HTMLElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(loginInput); + + window.dispatchEvent(new KeyboardEvent('keydown',{ + key: 'L', + ctrlKey: true + })); + fixture.detectChanges(); + focusElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(loginInput); + + window.dispatchEvent(new KeyboardEvent('keydown',{ + key: 'д', + ctrlKey: true + })); + fixture.detectChanges(); + focusElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(loginInput); + + window.dispatchEvent(new KeyboardEvent('keydown',{ + key: 'Д', + ctrlKey: true + })); + fixture.detectChanges(); + focusElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(loginInput); + + // password focus + + window.dispatchEvent(new KeyboardEvent('keydown',{ + key: 'p', + ctrlKey: true + })); + fixture.detectChanges(); + focusElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(passwordInput); + + window.dispatchEvent(new KeyboardEvent('keydown',{ + key: 'P', + ctrlKey: true + })); + fixture.detectChanges(); + focusElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(passwordInput); + + window.dispatchEvent(new KeyboardEvent('keydown',{ + key: 'З', + ctrlKey: true + })); + fixture.detectChanges(); + focusElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(passwordInput); + + window.dispatchEvent(new KeyboardEvent('keydown',{ + key: 'з', + ctrlKey: true + })); + window.dispatchEvent(new KeyboardEvent('keydown',{ + key: 'ж', + ctrlKey: true + })); + fixture.detectChanges(); + focusElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(passwordInput); + + // enter + window.dispatchEvent(new KeyboardEvent('keydown', { + key: 'enter' + })); + fixture.detectChanges(); + focusElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(passwordInput); + + // then (instead of verify) + + }); + + +}); diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/login/login.component.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/login/login.component.ts new file mode 100644 index 00000000..d5c22a28 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/login/login.component.ts @@ -0,0 +1,168 @@ +import { Component, HostListener, OnDestroy, Renderer2 } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { LoginService } from './login.service'; +import { HttpClientModule, HttpErrorResponse } from '@angular/common/http'; +import { Subject, first, takeUntil } from 'rxjs'; +import { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms'; +import { MatTooltip, MatTooltipModule } from '@angular/material/tooltip'; +import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout'; + +import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; +import { MatButtonModule } from '@angular/material/button'; + +import { MatCheckboxModule } from '@angular/material/checkbox'; +import { GenerationCookieCsrfService } from '../generation-cookie-csrf.service'; +import { WindowService } from '../window.service'; + +@Component({ + selector: 'app-login', + standalone: true, + imports: [ + CommonModule, + HttpClientModule, + ReactiveFormsModule, + MatProgressSpinnerModule, + MatFormFieldModule, + MatInputModule, + MatTooltipModule, + MatButtonModule, + MatCheckboxModule + ], + templateUrl: './login.component.html', + styleUrl: './login.component.scss' +}) +export class LoginComponent implements OnDestroy { + // to clear the rxjs memory + // для очистки памяти rxjs + private readonly onDestroy = new Subject(); + + readonly loginFormGroup = new FormGroup({ + login: new FormControl('', { + nonNullable: true, validators: [ + Validators.required, + Validators.minLength(4) + ] + }), + password: new FormControl('', { + nonNullable: true, validators: [ + Validators.required, + Validators.pattern('^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$') + ] + }), + isRemember: new FormControl(false, { nonNullable: true }), + }); + + get login() { return this.loginFormGroup.controls.login } + get password() { return this.loginFormGroup.controls.password } + get isRemember() { return this.loginFormGroup.controls.isRemember } + + // show or hide password + // показывать или скрывать пароль + passwordShowFlag: boolean = false; + + // waiting for a response from the server + // ожидание ответа от сервера + getResponseFromServerFlag: boolean = false; + + // show right side + // показать правую часть + isShowRightPart: boolean = true; + + @HostListener('window:keydown.enter', ['$event']) onKeydownEnterHandler(event: KeyboardEvent) { + this.submit(); + } + + @HostListener('window:keydown', ['$event']) onKeydownHandler(event: KeyboardEvent) { + if (!event.ctrlKey) { return; } + + if (event.key === 'l' || event.key === 'L' || event.key === 'д' || event.key === 'Д') { + this.focusLogin(); + return false; + } else if (event.key === 'p' || event.key === 'P' || event.key === 'З' || event.key === 'з') { + this.renderer.selectRootElement("#password")?.focus(); + return false; + } + + return; + } + + constructor( + private renderer: Renderer2, + private generationCookieCsrfService: GenerationCookieCsrfService, + private loginService: LoginService, + private breakpointObserver: BreakpointObserver, + private windowService: WindowService + ) { + + this.breakpointObserver + .observe(Breakpoints.Small) + .subscribe(result => this.isShowRightPart = result.matches ? false : true) + } + + + passwordDisplay(tooltip: MatTooltip) { + this.passwordShowFlag = !this.passwordShowFlag; + + if (this.passwordShowFlag) { + tooltip.message = 'Hide Password'; + } else { + tooltip.message = 'Show Password'; + } + tooltip.show(); + + } + + ngAfterViewInit() { + setTimeout(() => { + this.focusLogin(); + }, 1); + } + + focusLogin() { + this.renderer.selectRootElement("#login")?.focus(); + } + + submit() { + + if (this.loginFormGroup?.valid && !this.getResponseFromServerFlag) { + + this.getResponseFromServerFlag = true; + + this.generationCookieCsrfService.generateCookieCsrf(); + + this.loginService.login( + this.login.value, + this.password.value, + this.isRemember.value + ) + .pipe( + first(), + takeUntil(this.onDestroy) + ) + .subscribe({ + next: (responseLogin) => { + + this.windowService.get().location.href = responseLogin.redirect_to; + + // received response + // ответ получили + this.getResponseFromServerFlag = false; + }, + error: (error: HttpErrorResponse) => { + + // received response + // ответ получили + this.getResponseFromServerFlag = false; + } + }); + + } + } + + ngOnDestroy(): void { + this.onDestroy.next(); + this.onDestroy.complete(); + } +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/login/login.service.spec.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/login/login.service.spec.ts new file mode 100644 index 00000000..876efa8f --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/login/login.service.spec.ts @@ -0,0 +1,119 @@ +import { TestBed } from '@angular/core/testing'; + +import { LoginService } from './login.service'; +import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { environment } from '../../environments/environment'; +import { ResponseWithRedirectModel } from '../models/response-with-redirect.model'; +import { ErrorService } from '../error.service'; +import { HttpErrorResponse } from '@angular/common/http'; + +describe('LoginService', () => { + let service: LoginService; + let errorServiceSpy: jasmine.SpyObj; + let httpTestingController: HttpTestingController; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [ HttpClientTestingModule ], + providers: [ + LoginService, + { + provide: ErrorService, useValue: jasmine.createSpyObj('ErrorService', ['handle']) + } + ] + }); + service = TestBed.inject(LoginService); + errorServiceSpy = TestBed.inject(ErrorService) as jasmine.SpyObj; + httpTestingController = TestBed.inject(HttpTestingController); + }); + + afterEach(() => { + // After every test, assert that there are no more pending requests. + httpTestingController.verify(); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + it('login should be success', (done: DoneFn) => { + // given (instead of when) + + const loginHttpURL = `${environment.apiUrl}/login`; + + const loginModel = { + "login": "some_login", + "password": "some_password", + "isRemember": true + }; + + const responseWithRedirectModel: ResponseWithRedirectModel = { + redirect_to: "some_redirect" + }; + + // when + + service.login(loginModel.login, loginModel.password, loginModel.isRemember) + .subscribe({ + next: responseWithRedirectModelLocal => { + expect(responseWithRedirectModelLocal).toEqual(responseWithRedirectModel); + done(); + }, + error: er => done.fail('responseWithRedirectModelLocal is expected') + }); + + const req = httpTestingController.expectOne(loginHttpURL); + req.flush(responseWithRedirectModel); + + // then (instead of verify) + + expect(req.request.method).toEqual('POST'); + expect(req.request.body).toEqual(loginModel); + }); + + it('login should be fail', done => { + // given (instead of when) + + const loginHttpURL = `${environment.apiUrl}/login`; + + const loginModel = { + "login": "some_login", + "password": "some_password", + "isRemember": true + }; + + const expectedErrorResponse = new HttpErrorResponse({ + error: '["password is invalid"]', + url: loginHttpURL, + status: 400, + statusText: 'Bad request' + }); + + // when + + service.login(loginModel.login, loginModel.password, loginModel.isRemember) + .subscribe({ + next: responseWithRedirectModelLocal => done.fail('login not expected'), + error: (actualErrorResponse: HttpErrorResponse) => { + expect(actualErrorResponse).toEqual(expectedErrorResponse); + done(); + } + }); + + + const req = httpTestingController.expectOne(loginHttpURL); + + req.flush(expectedErrorResponse.error, expectedErrorResponse); + + // then (instead of verify) + + expect(req.request.method).toEqual('POST'); + expect(req.request.body).toEqual(loginModel); + + expect(errorServiceSpy.handle.calls.count()) + .toBe(1); + expect(errorServiceSpy.handle.calls.first().args) + .toEqual([ expectedErrorResponse.error ]); + }); + +}); diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/login/login.service.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/login/login.service.ts new file mode 100644 index 00000000..70a9388b --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/login/login.service.ts @@ -0,0 +1,32 @@ +import { HttpClient, HttpErrorResponse } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { ErrorService } from '../error.service'; +import { Observable, catchError, throwError } from 'rxjs'; +import { ResponseWithRedirectModel } from '../models/response-with-redirect.model'; +import { environment } from '../../environments/environment'; + +@Injectable({ + providedIn: 'root' +}) +export class LoginService { + + constructor(private http: HttpClient, private errorService: ErrorService) { } + + login(login: string, password: string, isRemember: boolean): Observable { + return this.http.post( + `${environment.apiUrl}/login`, + { + "login": login, + "password": password, + "isRemember": isRemember + }) + .pipe( + catchError(this.errorHandler.bind(this)) + ); + } + + private errorHandler(error: HttpErrorResponse) { + this.errorService.handle(error.error) + return throwError(() => error) + } +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-handled/logout-handled.component.html b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-handled/logout-handled.component.html new file mode 100644 index 00000000..ba30a1e7 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-handled/logout-handled.component.html @@ -0,0 +1,11 @@ + +logo + + +

You have successfully exited all applications

+

You have canceled logging out of all applications

+ +

To continue working, close the browser and open the required application again

+ + +logo \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-handled/logout-handled.component.scss b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-handled/logout-handled.component.scss new file mode 100644 index 00000000..3b7d5c08 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-handled/logout-handled.component.scss @@ -0,0 +1,9 @@ +:host { + min-width: inherit; + width: inherit; + min-height: inherit; + height: inherit; + display: flex; + flex-direction: column; + align-items: center; +} \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-handled/logout-handled.component.spec.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-handled/logout-handled.component.spec.ts new file mode 100644 index 00000000..5cedbf12 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-handled/logout-handled.component.spec.ts @@ -0,0 +1,192 @@ +import { TestBed } from '@angular/core/testing'; +import { provideRouter } from '@angular/router'; +import { WindowService } from '../window.service'; +import { LogoutHandledComponent } from './logout-handled.component'; + +import { RouterTestingHarness } from '@angular/router/testing'; +import { CookieService } from '../cookie.service'; + +describe('LogoutHandledComponent', () => { + + let harness: RouterTestingHarness; + + let windowServiceSpy: jasmine.SpyObj; + + let cookieServiceSpy: jasmine.SpyObj; + + beforeEach(async () => { + + await TestBed.configureTestingModule({ + imports: [LogoutHandledComponent], + providers: [ + provideRouter([ + { + path: "logout/:status", + component: LogoutHandledComponent + }, + ]), + { + provide: WindowService, useValue: jasmine.createSpyObj('WindowService', ['get']) + }, + { + provide: CookieService, useValue: jasmine.createSpyObj('CookieService', ['getCookie', 'deleteCookie']) + } + ] + }) + .compileComponents() + .then(async () => { + harness = await RouterTestingHarness.create(); + + windowServiceSpy = TestBed.inject(WindowService) as jasmine.SpyObj; + + cookieServiceSpy = TestBed.inject(CookieService) as jasmine.SpyObj; + }); + }); + + + it('logout/success', done => { + // given (instead of when) + + const windowObj = { + "history": { + "go": (amount: number) => { } + } + } + windowServiceSpy.get.and.returnValue(windowObj); + + cookieServiceSpy.getCookie.and.returnValue(undefined); + + // when + harness.navigateByUrl(`/logout/success`, LogoutHandledComponent) + .then(comp => { + expect(comp).toBeTruthy(); + + expect(cookieServiceSpy.getCookie.calls.count()) + .withContext("cookieServiceSpy.getCookie.calls.count() !== 1") + .toBe(1); + + expect(cookieServiceSpy.getCookie.calls.first().args) + .withContext(`cookieServiceSpy.getCookie.calls.first().args != ["logout" ]`) + .toEqual(["logout"]); + + comp.isConfirmed$ + .subscribe({ + next: flag => { + expect(flag).toEqual(true); + done(); + }, + error: (er) => done.fail("isConfirmed is incorrect") + }); + + }) + .catch(er => done.fail("isConfirmed is incorrect") + ) + + // then (instead of verify) + + }); + + + it('logout/ffff', done => { + // given (instead of when) + + const windowObj = { + "history": { + "go": (amount: number) => { } + } + } + windowServiceSpy.get.and.returnValue(windowObj); + + cookieServiceSpy.getCookie.and.returnValue("sss"); + + // when + harness.navigateByUrl(`/logout/ffff`, LogoutHandledComponent) + .then(comp => { + expect(comp).toBeTruthy(); + + expect(windowServiceSpy.get.calls.count()) + .withContext("windowServiceSpy.get.calls.count() !== 1") + .toBe(1); + + expect(cookieServiceSpy.getCookie.calls.count()) + .withContext("cookieServiceSpy.getCookie.calls.count() !== 1") + .toBe(1); + + expect(cookieServiceSpy.getCookie.calls.first().args) + .withContext(`cookieServiceSpy.getCookie.calls.first().args != ["logout" ]`) + .toEqual(["logout"]); + + comp.isConfirmed$ + .subscribe({ + next: flag => { + expect(flag).toEqual(false); + done(); + }, + error: (er) => done.fail("isConfirmed is incorrect") + }); + + }) + .catch(er => done.fail("isConfirmed is incorrect") + ) + + // then (instead of verify) + + }); + + + it('logout/cancel', done => { + // given (instead of when) + + const windowObj = { + "history": { + "go": (amount: number) => { } + } + } + windowServiceSpy.get.and.returnValue(windowObj); + + cookieServiceSpy.getCookie.and.returnValue("logout"); + + // when + harness.navigateByUrl(`/logout/cancel`, LogoutHandledComponent) + .then(comp => { + expect(comp).toBeTruthy(); + + expect(windowServiceSpy.get.calls.count()) + .withContext("windowServiceSpy.get.calls.count() !== 1") + .toBe(1); + + expect(cookieServiceSpy.getCookie.calls.count()) + .withContext("cookieServiceSpy.getCookie.calls.count() !== 1") + .toBe(1); + + expect(cookieServiceSpy.getCookie.calls.first().args) + .withContext(`cookieServiceSpy.getCookie.calls.first().args != ["logout" ]`) + .toEqual(["logout"]); + + expect(cookieServiceSpy.deleteCookie.calls.count()) + .withContext("cookieServiceSpy.deleteCookie.calls.count() !== 1") + .toBe(1); + + expect(cookieServiceSpy.deleteCookie.calls.first().args) + .withContext(`cookieServiceSpy.deleteCookie.calls.first().args != ["logout" ]`) + .toEqual(["logout"]); + + comp.isConfirmed$ + .subscribe({ + next: flag => { + expect(flag).toEqual(false); + done(); + }, + error: (er) => done.fail("isConfirmed is incorrect") + }); + + }) + .catch(er => done.fail("isConfirmed is incorrect") + ) + + // then (instead of verify) + + }); + + +}); diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-handled/logout-handled.component.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-handled/logout-handled.component.ts new file mode 100644 index 00000000..cacd3b58 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-handled/logout-handled.component.ts @@ -0,0 +1,49 @@ +import { Component, OnDestroy } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { ActivatedRoute, Params } from '@angular/router'; +import { Observable, Subject, first, map, takeUntil } from 'rxjs'; +import { WindowService } from '../window.service'; +import { CookieService } from '../cookie.service'; + +@Component({ + selector: 'app-logout-handled', + standalone: true, + imports: [CommonModule], + templateUrl: './logout-handled.component.html', + styleUrl: './logout-handled.component.scss' +}) +export class LogoutHandledComponent implements OnDestroy { + + // to clear the rxjs memory + // для очистки памяти rxjs + private readonly onDestroy = new Subject(); + + isConfirmed$: Observable; + + constructor(private route: ActivatedRoute, private windowService: WindowService, private cookieService: CookieService) { + + this.isConfirmed$ = this.route.params + .pipe( + first(), + map((params: Params) => + params["status"] === 'success' + ), + map((flag: boolean) => { + if(this.cookieService.getCookie("logout") === "logout"){ + this.cookieService.deleteCookie("logout"); + this.windowService.get().history.go(-2); + } else { + this.windowService.get().history.go(-1); + } + return flag; + }), + takeUntil(this.onDestroy) + ); + + } + + ngOnDestroy(): void { + this.onDestroy.next(); + this.onDestroy.complete(); + } +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-request/logout-request.component.html b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-request/logout-request.component.html new file mode 100644 index 00000000..92ce9c89 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-request/logout-request.component.html @@ -0,0 +1,24 @@ + +logo + + +
+ +
+ + +

+ Are you sure you want to quit all applications? +

+ +
+ + +
+
\ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-request/logout-request.component.scss b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-request/logout-request.component.scss new file mode 100644 index 00000000..fdc3abb8 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-request/logout-request.component.scss @@ -0,0 +1,13 @@ +:host { + min-width: inherit; + width: inherit; + min-height: inherit; + height: inherit; + display: flex; + flex-direction: column; + align-items: center; +} + +button { + margin: 1em; +} \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-request/logout-request.component.spec.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-request/logout-request.component.spec.ts new file mode 100644 index 00000000..c52577d9 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-request/logout-request.component.spec.ts @@ -0,0 +1,282 @@ +import { ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing'; + +import { LogoutRequestComponent } from './logout-request.component'; +import { GenerationCookieCsrfService } from '../generation-cookie-csrf.service'; +import { LogoutService } from '../logout.service'; +import { WindowService } from '../window.service'; +import { DebugElement } from '@angular/core'; +import { By } from '@angular/platform-browser'; +import { ResponseWithRedirectModel } from '../models/response-with-redirect.model'; +import { of, throwError } from 'rxjs'; +import { HttpErrorResponse } from '@angular/common/http'; +import { CookieService } from '../cookie.service'; + +describe('LogoutRequestComponent', () => { + let generationCookieCsrfServiceSpy: jasmine.SpyObj; + let logoutServiceSpy: jasmine.SpyObj; + let windowServiceSpy: jasmine.SpyObj; + let cookieServiceSpy: jasmine.SpyObj; + + let component: LogoutRequestComponent; + let fixture: ComponentFixture; + + let hostDe: DebugElement; + + let yesButton: HTMLButtonElement; + let noButton: HTMLButtonElement; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [LogoutRequestComponent], + providers: [ + { + provide: GenerationCookieCsrfService, + useValue: jasmine.createSpyObj('GenerationCookieCsrfService', ['generateCookieCsrf']) + }, + { + provide: LogoutService, + useValue: jasmine.createSpyObj('LogoutService', ['logoutSendResponse']) + }, + { + provide: WindowService, useValue: jasmine.createSpyObj('WindowService', ['get']) + }, + { + provide: CookieService, useValue: jasmine.createSpyObj('CookieService', ['setCookie']) + } + ] + }) + .compileComponents() + .then(async () => { + generationCookieCsrfServiceSpy = TestBed.inject(GenerationCookieCsrfService) as jasmine.SpyObj; + logoutServiceSpy = TestBed.inject(LogoutService) as jasmine.SpyObj; + windowServiceSpy = TestBed.inject(WindowService) as jasmine.SpyObj; + cookieServiceSpy = TestBed.inject(CookieService) as jasmine.SpyObj; + + fixture = TestBed.createComponent(LogoutRequestComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + + hostDe = fixture.debugElement; + + yesButton = hostDe.query(By.css("#yesButton")).nativeElement; + noButton = hostDe.query(By.css("#noButton")).nativeElement; + + }); + + }); + + + it('yes (GUI)', fakeAsync(() => { + // given (instead of when) + + const responseWithRedirectModel: ResponseWithRedirectModel = { + redirect_to: "/some_url" + }; + logoutServiceSpy.logoutSendResponse.and.returnValue(of(responseWithRedirectModel)); + + const windowObj = { + "location": { + "href": {} + } + } + windowServiceSpy.get.and.returnValue(windowObj); + // when + + yesButton.click(); + tick(); + // then (instead of verify) + + expect(generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count()) + .withContext("generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count() !== 1") + .toBe(1); + + expect(logoutServiceSpy.logoutSendResponse.calls.count()) + .withContext("consentServiceSpy.consentSuccess.calls.count() !== 1") + .toBe(1); + expect(logoutServiceSpy.logoutSendResponse.calls.first().args) + .withContext(`consentServiceSpy.consentSuccess.calls.first().args != [${true} ]`) + .toEqual([true]); + + expect(windowServiceSpy.get.calls.count()) + .withContext("windowServiceSpy.get.calls.count() !== 1") + .toBe(1); + + expect(cookieServiceSpy.setCookie.calls.count()) + .withContext("cookieServiceSpy.setCookie.calls.count() !== 1") + .toBe(1); + expect(cookieServiceSpy.setCookie.calls.first().args) + .withContext(`cookieServiceSpy.setCookie.calls.first().args != ["logout", "logout", { + path: '/', + 'max-age': 120, + secure: true, + samesite: 'lax' + } ]`) + .toEqual(["logout", "logout", { + path: '/', + 'max-age': 120, + secure: true, + samesite: 'lax' + }]); + + + })); + + + it('(enter)', fakeAsync(() => { + // given (instead of when) + + const responseWithRedirectModel: ResponseWithRedirectModel = { + redirect_to: "/some_url" + }; + logoutServiceSpy.logoutSendResponse.and.returnValue(of(responseWithRedirectModel)); + + const windowObj = { + "location": { + "href": {} + } + } + windowServiceSpy.get.and.returnValue(windowObj); + + // when + + // enter + window.dispatchEvent(new KeyboardEvent('keydown', { + key: 'enter', + })); + fixture.detectChanges(); + + // then (instead of verify) + + expect(generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count()) + .withContext("generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count() !== 1") + .toBe(1); + + expect(logoutServiceSpy.logoutSendResponse.calls.count()) + .withContext("consentServiceSpy.consentSuccess.calls.count() !== 1") + .toBe(1); + expect(logoutServiceSpy.logoutSendResponse.calls.first().args) + .withContext(`consentServiceSpy.consentSuccess.calls.first().args != [${true} ]`) + .toEqual([true]); + + expect(windowServiceSpy.get.calls.count()) + .withContext("windowServiceSpy.get.calls.count() !== 1") + .toBe(1); + + expect(cookieServiceSpy.setCookie.calls.count()) + .withContext("cookieServiceSpy.setCookie.calls.count() !== 1") + .toBe(1); + expect(cookieServiceSpy.setCookie.calls.first().args) + .withContext(`cookieServiceSpy.setCookie.calls.first().args != ["logout", "logout", { + path: '/', + 'max-age': 120, + secure: true, + samesite: 'lax' + } ]`) + .toEqual(["logout", "logout", { + path: '/', + 'max-age': 120, + secure: true, + samesite: 'lax' + }]); + })); + + + + it('(esc)', fakeAsync(() => { + // given (instead of when) + + const responseWithRedirectModel: ResponseWithRedirectModel = { + redirect_to: "/some_url" + }; + logoutServiceSpy.logoutSendResponse.and.returnValue(of(responseWithRedirectModel)); + + const windowObj = { + "location": { + "href": {} + } + } + windowServiceSpy.get.and.returnValue(windowObj); + + // when + + // enter + window.dispatchEvent(new KeyboardEvent('keydown', { + key: 'Escape', + })); + fixture.detectChanges(); + + // then (instead of verify) + + expect(generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count()) + .withContext("generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count() !== 1") + .toBe(1); + + expect(logoutServiceSpy.logoutSendResponse.calls.count()) + .withContext("consentServiceSpy.consentSuccess.calls.count() !== 1") + .toBe(1); + expect(logoutServiceSpy.logoutSendResponse.calls.first().args) + .withContext(`consentServiceSpy.consentSuccess.calls.first().args != [${false} ]`) + .toEqual([false]); + + expect(windowServiceSpy.get.calls.count()) + .withContext("windowServiceSpy.get.calls.count() !== 1") + .toBe(1); + + expect(cookieServiceSpy.setCookie.calls.count()) + .withContext("cookieServiceSpy.setCookie.calls.count() !== 1") + .toBe(1); + expect(cookieServiceSpy.setCookie.calls.first().args) + .withContext(`cookieServiceSpy.setCookie.calls.first().args != ["logout", "logout", { + path: '/', + 'max-age': 120, + secure: true, + samesite: 'lax' + } ]`) + .toEqual(["logout", "logout", { + path: '/', + 'max-age': 120, + secure: true, + samesite: 'lax' + }]); + })); + + + it('yse (GUI) (fail)', fakeAsync(() => { + // given (instead of when) + + logoutServiceSpy.logoutSendResponse.and.returnValue(throwError(() => new HttpErrorResponse({ status: 404 }))); + // when + + yesButton.click(); + tick(); + // then (instead of verify) + + expect(generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count()) + .withContext("generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count() !== 1") + .toBe(1); + + expect(logoutServiceSpy.logoutSendResponse.calls.count()) + .withContext("consentServiceSpy.consentSuccess.calls.count() !== 1") + .toBe(1); + + expect(cookieServiceSpy.setCookie.calls.count()) + .withContext("cookieServiceSpy.setCookie.calls.count() !== 1") + .toBe(1); + expect(cookieServiceSpy.setCookie.calls.first().args) + .withContext(`cookieServiceSpy.setCookie.calls.first().args != ["logout", "logout", { + path: '/', + 'max-age': 120, + secure: true, + samesite: 'lax' + } ]`) + .toEqual(["logout", "logout", { + path: '/', + 'max-age': 120, + secure: true, + samesite: 'lax' + }]); + + })); + + +}); diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-request/logout-request.component.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-request/logout-request.component.ts new file mode 100644 index 00000000..9ca18e33 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout-request/logout-request.component.ts @@ -0,0 +1,92 @@ +import { Component, HostListener, OnDestroy } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; +import { Subject, first, takeUntil } from 'rxjs'; +import { LogoutService } from '../logout.service'; +import { GenerationCookieCsrfService } from '../generation-cookie-csrf.service'; +import { WindowService } from '../window.service'; +import { HttpErrorResponse } from '@angular/common/http'; +import { MatButtonModule } from '@angular/material/button'; +import { MatTooltipModule } from '@angular/material/tooltip'; +import { CookieService } from '../cookie.service'; + +@Component({ + selector: 'app-logout-request', + standalone: true, + imports: [ + CommonModule, + MatProgressSpinnerModule, + MatButtonModule, + MatTooltipModule + ], + templateUrl: './logout-request.component.html', + styleUrl: './logout-request.component.scss' +}) +export class LogoutRequestComponent implements OnDestroy { + + // to clear the rxjs memory + // для очистки памяти rxjs + private readonly onDestroy = new Subject(); + + // waiting for a response from the server + // ожидание ответа от сервера + getResponseFromServerFlag: boolean = false; + + @HostListener('window:keydown.enter', ['$event']) onKeydownEnterHandler(event: KeyboardEvent) { + this.isConfirmedOrNot(true); + } + + @HostListener('window:keydown.esc', ['$event']) onKeydownEnterHandler2(event: KeyboardEvent) { + this.isConfirmedOrNot(false); + } + + constructor(private logoutService: LogoutService, + private generationCookieCsrfService: GenerationCookieCsrfService, + private windowService: WindowService, + private cookieService: CookieService) { } + + isConfirmedOrNot(isConfirmed: boolean) { + + if (!this.getResponseFromServerFlag) { + + this.getResponseFromServerFlag = true; + + this.generationCookieCsrfService.generateCookieCsrf(); + + this.cookieService.setCookie("logout", "logout", { + path: '/', + 'max-age': 120, + secure: true, + samesite: 'lax' + }); + + this.logoutService.logoutSendResponse(isConfirmed) + .pipe( + first(), + takeUntil(this.onDestroy) + ) + .subscribe({ + next: (responseLogin) => { + + this.windowService.get().location.href = responseLogin.redirect_to; + + // received response + // ответ получили + this.getResponseFromServerFlag = false; + }, + error: (error: HttpErrorResponse) => { + + // received response + // ответ получили + this.getResponseFromServerFlag = false; + } + }); + } + + } + + ngOnDestroy(): void { + this.onDestroy.next(); + this.onDestroy.complete(); + } +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout.service.spec.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout.service.spec.ts new file mode 100644 index 00000000..d1a51269 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout.service.spec.ts @@ -0,0 +1,118 @@ +import { TestBed } from '@angular/core/testing'; + +import { LogoutService } from './logout.service'; +import { ErrorService } from './error.service'; +import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { environment } from '../environments/environment'; +import { ResponseWithRedirectModel } from './models/response-with-redirect.model'; +import { HttpErrorResponse } from '@angular/common/http'; + +describe('LogoutService', () => { + let service: LogoutService; + let errorServiceSpy: jasmine.SpyObj; + let httpTestingController: HttpTestingController; + + beforeEach(() => { + + TestBed.configureTestingModule({ + imports: [HttpClientTestingModule], + providers: [ + LogoutService, + { + provide: ErrorService, useValue: jasmine.createSpyObj('ErrorService', ['handle']) + } + ] + }); + service = TestBed.inject(LogoutService); + errorServiceSpy = TestBed.inject(ErrorService) as jasmine.SpyObj; + httpTestingController = TestBed.inject(HttpTestingController); + }); + + afterEach(() => { + // After every test, assert that there are no more pending requests. + httpTestingController.verify(); + }); + + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + it('logoutSendResponse - confirm', done => { + // given (instead of when) + + const logoutSendResponseHttpURL = `${environment.apiUrl}/logout/`; + + const responseWithRedirectModel: ResponseWithRedirectModel = { + redirect_to: "/some_url" + }; + + const logoutSendResponseModel = { + "isConfirmed": true + }; + + // when + + service.logoutSendResponse(logoutSendResponseModel.isConfirmed) + .subscribe({ + next: responseWithRedirectModelLocal => { + expect(responseWithRedirectModelLocal).toEqual(responseWithRedirectModel); + done(); + }, + error: er => done.fail('responseWithRedirectModelLocal is expected') + }); + + const req = httpTestingController.expectOne(logoutSendResponseHttpURL); + req.flush(responseWithRedirectModel); + + // then (instead of verify) + + expect(req.request.method).toEqual('PUT'); + expect(req.request.body).toEqual(logoutSendResponseModel); + + }); + + it('logoutSendResponse should be fail', done => { + // given (instead of when) + + const logoutSendResponseHttpURL = `${environment.apiUrl}/logout/`; + + const expectedErrorResponse = new HttpErrorResponse({ + error: '["password is invalid"]', + url: logoutSendResponseHttpURL, + status: 400, + statusText: 'Bad request' + }); + + const logoutSendResponseModel = { + "isConfirmed": true + }; + + // when + + service.logoutSendResponse(logoutSendResponseModel.isConfirmed) + .subscribe({ + next: responseWithRedirectModelLocal => done.fail('data not expected'), + error: (actualErrorResponse: HttpErrorResponse) => { + expect(actualErrorResponse).toEqual(expectedErrorResponse); + done(); + } + }); + + + const req = httpTestingController.expectOne(logoutSendResponseHttpURL); + + req.flush(expectedErrorResponse.error, expectedErrorResponse); + + // then (instead of verify) + + expect(req.request.method).toEqual('PUT'); + expect(req.request.body).toEqual(logoutSendResponseModel); + + expect(errorServiceSpy.handle.calls.count()) + .toBe(1); + expect(errorServiceSpy.handle.calls.first().args) + .toEqual([ expectedErrorResponse.error ]); + }); + +}); diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout.service.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout.service.ts new file mode 100644 index 00000000..5ae7f724 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/logout.service.ts @@ -0,0 +1,30 @@ +import { Injectable } from '@angular/core'; +import { ResponseWithRedirectModel } from './models/response-with-redirect.model'; +import { Observable, catchError, throwError } from 'rxjs'; +import { HttpClient, HttpErrorResponse } from '@angular/common/http'; +import { ErrorService } from './error.service'; +import { environment } from '../environments/environment'; + +@Injectable({ + providedIn: 'root' +}) +export class LogoutService { + + constructor(private http: HttpClient, private errorService: ErrorService) { } + + logoutSendResponse(isConfirmed: boolean): Observable { + return this.http.put( + `${environment.apiUrl}/logout/`, { + "isConfirmed": isConfirmed + }) + .pipe( + catchError(this.errorHandler.bind(this)) + ); + } + + private errorHandler(error: HttpErrorResponse) { + this.errorService.handle(error.error) + return throwError(() => error) + } + +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/models/error-on-page.model.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/models/error-on-page.model.ts new file mode 100644 index 00000000..9e802207 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/models/error-on-page.model.ts @@ -0,0 +1,51 @@ +import { ErrorResponseCode } from "./error-response-code.model"; + +export class ErrorOnPageModel{ + error: string; + errorDescription: string; + reauthenticationLocation: string; + + constructor(error: string, errorDescription: string, reauthenticationLocation: string){ + this.error = error; + this.errorDescription = errorDescription; + this.reauthenticationLocation = reauthenticationLocation; + } + + + public static getErrorResponseCodeRus(errorResponseCodeStr: string): string { + let errorResponseCode: ErrorResponseCode = errorResponseCodeStr as ErrorResponseCode; + switch (errorResponseCode) { + case ErrorResponseCode.InvalidRequest: + return "Ошибка параметров запроса (invalid_request)"; + case ErrorResponseCode.UnauthorizedClient: + return "Клиент не может быть авторизован используя данный метод (unauthorized_client)"; + case ErrorResponseCode.AccessDenied: + return "Владелец ресурса или сервер авторизации отклонили запрос (access_denied)"; + case ErrorResponseCode.UnsupportedResponseType: + return "Сервер авторизации не поддерживает получение кода авторизации с помощью этого метода (unsupported_response_type)"; + case ErrorResponseCode.InvalidScope: + return "Запрошенные scopes недопустимы, неизвестны или имеют неправильную форму (invalid_scope)"; + case ErrorResponseCode.ServerError: + return "Сервер авторизации столкнулся с неожиданным условием, которое помешало ему выполнить запрос (server_error)"; + case ErrorResponseCode.TemporarilyUnavailable: + return "Сервер авторизации в настоящее время не может обработать запрос из-за временной перегрузки или технического обслуживания сервера (temporarily_unavailable)"; + case ErrorResponseCode.InsufficientScope: + return "Запрос требует более высоких привилегий, чем те, которые предоставляются токеном доступа (insufficient_scope)"; + case ErrorResponseCode.InvalidClient: + return "Ошибка проверки подлинности клиента (например, неизвестный клиент, проверка подлинности клиента не включена или неподдерживаемый метод проверки подлинности) (invalid_client)"; + case ErrorResponseCode.InvalidGrant: + return "Предоставленное разрешение на авторизацию (например, код авторизации, учетные данные владельца ресурса) или токен обновления недействительны, истек срок действия, отозваны, не соответствуют URI перенаправления, использованному в запросе на авторизацию, или были выданы другому клиенту. (invalid_grant)"; + case ErrorResponseCode.InvalidRedirectUri: + return "Значение одного или нескольких URI перенаправления недопустимо (invalid_redirect_uri)"; + case ErrorResponseCode.InvalidToken: + return "Предоставленный маркер доступа истек, отозван, имеет неправильную форму или недействителен по другим причинам (invalid_token)"; + case ErrorResponseCode.UnsupportedGrantType: + return "Тип предоставления авторизации не поддерживается сервером авторизации (unsupported_grant_type)"; + case ErrorResponseCode.UnsupportedTokenType: + return "Сервер авторизации не поддерживает отзыв представленного типа токена (unsupported_token_type)"; + default: + return `Ошибка (${errorResponseCodeStr})`; + } + } + +} \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/models/error-response-code.model.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/models/error-response-code.model.ts new file mode 100644 index 00000000..182aec18 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/models/error-response-code.model.ts @@ -0,0 +1,61 @@ +export const enum ErrorResponseCode { + + // invalid_request + // The request is missing a required parameter, includes an + // invalid parameter value, includes a parameter more than + // once, or is otherwise malformed. + InvalidRequest = "invalid_request", + + // unauthorized_client + // The client is not authorized to request an authorization + // code using this method. + UnauthorizedClient = "unauthorized_client", + + // access_denied + // The resource owner or authorization server denied the + // request. + AccessDenied = "access_denied", + + // unsupported_response_type + // The authorization server does not support obtaining an + // authorization code using this method. + UnsupportedResponseType = "unsupported_response_type", + + // invalid_scope + // The requested scope is invalid, unknown, or malformed. + InvalidScope = "invalid_scope", + + // server_error + // The authorization server encountered an unexpected + // condition that prevented it from fulfilling the request. + // (This error code is needed because a 500 Internal Server + // Error HTTP status code cannot be returned to the client + // via an HTTP redirect.) + ServerError = "server_error", + + // temporarily_unavailable + // The authorization server is currently unable to handle + // the request due to a temporary overloading or maintenance + // of the server. (This error code is needed because a 503 + // Service Unavailable HTTP status code cannot be returned + // to the client via an HTTP redirect.) + TemporarilyUnavailable = "temporarily_unavailable", + // insufficient_scope - + // The request requires higher privileges than provided by the access token. + InsufficientScope = "insufficient_scope", + // invalid_client - Client authentication failed (e.g., unknown client, no client authentication included, or unsupported authentication method) + InvalidClient = "invalid_client", + // invalid_grant - The provided authorization grant (e.g., authorization code, resource owner credentials) or refresh token is invalid, expired, + // revoked, does not match the redirection URI used in the authorization request, or was issued to another client. + InvalidGrant = "invalid_grant", + // invalid_redirect_uri - The value of one or more redirection URIs is invalid. + InvalidRedirectUri = "invalid_redirect_uri", + // invalid_token - The access token provided is expired, revoked, malformed, or invalid for other reasons + InvalidToken = "invalid_token", + //unsupported_grant_type - The authorization grant type is not supported by the authorization server. + UnsupportedGrantType = "unsupported_grant_type", + // unsupported_token_type - The authorization server does not support the revocation of the presented token type + UnsupportedTokenType = "unsupported_token_type" + + + } \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/models/response-with-redirect.model.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/models/response-with-redirect.model.ts new file mode 100644 index 00000000..138d1777 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/models/response-with-redirect.model.ts @@ -0,0 +1,3 @@ +export class ResponseWithRedirectModel{ + redirect_to!:string; +} \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/not-found/not-found.component.html b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/not-found/not-found.component.html new file mode 100644 index 00000000..b4375ada --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/not-found/not-found.component.html @@ -0,0 +1,12 @@ +
+

404

+
Page not found
+ cry +
+ diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/not-found/not-found.component.scss b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/not-found/not-found.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/not-found/not-found.component.spec.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/not-found/not-found.component.spec.ts new file mode 100644 index 00000000..0cd8d8b7 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/not-found/not-found.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { NotFoundComponent } from './not-found.component'; + +describe('NotFoundComponent', () => { + let component: NotFoundComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [NotFoundComponent] + }); + fixture = TestBed.createComponent(NotFoundComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/not-found/not-found.component.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/not-found/not-found.component.ts new file mode 100644 index 00000000..65054c8e --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/not-found/not-found.component.ts @@ -0,0 +1,8 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-not-found', + templateUrl: './not-found.component.html', + styleUrls: ['./not-found.component.scss'] +}) +export class NotFoundComponent {} \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration-routing.module.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration-routing.module.ts new file mode 100644 index 00000000..caf84a4a --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration-routing.module.ts @@ -0,0 +1,11 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { RegistrationComponent } from './registration.component'; + +const routes: Routes = [{ path: '', component: RegistrationComponent }]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class RegistrationRoutingModule { } diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.component.html b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.component.html new file mode 100644 index 00000000..3a3d95e1 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.component.html @@ -0,0 +1,110 @@ +logo + +

Registration

+ +
+ +
+ +
+ + + Enter the login + + (Ctrl+L) Login to log in to the system + {{login.value.length || 0}} + + + The login cannot be empty + + + The minimum login consists of 4 characters + + + + + + + Enter the password + + + + (Ctrl+P) Password to log in to the system + {{password.value.length || 0}} + + + The password cannot be empty + + + The password is invalid + + + + + + Repeat password + + + + (Ctrl+R) Repeat password + {{repeatPassword.value.length || 0}} + + + The repeat password cannot be empty + + + + + + Enter the organization name + + (Ctrl+O) Organization name + {{orgName.value.length || 0}} + + + The organization name cannot be empty + + + The minimum organization name consists of 4 characters + + + + + + +
+ Password mismatch +
+
\ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.component.scss b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.component.scss new file mode 100644 index 00000000..10d20733 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.component.scss @@ -0,0 +1,20 @@ +:host { + min-width: inherit; + width: inherit; + min-height: inherit; + height: inherit; + + display: flex; + flex-direction: column; + align-items: center; +} + +form#registration > mat-form-field { + margin-bottom: 1em; +} + +.er{ + color: #f44336; + text-align: center; + margin: 1em; +} \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.component.spec.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.component.spec.ts new file mode 100644 index 00000000..b3e9eb6c --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.component.spec.ts @@ -0,0 +1,467 @@ +import { ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing'; +import { DebugElement, Renderer2 } from '@angular/core'; + +import { RegistrationComponent } from './registration.component'; +import { GenerationCookieCsrfService } from '../generation-cookie-csrf.service'; +import { RegistrationService } from './registration.service'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; +import { MatTooltipModule } from '@angular/material/tooltip'; +import { ReactiveFormsModule } from '@angular/forms'; +import { MatButtonModule } from '@angular/material/button'; +import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { of, throwError } from 'rxjs'; +import { By } from '@angular/platform-browser'; +import { HttpErrorResponse } from '@angular/common/http'; + +describe('RegistrationComponent', () => { + let renderer2Spy: jasmine.SpyObj; + let generationCookieCsrfServiceSpy: jasmine.SpyObj; + let registrationServiceSpy: jasmine.SpyObj; + + let component: RegistrationComponent; + let fixture: ComponentFixture; + + let hostDe: DebugElement; + + let loginInput: HTMLInputElement; + let passwordInput: HTMLInputElement; + let repeatPasswordInput: HTMLInputElement; + let orgNameInput: HTMLInputElement; + let submitButton: HTMLButtonElement; + + let hideOrShowPasswordButton1: HTMLButtonElement; + let hideOrShowPasswordButton2: HTMLButtonElement; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ + MatFormFieldModule, + MatInputModule, + MatTooltipModule, + ReactiveFormsModule, + MatButtonModule, + MatProgressSpinnerModule, + BrowserAnimationsModule + ], + declarations: [RegistrationComponent], + providers: [ + { + provide: Renderer2, + useValue: jasmine.createSpyObj('Renderer2', ['selectRootElement']) + }, + { + provide: GenerationCookieCsrfService, + useValue: jasmine.createSpyObj('GenerationCookieCsrfService', ['generateCookieCsrf']) + }, + { + provide: RegistrationService, + useValue: jasmine.createSpyObj('RegistrationService', ['registration']) + } + ] + }).compileComponents(); + }); + + + beforeEach(() => { + renderer2Spy = TestBed.inject(Renderer2) as jasmine.SpyObj; + generationCookieCsrfServiceSpy = TestBed.inject(GenerationCookieCsrfService) as jasmine.SpyObj; + registrationServiceSpy = TestBed.inject(RegistrationService) as jasmine.SpyObj; + + fixture = TestBed.createComponent(RegistrationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + + hostDe = fixture.debugElement; + + loginInput = hostDe.query(By.css("#login")).nativeElement; + passwordInput = hostDe.query(By.css("#password")).nativeElement; + repeatPasswordInput = hostDe.query(By.css("#repeatPassword")).nativeElement; + orgNameInput = hostDe.query(By.css("#orgName")).nativeElement; + submitButton = hostDe.query(By.css("#submitButton")).nativeElement; + + hideOrShowPasswordButton1 = hostDe.query(By.css("#hideOrShowPasswordButton1")).nativeElement; + hideOrShowPasswordButton2 = hostDe.query(By.css("#hideOrShowPasswordButton2")).nativeElement; + }); + + it('should create', () => { + expect(component).toBeDefined(); + }); + + it('registration should be succeed', fakeAsync(() => { + // given (instead of when) + + const expectedLogin ="someLogin"; + const expectedPassword = "4Jof0#@V4cTaFev0"; + const expectedOrgName = "someOrg"; + + registrationServiceSpy.registration.and.returnValue(of(1)); + + // check autofocus + component.ngAfterViewInit(); + tick(2); + fixture.detectChanges(); + const focusElement: HTMLElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(loginInput); + + // when + + loginInput.value = expectedLogin; + loginInput.dispatchEvent(new Event('input')); + + passwordInput.value = expectedPassword; + passwordInput.dispatchEvent(new Event('input')); + + repeatPasswordInput.value = expectedPassword; + repeatPasswordInput.dispatchEvent(new Event('input')); + + orgNameInput.value = expectedOrgName; + orgNameInput.dispatchEvent(new Event('input')); + + fixture.detectChanges(); + + // check hide/show password + hideOrShowPasswordButton1.click(); + tick(); + expect(component.passwordShowFlag).withContext("passwordShowFlag1 === false").toEqual(true); + + hideOrShowPasswordButton1.click(); + tick(); + expect(component.passwordShowFlag).withContext("passwordShowFlag1 === true").toEqual(false); + + hideOrShowPasswordButton2.click(); + tick(); + expect(component.passwordShowFlag2).withContext("passwordShowFlag2 === false").toEqual(true); + + hideOrShowPasswordButton2.click(); + tick(); + expect(component.passwordShowFlag2).withContext("passwordShowFlag2 === true").toEqual(false); + + // form valid? + expect(submitButton.disabled).withContext("submitButton.disabled === true").toEqual(false); + expect(component.registrationFormGroup.invalid).withContext("submitButton.disabled === true").toEqual(false); + + submitButton.click(); + tick(10000); + + // then (instead of verify) + + expect(generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count()) + .withContext("generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count() !== 1") + .toBe(1); + + expect(registrationServiceSpy.registration.calls.count()) + .withContext("registrationServiceSpy.registration.calls.count() !== 1") + .toBe(1); + expect(registrationServiceSpy.registration.calls.first().args) + .withContext(`registrationServiceSpy.registration.calls.first().args != [${expectedLogin} ${expectedPassword} ${expectedOrgName}]`) + .toEqual([expectedLogin, expectedPassword, expectedOrgName]); + + })); + + it('registration should be fail (enter)', fakeAsync(() => { + // given (instead of when) + + const expectedLogin ="someLogin"; + const expectedPassword = "4Jof0#@V4cTaFev0"; + const expectedOrgName = "someOrg"; + + registrationServiceSpy.registration.and.returnValue(throwError(() => new HttpErrorResponse({status: 404}))); + + // when + + loginInput.value = expectedLogin; + loginInput.dispatchEvent(new Event('input')); + + passwordInput.value = expectedPassword; + passwordInput.dispatchEvent(new Event('input')); + + repeatPasswordInput.value = expectedPassword; + repeatPasswordInput.dispatchEvent(new Event('input')); + + orgNameInput.value = expectedOrgName; + orgNameInput.dispatchEvent(new Event('input')); + + fixture.detectChanges(); + + // form valid? + expect(submitButton.disabled).withContext("submitButton.disabled === true").toEqual(false); + expect(component.registrationFormGroup.invalid).withContext("submitButton.disabled === true").toEqual(false); + + window.dispatchEvent(new KeyboardEvent('keydown',{ + key: 'enter' + })); + + // then (instead of verify) + + expect(generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count()) + .withContext("generationCookieCsrfServiceSpy.generateCookieCsrf.calls.count() !== 1") + .toBe(1); + + expect(registrationServiceSpy.registration.calls.count()) + .withContext("registrationServiceSpy.registration.calls.count() !== 1") + .toBe(1); + expect(registrationServiceSpy.registration.calls.first().args) + .withContext(`registrationServiceSpy.registration.calls.first().args != [${expectedLogin} ${expectedPassword} ${expectedOrgName}]`) + .toEqual([expectedLogin, expectedPassword, expectedOrgName]); + + })); + + it('registration should be succeed (enter)', () => { + // given (instead of when) + + // when + + // login focus + + window.dispatchEvent(new KeyboardEvent('keydown',{ + key: 'l', + ctrlKey: true + })); + fixture.detectChanges(); + let focusElement: HTMLElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(loginInput); + + window.dispatchEvent(new KeyboardEvent('keydown',{ + key: 'L', + ctrlKey: true + })); + fixture.detectChanges(); + focusElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(loginInput); + + window.dispatchEvent(new KeyboardEvent('keydown',{ + key: 'д', + ctrlKey: true + })); + fixture.detectChanges(); + focusElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(loginInput); + + window.dispatchEvent(new KeyboardEvent('keydown',{ + key: 'Д', + ctrlKey: true + })); + fixture.detectChanges(); + focusElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(loginInput); + + // password focus + + window.dispatchEvent(new KeyboardEvent('keydown',{ + key: 'p', + ctrlKey: true + })); + fixture.detectChanges(); + focusElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(passwordInput); + + window.dispatchEvent(new KeyboardEvent('keydown',{ + key: 'P', + ctrlKey: true + })); + fixture.detectChanges(); + focusElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(passwordInput); + + window.dispatchEvent(new KeyboardEvent('keydown',{ + key: 'З', + ctrlKey: true + })); + fixture.detectChanges(); + focusElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(passwordInput); + + window.dispatchEvent(new KeyboardEvent('keydown',{ + key: 'з', + ctrlKey: true + })); + fixture.detectChanges(); + focusElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(passwordInput); + + // repeatPassword focus + window.dispatchEvent(new KeyboardEvent('keydown',{ + key: 'r', + ctrlKey: true + })); + fixture.detectChanges(); + focusElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(repeatPasswordInput); + + window.dispatchEvent(new KeyboardEvent('keydown',{ + key: 'R', + ctrlKey: true + })); + fixture.detectChanges(); + focusElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(repeatPasswordInput); + + window.dispatchEvent(new KeyboardEvent('keydown',{ + key: 'К', + ctrlKey: true + })); + fixture.detectChanges(); + focusElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(repeatPasswordInput); + + window.dispatchEvent(new KeyboardEvent('keydown',{ + key: 'к', + ctrlKey: true + })); + fixture.detectChanges(); + focusElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(repeatPasswordInput); + + // orgName focus + + window.dispatchEvent(new KeyboardEvent('keydown',{ + key: 'o', + ctrlKey: true + })); + fixture.detectChanges(); + focusElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(orgNameInput); + + window.dispatchEvent(new KeyboardEvent('keydown',{ + key: 'O', + ctrlKey: true + })); + fixture.detectChanges(); + focusElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(orgNameInput); + + window.dispatchEvent(new KeyboardEvent('keydown',{ + key: 'щ', + ctrlKey: true + })); + fixture.detectChanges(); + focusElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(orgNameInput); + + window.dispatchEvent(new KeyboardEvent('keydown',{ + key: 'Щ', + ctrlKey: true + })); + fixture.detectChanges(); + focusElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(orgNameInput); + + window.dispatchEvent(new KeyboardEvent('keydown',{ + key: 'b', + ctrlKey: true + })); + fixture.detectChanges(); + focusElement = hostDe.query(By.css(":focus")).nativeElement; + expect(focusElement).toBe(orgNameInput); + + + // then (instead of verify) + + }); + + + it('login invalid', () => { + // given (instead of when) + + const expectedLogin ="som"; + + // when + + loginInput.value = expectedLogin; + loginInput.dispatchEvent(new Event('input')); + window.dispatchEvent(new KeyboardEvent('keypress',{ + key: 'tab' + })); + + fixture.detectChanges(); + + expect(component.login.invalid && (component.login.dirty || component.login.touched) && component.login.errors?.['minlength']).toBeTruthy(); + expect(submitButton.disabled).withContext("submitButton.disabled === false").toEqual(true); + expect(component.registrationFormGroup.invalid).withContext("submitButton.disabled === false").toEqual(true); + + // then (instead of verify) + + + }); + + it('password invalid', () => { + // given (instead of when) + + const expectedPassword = "zcvs"; + + // when + + passwordInput.value = expectedPassword; + passwordInput.dispatchEvent(new Event('input')); + window.dispatchEvent(new KeyboardEvent('keypress',{ + key: 'tab' + })); + + fixture.detectChanges(); + + expect(component.password.invalid && (component.password.dirty || component.password.touched) && component.password.errors?.['pattern']).toBeTruthy(); + expect(submitButton.disabled).withContext("submitButton.disabled === false").toEqual(true); + expect(component.registrationFormGroup.invalid).withContext("submitButton.disabled === false").toEqual(true); + + // then (instead of verify) + + + }); + + it('orgName invalid', () => { + // given (instead of when) + + const expectedOrgName = "xzv"; + + // when + + orgNameInput.value = expectedOrgName; + orgNameInput.dispatchEvent(new Event('input')); + window.dispatchEvent(new KeyboardEvent('keypress',{ + key: 'tab' + })); + + fixture.detectChanges(); + + expect(component.orgName.invalid && (component.orgName.dirty || component.orgName.touched) && component.orgName.errors?.['minlength']).toBeTruthy(); + expect(submitButton.disabled).withContext("submitButton.disabled === false").toEqual(true); + expect(component.registrationFormGroup.invalid).withContext("submitButton.disabled === false").toEqual(true); + + // then (instead of verify) + + + }); + + it('repeatPassword invalid', () => { + // given (instead of when) + + const expectedPassword = "zcvs"; + const expectedRepeatPassword = "zcvs4"; + + // when + + passwordInput.value = expectedPassword; + passwordInput.dispatchEvent(new Event('input')); + repeatPasswordInput.value = expectedRepeatPassword; + repeatPasswordInput.dispatchEvent(new Event('input')); + + window.dispatchEvent(new KeyboardEvent('keypress',{ + key: 'tab' + })); + + fixture.detectChanges(); + + const erElement: HTMLElement = hostDe.query(By.css(".er")).nativeElement; + expect(erElement.textContent).toContain("Password mismatch"); + + expect(submitButton.disabled).withContext("submitButton.disabled === false").toEqual(true); + expect(component.registrationFormGroup.invalid).withContext("submitButton.disabled === false").toEqual(true); + + // then (instead of verify) + + + }); + +}); \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.component.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.component.ts new file mode 100644 index 00000000..efd9765e --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.component.ts @@ -0,0 +1,183 @@ +import { Component, AfterViewInit, ElementRef, HostListener, OnDestroy, OnInit, QueryList, Renderer2, ViewChild, ViewChildren } from '@angular/core'; +import { AbstractControl, FormControl, FormGroup, ValidationErrors, ValidatorFn, Validators } from '@angular/forms'; +import { MatTooltip } from '@angular/material/tooltip'; +import { Subject, first, takeUntil } from 'rxjs'; +import { RegistrationService } from './registration.service'; +import { HttpErrorResponse } from '@angular/common/http'; +import { GenerationCookieCsrfService } from '../generation-cookie-csrf.service'; +import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar'; + +@Component({ + selector: 'app-registration', + templateUrl: './registration.component.html', + styleUrls: ['./registration.component.scss'] +}) +export class RegistrationComponent implements AfterViewInit, OnDestroy { + // to clear the rxjs memory + // для очистки памяти rxjs + private readonly onDestroy = new Subject(); + + readonly registrationFormGroup = new FormGroup({ + login: new FormControl('', { + nonNullable: true, validators: [ + Validators.required, + Validators.minLength(4) + ] + }), + password: new FormControl('', { + nonNullable: true, validators: [ + Validators.required, + Validators.pattern('^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$') + ] + }), + repeatPassword: new FormControl('', { nonNullable: true, validators: [ + Validators.required + ]}), + orgName: new FormControl('', { + nonNullable: true, validators: [ + Validators.required, + Validators.minLength(4) + ] + }) + }, { validators: repeatPasswordEqPasswordValidator }); + + get login() { return this.registrationFormGroup.controls.login } + get password() { return this.registrationFormGroup.controls.password } + get repeatPassword() { return this.registrationFormGroup.controls.repeatPassword } + get orgName() { return this.registrationFormGroup.controls.orgName } + + // show or hide password + // показывать или скрывать пароль + passwordShowFlag: boolean = false; + passwordShowFlag2: boolean = false; + + // waiting for a response from the server + // ожидание ответа от сервера + getResponseFromServerFlag: boolean = false; + // error from server + // ошибка от сервера + errorOnServer!: string | undefined; + + readonly actionCloseButtonName = 'CLOSE'; + readonly confOptionsSnackbar: MatSnackBarConfig = { + duration: 5000 + }; + + @HostListener('window:keydown.enter', ['$event']) onKeydownEnterHandler(event: KeyboardEvent) { + this.submit(); + } + + @HostListener('window:keydown', ['$event']) onKeydownHandler(event: KeyboardEvent) { + if (!event.ctrlKey) { return; } + + if (event.key === 'l' || event.key === 'L' || event.key === 'д' || event.key === 'Д') { + this.focusLogin(); + return false; + } else if (event.key === 'p' || event.key === 'P' || event.key === 'З' || event.key === 'з') { + this.renderer.selectRootElement("#password")?.focus(); + return false; + } else if (event.key === 'r' || event.key === 'R' || event.key === 'К' || event.key === 'к') { + this.renderer.selectRootElement("#repeatPassword")?.focus(); + return false; + } else if (event.key === 'o' || event.key === 'O' || event.key === 'щ' || event.key === 'Щ') { + this.renderer.selectRootElement("#orgName")?.focus(); + return false; + } + + return; + } + + constructor( + private renderer: Renderer2, + private generationCookieCsrfService: GenerationCookieCsrfService, + private matSnackBar: MatSnackBar, + private registationService: RegistrationService + ) { } + + ngAfterViewInit() { + setTimeout(() => { + this.focusLogin(); + }, 1); + } + + focusLogin() { + this.renderer.selectRootElement("#login")?.focus(); + } + + + passwordDisplay(tooltip: MatTooltip) { + this.passwordShowFlag = !this.passwordShowFlag; + + if (this.passwordShowFlag) { + tooltip.message = 'Hide Password'; + } else { + tooltip.message = 'Show Password'; + } + tooltip.show(); + } + + passwordDisplay2(tooltip: MatTooltip) { + this.passwordShowFlag2 = !this.passwordShowFlag2; + + if (this.passwordShowFlag2) { + tooltip.message = 'Hide Password'; + } else { + tooltip.message = 'Show Password'; + } + tooltip.show(); + } + + submit(){ + + if (this.registrationFormGroup?.valid && !this.getResponseFromServerFlag) { + + this.getResponseFromServerFlag = true; + + this.generationCookieCsrfService.generateCookieCsrf(); + + this.registationService.registration( + this.registrationFormGroup.controls.login.value, + this.registrationFormGroup.controls.password.value, + this.registrationFormGroup.controls.orgName.value + ) + .pipe( + first(), + takeUntil(this.onDestroy) + ) + .subscribe({ + next: (responseLogin) => { + + // ответ получили + this.getResponseFromServerFlag = false; + + this.registrationFormGroup.reset(); + setTimeout(() => { + this.focusLogin(); + }, 5); + + this.matSnackBar.open("Success", this.actionCloseButtonName, this.confOptionsSnackbar); + }, + error: (error: HttpErrorResponse) => { + + // ответ получили + this.getResponseFromServerFlag = false; + } + }); + + } + } + + ngOnDestroy(): void { + this.onDestroy.next(); + this.onDestroy.complete(); + } +} + +const repeatPasswordEqPasswordValidator: ValidatorFn = +(control: AbstractControl): ValidationErrors | null => { + + const password = control.get('password'); + const repeatPassword = control.get('repeatPassword'); + + return password && repeatPassword && password.value !== repeatPassword.value ? { notEq: true } : null; +}; \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.module.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.module.ts new file mode 100644 index 00000000..8fc29963 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.module.ts @@ -0,0 +1,39 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { RegistrationRoutingModule } from './registration-routing.module'; +import { RegistrationComponent } from './registration.component'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; + +import { MatTooltipModule } from '@angular/material/tooltip'; +import { ReactiveFormsModule } from '@angular/forms'; +import { MatButtonModule } from '@angular/material/button'; +import { RegistrationService } from './registration.service'; +import { HttpClientModule } from '@angular/common/http'; + +import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; + +import { MatSnackBarModule } from '@angular/material/snack-bar'; + +@NgModule({ + declarations: [ + RegistrationComponent + ], + imports: [ + CommonModule, + RegistrationRoutingModule, + MatFormFieldModule, + MatInputModule, + MatTooltipModule, + ReactiveFormsModule, + MatButtonModule, + MatProgressSpinnerModule, + HttpClientModule, + MatSnackBarModule + ], + providers:[ + RegistrationService + ] +}) +export class RegistrationModule { } diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.service.spec.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.service.spec.ts new file mode 100644 index 00000000..df802945 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.service.spec.ts @@ -0,0 +1,128 @@ +import { TestBed } from '@angular/core/testing'; + +import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; + +import { HttpErrorResponse } from '@angular/common/http'; + +import { RegistrationService } from './registration.service'; +import { ErrorService } from '../error.service'; +import { environment } from '../../environments/environment'; + +describe('RegistrationService', () => { + let service: RegistrationService; + let errorServiceSpy: jasmine.SpyObj; + let httpTestingController: HttpTestingController; + + beforeEach(() => { + + TestBed.configureTestingModule({ + imports: [HttpClientTestingModule], + providers: [ + RegistrationService, + { + provide: ErrorService, useValue: jasmine.createSpyObj('ErrorService', ['handle']) + } + ] + }); + service = TestBed.inject(RegistrationService); + errorServiceSpy = TestBed.inject(ErrorService) as jasmine.SpyObj; + httpTestingController = TestBed.inject(HttpTestingController); + }); + + afterEach(() => { + // After every test, assert that there are no more pending requests. + httpTestingController.verify(); + }); + + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + it('registration should be succeed', done => { + // given (instead of when) + + const registrationHttpBody: { + login: string, + password: string, + orgName: string + } = { + login: "someLogin", + password: "4Jof0#@V4cTaFev0", + orgName: "someOrg" + }; + + const expectedUserId: number = 641; + + // when + + service.registration(registrationHttpBody.login, registrationHttpBody.password, registrationHttpBody.orgName) + .subscribe({ + next: actualUserId => { + expect(actualUserId).toEqual(expectedUserId); + done(); + }, + error: done.fail + }); + + const req = httpTestingController.expectOne(`${environment.apiUrl}/registration`); + + req.flush(expectedUserId); + + // then (instead of verify) + + expect(req.request.method).toEqual('POST'); + expect(req.request.body).toEqual(registrationHttpBody); + + }); + + it('registration should be fail', done => { + // given (instead of when) + + const registrationHttpURL = `${environment.apiUrl}/registration`; + + const registrationHttpBody: { + login: string, + password: string, + orgName: string + } = { + login: "someLogin", + password: "xxx", + orgName: "someOrg" + }; + + const expectedErrorResponse = new HttpErrorResponse({ + error: '["password is invalid"]', + url: registrationHttpURL, + status: 400, + statusText: 'Bad request' + }); + + // when + + service.registration(registrationHttpBody.login, registrationHttpBody.password, registrationHttpBody.orgName) + .subscribe({ + next: actualUserId => done.fail('data not expected'), + error: (actualErrorResponse: HttpErrorResponse) => { + expect(actualErrorResponse).toEqual(expectedErrorResponse); + done(); + } + }); + + + const req = httpTestingController.expectOne(registrationHttpURL); + + req.flush(expectedErrorResponse.error, expectedErrorResponse); + + // then (instead of verify) + + expect(req.request.method).toEqual('POST'); + expect(req.request.body).toEqual(registrationHttpBody); + + expect(errorServiceSpy.handle.calls.count()) + .toBe(1); + expect(errorServiceSpy.handle.calls.first().args) + .toEqual([ expectedErrorResponse.error ]); + }); + +}); diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.service.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.service.ts new file mode 100644 index 00000000..413cd396 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/registration/registration.service.ts @@ -0,0 +1,32 @@ +import { HttpClient, HttpErrorResponse } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable, catchError, throwError } from 'rxjs'; +import { ErrorService } from '../error.service'; +import { environment } from '../../environments/environment'; + +@Injectable() +export class RegistrationService { + + constructor(private http: HttpClient, private errorService: ErrorService) { } + + registration( + login: string, + password: string, + orgName: string + ): Observable{ + return this.http.post(`${environment.apiUrl}/registration`, { + login: login, + password: password, + orgName: orgName + }) + .pipe( + catchError(this.errorHandler.bind(this)) + ); + } + + private errorHandler(error: HttpErrorResponse) { + this.errorService.handle(error.error) + return throwError(() => error) + } +} + diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/window.service.ts b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/window.service.ts new file mode 100644 index 00000000..7719b0db --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/app/window.service.ts @@ -0,0 +1,11 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) +export class WindowService { + + get(): any{ + return window; + } +} \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/assets/.gitkeep b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/assets/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/assets/cat_401.png b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-frontend/src/assets/cat_401.png new file mode 100644 index 0000000000000000000000000000000000000000..08c7ff3dc3eff6e87cc4c93936b98b945e8a4c3f GIT binary patch literal 1008276 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

xx-QSZE6VlX$4&R2>{c_ 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%0D8?@Swi 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�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 T{N>g@@C&JNOFduJGWdT1tR2xB literal 0 HcmV?d00001 diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/.gitignore b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/.gitignore new file mode 100644 index 00000000..c7fc79b7 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/.gitignore @@ -0,0 +1,13 @@ +.env + +**/ca.key +**/ca.crt +**/ca.srl + +nginx/cert +nginx/confs/htpasswd_introspect + +authorization-server.com.truststore.p12 + +.env_readonly +.env_read_and_write \ No newline at end of file diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/.editorconfig b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/.editorconfig new file mode 100644 index 00000000..59d9a3a3 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/.editorconfig @@ -0,0 +1,16 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.ts] +quote_type = single + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/.gitignore b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/.gitignore new file mode 100644 index 00000000..c2065bc2 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/.gitignore @@ -0,0 +1,37 @@ +HELP.md +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/build.gradle b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/build.gradle new file mode 100644 index 00000000..f402dd40 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/build.gradle @@ -0,0 +1,98 @@ +plugins { + id 'java' + id 'org.springframework.boot' version '2.7.13' + id 'io.spring.dependency-management' version '1.0.15.RELEASE' + id 'jacoco' +} + +ext { + httpproxy = "$System.env.HTTP_PROXY" ?: "" + httpsproxy = "$System.env.HTTPS_PROXY" ?: "" + noproxy = "$System.env.NO_PROXY" ?: "" + + repoImage = "$System.env.REPO_IMAGE" ?: "" + projectName = "$System.env.PROJECT_NAME" ?: "" + versionProj = "$System.env.VERSION" ?: "" + + set('testcontainersVersion', "1.18.3") +} + +group = 'com.github.chistousov' +version = '0.0.1-SNAPSHOT' + +java { + sourceCompatibility = '11' + withSourcesJar() +} + +compileJava.options.encoding = "UTF-8" +compileTestJava.options.encoding = "UTF-8" + +configurations { + compileOnly { + extendsFrom annotationProcessor + } +} + +jacocoTestReport { + dependsOn test + reports { + xml.required = true + } +} + +repositories { + mavenCentral() +} + +bootBuildImage { + imageName = "${repoImage}/${projectName}:${versionProj}" + environment = [ + // "HTTP_PROXY" : httpproxy.toString(), + // "HTTPS_PROXY" : httpsproxy.toString(), + // "NO_PROXY" : noproxy.toString(), + // add health check for docker + "BP_HEALTH_CHECKER_ENABLED": "true" + ] + buildpacks = ["urn:cnb:builder:paketo-buildpacks/java", "gcr.io/paketo-buildpacks/health-checker:latest"] +} + +dependencies { + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + + implementation 'org.springframework.boot:spring-boot-starter-security' + + implementation 'org.springframework.boot:spring-boot-starter-webflux' + + implementation 'org.springframework.boot:spring-boot-starter-validation' + implementation 'javax.validation:validation-api:2.0.1.Final' + + implementation 'org.springframework.boot:spring-boot-starter-actuator' + + compileOnly 'org.projectlombok:lombok' + + runtimeOnly 'org.postgresql:postgresql' + + annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor' + annotationProcessor 'org.projectlombok:lombok' + + testImplementation 'org.springframework.boot:spring-boot-starter-test' + testImplementation 'io.projectreactor:reactor-test' + testImplementation 'org.springframework.security:spring-security-test' + testImplementation 'org.testcontainers:junit-jupiter' + testImplementation 'org.testcontainers:postgresql' + + testImplementation "org.testcontainers:mockserver:1.18.3" + testImplementation "org.mock-server:mockserver-client-java:5.15.0" +} + +dependencyManagement { + imports { + mavenBom "org.testcontainers:testcontainers-bom:${testcontainersVersion}" + } +} + +tasks.named('test') { + useJUnitPlatform() + finalizedBy jacocoTestReport +} diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/build_image.bash b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/build_image.bash new file mode 100644 index 00000000..ce9b4344 --- /dev/null +++ b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/build_image.bash @@ -0,0 +1,20 @@ +#!/bin/bash + +# export HTTP_PROXY="http://proxyuser:proxypass@192.168.20.4:8822/" +# export HTTPS_PROXY="http://proxyuser:proxypass@192.168.20.4:8822/" +# export NO_PROXY="localhost,127.0.0.1" + +export REPO_IMAGE="chistousov" +export PROJECT_NAME="ory-hydra-oauth2-example-authorization-server-backend" +export VERSION="1.0.0" + +docker pull paketobuildpacks/builder-jammy-full:0.3.316 + +./gradlew clean test +./gradlew bootBuildImage --builder=paketobuildpacks/builder-jammy-full:0.3.316 + +# publish in docker hub +# docker login +# docker push $REPO_IMAGE/$PROJECT_NAME:$VERSION +# docker logout +# docker rmi $REPO_IMAGE/$PROJECT_NAME:$VERSION diff --git a/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/gradle/wrapper/gradle-wrapper.jar b/ory-hydra-oauth2.0-spring-angular-docker-compose/ory_hydra_oauth2_example_authorization_server/authorization/authorization-backend/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..249e5832f090a2944b7473328c07c9755baa3196 GIT binary patch literal 60756 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