gitextract_c41fuwm_/ ├── .credo.exs ├── .formatter.exs ├── .github/ │ ├── FUNDING.yml │ └── workflows/ │ ├── deploy.yml │ └── elixir.yml ├── .gitignore ├── .gitlab-ci.yml ├── .tool-versions ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── Dockerfile.admin ├── Dockerfile.auth ├── Dockerfile.full ├── Dockerfile.gateway ├── GENERAL_TERMS_AND_CONDITIONS.md ├── LICENSE.md ├── README.md ├── ansible/ │ ├── .kube/ │ │ └── kubeconfig-k8s-boruta.yaml │ ├── deploy.yml │ ├── hosts │ └── inventories/ │ ├── gke │ ├── local │ └── scaleway ├── apps/ │ ├── boruta_admin/ │ │ ├── .formatter.exs │ │ ├── .gitignore │ │ ├── assets/ │ │ │ ├── .browserslistrc │ │ │ ├── .editorconfig │ │ │ ├── .eslintrc.js │ │ │ ├── .gitignore │ │ │ ├── index.html │ │ │ ├── jsconfig.json │ │ │ ├── package.json │ │ │ ├── postcss.config.js │ │ │ ├── src/ │ │ │ │ ├── App.vue │ │ │ │ ├── components/ │ │ │ │ │ ├── Breadcrumb.vue │ │ │ │ │ ├── Feedback.vue │ │ │ │ │ ├── Forms/ │ │ │ │ │ │ ├── BackendForm.vue │ │ │ │ │ │ ├── ClientForm.vue │ │ │ │ │ │ ├── FormErrors.vue │ │ │ │ │ │ ├── GatewayScopesField.vue │ │ │ │ │ │ ├── IdentityProviderField.vue │ │ │ │ │ │ ├── IdentityProviderForm.vue │ │ │ │ │ │ ├── OrganizationForm.vue │ │ │ │ │ │ ├── OrganizationsField.vue │ │ │ │ │ │ ├── RoleForm.vue │ │ │ │ │ │ ├── RolesField.vue │ │ │ │ │ │ ├── ScopesField.vue │ │ │ │ │ │ ├── ScopesFieldByName.vue │ │ │ │ │ │ ├── TextEditor.vue │ │ │ │ │ │ ├── UpstreamForm.vue │ │ │ │ │ │ └── UserForm.vue │ │ │ │ │ ├── Header.vue │ │ │ │ │ ├── Toaster.vue │ │ │ │ │ └── VerifiableCredentialClaim.vue │ │ │ │ ├── main.js │ │ │ │ ├── models/ │ │ │ │ │ ├── backend.model.js │ │ │ │ │ ├── business-log-stats.model.js │ │ │ │ │ ├── client.model.js │ │ │ │ │ ├── email-template.model.js │ │ │ │ │ ├── error-template.model.js │ │ │ │ │ ├── identity-provider.model.js │ │ │ │ │ ├── key-pair.model.js │ │ │ │ │ ├── organization.model.js │ │ │ │ │ ├── request-log-stats.model.js │ │ │ │ │ ├── role.model.js │ │ │ │ │ ├── scope.model.js │ │ │ │ │ ├── template.model.js │ │ │ │ │ ├── upstream.model.js │ │ │ │ │ ├── user.model.js │ │ │ │ │ └── utils.js │ │ │ │ ├── router.js │ │ │ │ ├── services/ │ │ │ │ │ ├── configuration-file.service.js │ │ │ │ │ └── oauth.service.js │ │ │ │ ├── store.js │ │ │ │ └── views/ │ │ │ │ ├── BadRequest.vue │ │ │ │ ├── Clients/ │ │ │ │ │ ├── Client.vue │ │ │ │ │ ├── ClientList.vue │ │ │ │ │ ├── EditClient.vue │ │ │ │ │ ├── KeyPairList.vue │ │ │ │ │ └── NewClient.vue │ │ │ │ ├── Clients.vue │ │ │ │ ├── Configuration/ │ │ │ │ │ ├── ConfigurationFileUpload.vue │ │ │ │ │ ├── EditBadRequestTemplate.vue │ │ │ │ │ ├── EditForbiddenTemplate.vue │ │ │ │ │ ├── EditInternalServerErrorTemplate.vue │ │ │ │ │ ├── EditNotFoundTemplate.vue │ │ │ │ │ └── ErrorTemplateList.vue │ │ │ │ ├── Configuration.vue │ │ │ │ ├── Dashboard/ │ │ │ │ │ ├── BusinessEvents.vue │ │ │ │ │ └── Requests.vue │ │ │ │ ├── Dashboard.vue │ │ │ │ ├── Home.vue │ │ │ │ ├── IdentityProviders/ │ │ │ │ │ ├── BackendList.vue │ │ │ │ │ ├── Backends/ │ │ │ │ │ │ ├── Backend.vue │ │ │ │ │ │ ├── EditConfirmationInstructionsEmailTemplate.vue │ │ │ │ │ │ ├── EditResetPasswordInstructionsEmailTemplate.vue │ │ │ │ │ │ └── EditTxCodeEmailTemplate.vue │ │ │ │ │ ├── Backends.vue │ │ │ │ │ ├── EditBackend.vue │ │ │ │ │ ├── EditCredentialOfferTemplate.vue │ │ │ │ │ ├── EditCrossDevicePresentationTemplate.vue │ │ │ │ │ ├── EditEditResetPasswordTemplate.vue │ │ │ │ │ ├── EditEditUserTemplate.vue │ │ │ │ │ ├── EditIdentityProvider.vue │ │ │ │ │ ├── EditLayoutTemplate.vue │ │ │ │ │ ├── EditNewChooseSessionTemplate.vue │ │ │ │ │ ├── EditNewConfirmationTemplate.vue │ │ │ │ │ ├── EditNewConsentTemplate.vue │ │ │ │ │ ├── EditNewResetPasswordTemplate.vue │ │ │ │ │ ├── EditOrganization.vue │ │ │ │ │ ├── EditRegistrationTemplate.vue │ │ │ │ │ ├── EditSessionTemplate.vue │ │ │ │ │ ├── EditTotpAuthenticationTemplate.vue │ │ │ │ │ ├── EditTotpRegistrationTemplate.vue │ │ │ │ │ ├── EditUser.vue │ │ │ │ │ ├── EditWebauthnAuthenticationTemplate.vue │ │ │ │ │ ├── EditWebauthnRegistrationTemplate.vue │ │ │ │ │ ├── IdentityProvider.vue │ │ │ │ │ ├── IdentityProviderList.vue │ │ │ │ │ ├── NewBackend.vue │ │ │ │ │ ├── NewIdentityProvider.vue │ │ │ │ │ ├── NewOrganization.vue │ │ │ │ │ ├── NewUser.vue │ │ │ │ │ ├── OrganizationList.vue │ │ │ │ │ ├── Organizations.vue │ │ │ │ │ ├── UserImport.vue │ │ │ │ │ ├── UserList.vue │ │ │ │ │ └── Users.vue │ │ │ │ ├── IdentityProviders.vue │ │ │ │ ├── Layouts/ │ │ │ │ │ └── Main.vue │ │ │ │ ├── NotFound.vue │ │ │ │ ├── OauthCallback.vue │ │ │ │ ├── Roles/ │ │ │ │ │ ├── EditRole.vue │ │ │ │ │ ├── NewRole.vue │ │ │ │ │ ├── Role.vue │ │ │ │ │ └── RoleList.vue │ │ │ │ ├── Roles.vue │ │ │ │ ├── Scopes/ │ │ │ │ │ └── ScopeList.vue │ │ │ │ ├── Scopes.vue │ │ │ │ ├── Upstreams/ │ │ │ │ │ ├── EditUpstream.vue │ │ │ │ │ ├── NewUpstream.vue │ │ │ │ │ ├── Upstream.vue │ │ │ │ │ └── UpstreamList.vue │ │ │ │ └── Upstreams.vue │ │ │ ├── tests/ │ │ │ │ └── unit/ │ │ │ │ └── .eslintrc.js │ │ │ └── vite.config.js │ │ ├── config/ │ │ │ ├── config.exs │ │ │ ├── dev.exs │ │ │ ├── prod.exs │ │ │ └── test.exs │ │ ├── lib/ │ │ │ ├── boruta_admin/ │ │ │ │ ├── application.ex │ │ │ │ ├── configuration_loader/ │ │ │ │ │ └── schema.ex │ │ │ │ ├── configuration_loader.ex │ │ │ │ ├── configurations/ │ │ │ │ │ └── configuration.ex │ │ │ │ ├── configurations.ex │ │ │ │ ├── logs.ex │ │ │ │ ├── release.ex │ │ │ │ └── repo.ex │ │ │ ├── boruta_admin.ex │ │ │ ├── boruta_admin_web/ │ │ │ │ ├── controllers/ │ │ │ │ │ ├── backend_controller.ex │ │ │ │ │ ├── boruta/ │ │ │ │ │ │ ├── client_controller.ex │ │ │ │ │ │ └── scope_controller.ex │ │ │ │ │ ├── configuration_controller.ex │ │ │ │ │ ├── fallback_controller.ex │ │ │ │ │ ├── identity_provider_controller.ex │ │ │ │ │ ├── key_pair_controller.ex │ │ │ │ │ ├── logs_controller.ex │ │ │ │ │ ├── organization_controller.ex │ │ │ │ │ ├── page_controller.ex │ │ │ │ │ ├── role_controller.ex │ │ │ │ │ ├── upstream_controller.ex │ │ │ │ │ └── user_controller.ex │ │ │ │ ├── endpoint.ex │ │ │ │ ├── gettext.ex │ │ │ │ ├── plugs/ │ │ │ │ │ ├── authorization.ex │ │ │ │ │ └── logger.ex │ │ │ │ ├── router.ex │ │ │ │ ├── telemetry.ex │ │ │ │ ├── templates/ │ │ │ │ │ ├── error/ │ │ │ │ │ │ ├── 404.html.eex │ │ │ │ │ │ └── 500.html.eex │ │ │ │ │ └── page/ │ │ │ │ │ └── admin.html.eex │ │ │ │ └── views/ │ │ │ │ ├── backend_view.ex │ │ │ │ ├── changeset_view.ex │ │ │ │ ├── client_view.ex │ │ │ │ ├── configuration_view.ex │ │ │ │ ├── error_helpers.ex │ │ │ │ ├── error_view.ex │ │ │ │ ├── identity_provider_view.ex │ │ │ │ ├── key_pair_view.ex │ │ │ │ ├── logs_view.ex │ │ │ │ ├── organization_view.ex │ │ │ │ ├── page_view.ex │ │ │ │ ├── role_view.ex │ │ │ │ ├── scope_view.ex │ │ │ │ ├── upstream_view.ex │ │ │ │ └── user_view.ex │ │ │ └── boruta_admin_web.ex │ │ ├── mix.exs │ │ ├── priv/ │ │ │ ├── examples/ │ │ │ │ └── configuration.yml │ │ │ ├── gettext/ │ │ │ │ ├── en/ │ │ │ │ │ └── LC_MESSAGES/ │ │ │ │ │ └── errors.po │ │ │ │ └── errors.pot │ │ │ ├── repo/ │ │ │ │ ├── migrations/ │ │ │ │ │ ├── .formatter.exs │ │ │ │ │ └── 20240508054424_create_configurations.exs │ │ │ │ └── seeds.exs │ │ │ └── test/ │ │ │ └── configuration_files/ │ │ │ ├── bad_backend_configuration.yml │ │ │ ├── bad_client_configuration.yml │ │ │ ├── bad_error_template_configuration.yml │ │ │ ├── bad_identity_provider_configuration.yml │ │ │ ├── bad_organization_configuration.yml │ │ │ ├── bad_role_configuration.yml │ │ │ ├── bad_scope_configuration.yml │ │ │ └── full_configuration.yml │ │ └── test/ │ │ ├── boruta_admin/ │ │ │ └── configuration_loader_test.exs │ │ ├── boruta_admin_web/ │ │ │ ├── controllers/ │ │ │ │ ├── backend_controller_test.exs │ │ │ │ ├── client_controller_test.exs │ │ │ │ ├── configuration_controller_test.exs │ │ │ │ ├── identity_provider_controller_test.exs │ │ │ │ ├── key_pair_controller_test.exs │ │ │ │ ├── logs_controller_test.exs │ │ │ │ ├── organization_controller_test.exs │ │ │ │ ├── page_controller_test.exs │ │ │ │ ├── role_controller_test.exs │ │ │ │ ├── scope_controller_test.exs │ │ │ │ ├── upstream_controller_test.exs │ │ │ │ └── user_controller_test.exs │ │ │ └── views/ │ │ │ ├── error_view_test.exs │ │ │ └── page_view_test.exs │ │ ├── data/ │ │ │ ├── import_users_hashed_password_valid.csv │ │ │ ├── import_users_password_custom_headers_valid.csv │ │ │ ├── import_users_password_invalid.csv │ │ │ └── import_users_password_valid.csv │ │ ├── support/ │ │ │ ├── boruta_factory.ex │ │ │ ├── boruta_identity_factory.ex │ │ │ ├── conn_case.ex │ │ │ └── data_case.ex │ │ └── test_helper.exs │ ├── boruta_auth/ │ │ ├── .formatter.exs │ │ ├── .gitignore │ │ ├── config/ │ │ │ ├── config.exs │ │ │ ├── dev.exs │ │ │ ├── prod.exs │ │ │ └── test.exs │ │ ├── lib/ │ │ │ ├── boruta_auth/ │ │ │ │ ├── application.ex │ │ │ │ ├── key_pairs/ │ │ │ │ │ └── schemas/ │ │ │ │ │ └── key_pair.ex │ │ │ │ ├── key_pairs.ex │ │ │ │ ├── log_rotate.ex │ │ │ │ ├── repo.ex │ │ │ │ └── scheduler.ex │ │ │ └── boruta_auth.ex │ │ ├── mix.exs │ │ ├── priv/ │ │ │ └── repo/ │ │ │ ├── boruta.seeds.exs │ │ │ └── migrations/ │ │ │ ├── 20201129024828_create_boruta.exs │ │ │ ├── 20210114202055_usec_timestamps.exs │ │ │ ├── 20210202095024_add_key_pair_to_clients.exs │ │ │ ├── 20210301123331_add_label_to_scopes.exs │ │ │ ├── 20210514211510_add_default_redirect_uris_to_clients.exs │ │ │ ├── 20210919174149_openid_connect.exs │ │ │ ├── 20210919174150_clients_refresh_tokens.exs │ │ │ ├── 20211013161324_clients_public_revoke.exs │ │ │ ├── 20220113221532_store_previous_token.exs │ │ │ ├── 20220603211852_id_token_signature_alg_configuration.exs │ │ │ ├── 20220625203958_confidential_clients.exs │ │ │ ├── 20220824105115_refresh_token_rotation.exs │ │ │ ├── 20221025084535_authorization_code_chains.exs │ │ │ ├── 20221122131429_client_authentication_methods.exs │ │ │ ├── 20221129120152_signed_userinfo_response.exs │ │ │ ├── 20230506151359_optional_public_key_for_oauth_clients.exs │ │ │ ├── 20230514134306_clients_jwks_uri.exs │ │ │ ├── 20230515093131_create_key_pairs.exs │ │ │ ├── 20230515152140_client_id_token_kid.exs │ │ │ ├── 20231217091349_add_metadata_to_clients.exs │ │ │ ├── 20231217144905_oid4vci_implementation.exs │ │ │ ├── 20240127081327_siopv2_implementation.exs │ │ │ ├── 20240321101558_dpop_implementation.exs │ │ │ ├── 20240417052138_par_implementation.exs │ │ │ ├── 20240506083712_c_nonce_implementation.exs │ │ │ ├── 20240812111902_defered_credentials.exs │ │ │ ├── 20240824191208_clients_did.exs │ │ │ ├── 20240908082918_verifiable_presentation_definitions.exs │ │ │ ├── 20240914084657_clients_response_mode.exs │ │ │ ├── 20241021132955_clients_key_pair_types.exs │ │ │ ├── 20241209110846_tokens_tx_code.exs │ │ │ ├── 20241220104923_clients_signatures_adapters.exs │ │ │ ├── 20250315084213_fix_oauth_clients_did.exs │ │ │ ├── 20250413070457_agent_credentials.exs │ │ │ ├── 20250524160749_public_client_id.exs │ │ │ ├── 20260324152715_codes_response_type.exs │ │ │ ├── 20260324152716_code_metadata_policy.exs │ │ │ ├── 20260330112657_siopv2_encryption.exs │ │ │ └── 20260428121802_requested_scope.exs │ │ └── test/ │ │ ├── boruta_auth/ │ │ │ └── key_pairs_test.exs │ │ └── test_helper.exs │ ├── boruta_gateway/ │ │ ├── .formatter.exs │ │ ├── .gitignore │ │ ├── config/ │ │ │ ├── config.exs │ │ │ ├── dev.exs │ │ │ ├── prod.exs │ │ │ └── test.exs │ │ ├── lib/ │ │ │ ├── boruta_gateway/ │ │ │ │ ├── application.ex │ │ │ │ ├── configuration_loader.ex │ │ │ │ ├── configuration_schemas/ │ │ │ │ │ └── gateway.ex │ │ │ │ ├── gateway_pipeline.ex │ │ │ │ ├── logger.ex │ │ │ │ ├── microgateway_pipeline.ex │ │ │ │ ├── plugs/ │ │ │ │ │ ├── assign_sidecar_upstream.ex │ │ │ │ │ ├── assign_upstream.ex │ │ │ │ │ ├── authorize.ex │ │ │ │ │ ├── handler.ex │ │ │ │ │ └── metrics.ex │ │ │ │ ├── release.ex │ │ │ │ ├── repo.ex │ │ │ │ ├── router.ex │ │ │ │ ├── server.ex │ │ │ │ ├── sidecar_router.ex │ │ │ │ ├── upstreams/ │ │ │ │ │ ├── client/ │ │ │ │ │ │ └── supervisor.ex │ │ │ │ │ ├── client.ex │ │ │ │ │ ├── store.ex │ │ │ │ │ └── upstream.ex │ │ │ │ └── upstreams.ex │ │ │ ├── boruta_gateway.ex │ │ │ └── mix/ │ │ │ └── tasks/ │ │ │ └── server.ex │ │ ├── mix.exs │ │ ├── priv/ │ │ │ ├── repo/ │ │ │ │ ├── migrations/ │ │ │ │ │ ├── 20200219201345_create_upstreams.exs │ │ │ │ │ ├── 20200326185929_upstreams_notify.exs │ │ │ │ │ ├── 20210111144958_change_upstreams_required_scopes_type.exs │ │ │ │ │ ├── 20220319220305_add_pool_size_to_upstreams.exs │ │ │ │ │ ├── 20220728122802_add_max_idle_time_to_upstreams.exs │ │ │ │ │ ├── 20220729040405_add_pool_count_to_upstreams.exs │ │ │ │ │ ├── 20220810082956_add_forbidden_response_to_upstreams.exs │ │ │ │ │ ├── 20220810084238_add_error_content_type_to_upstreams.exs │ │ │ │ │ ├── 20220810084450_add_unauthorized_response_to_upstreams.exs │ │ │ │ │ ├── 20221024100810_add_forwarded_token_signature_algorithm_to_upstreams.exs │ │ │ │ │ ├── 20221024122642_add_forwarded_token_secret_to_upstreams.exs │ │ │ │ │ ├── 20221024132312_add_forwarded_token_key_pair_to_upstreams.exs │ │ │ │ │ ├── 20230413190522_upstreams_unique_indices.exs │ │ │ │ │ ├── 20230421135202_add_node_name_to_upstreams.exs │ │ │ │ │ └── 20230422083455_update_upstreams_unique_constraint.exs │ │ │ │ └── seeds.exs │ │ │ └── test/ │ │ │ └── configuration_files/ │ │ │ ├── authorized.yml │ │ │ ├── authorized_introspect.yml │ │ │ ├── bad_configuration.yml │ │ │ ├── bad_gateway_configuration.yml │ │ │ ├── bad_microgateway_configuration.yml │ │ │ ├── forbidden.yml │ │ │ ├── full_configuration.yml │ │ │ ├── not_found.yml │ │ │ └── unauthorized.yml │ │ └── test/ │ │ ├── boruta_gateway/ │ │ │ ├── configuration_loader_test.exs │ │ │ ├── integration/ │ │ │ │ └── requests_test.exs │ │ │ ├── upstreams/ │ │ │ │ ├── client_test.exs │ │ │ │ └── store_test.exs │ │ │ └── upstreams_test.exs │ │ ├── support/ │ │ │ └── data_case.ex │ │ └── test_helper.exs │ ├── boruta_identity/ │ │ ├── .formatter.exs │ │ ├── .gitignore │ │ ├── assets/ │ │ │ └── wallet/ │ │ │ ├── .browserslistrc │ │ │ ├── .gitignore │ │ │ ├── Dockerfile │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── public/ │ │ │ │ ├── index.html │ │ │ │ └── robots.txt │ │ │ ├── src/ │ │ │ │ ├── App.vue │ │ │ │ ├── components/ │ │ │ │ │ ├── Consent.vue │ │ │ │ │ ├── Credentials.vue │ │ │ │ │ ├── HelloWorld.vue │ │ │ │ │ └── KeySelect.vue │ │ │ │ ├── main.ts │ │ │ │ ├── registerServiceWorker.ts │ │ │ │ ├── router/ │ │ │ │ │ └── index.ts │ │ │ │ ├── shims-vue.d.ts │ │ │ │ ├── store/ │ │ │ │ │ └── index.ts │ │ │ │ └── views/ │ │ │ │ ├── HomeView.vue │ │ │ │ ├── Oid4vcCallbackView.vue │ │ │ │ └── VerifiableCredentialsIssuanceView.vue │ │ │ ├── tsconfig.json │ │ │ └── vite.config.js │ │ ├── config/ │ │ │ ├── config.exs │ │ │ ├── dev.exs │ │ │ ├── prod.exs │ │ │ └── test.exs │ │ ├── lib/ │ │ │ ├── boruta_identity/ │ │ │ │ ├── accounts/ │ │ │ │ │ ├── backends/ │ │ │ │ │ │ ├── federated.ex │ │ │ │ │ │ ├── internal/ │ │ │ │ │ │ │ └── user.ex │ │ │ │ │ │ ├── internal.ex │ │ │ │ │ │ ├── ldap/ │ │ │ │ │ │ │ └── user.ex │ │ │ │ │ │ └── ldap.ex │ │ │ │ │ ├── choose_sessions.ex │ │ │ │ │ ├── confirmations.ex │ │ │ │ │ ├── consents.ex │ │ │ │ │ ├── deliveries/ │ │ │ │ │ │ ├── email_template.ex │ │ │ │ │ │ └── user_notifier.ex │ │ │ │ │ ├── deliveries.ex │ │ │ │ │ ├── registrations.ex │ │ │ │ │ ├── reset_passwords.ex │ │ │ │ │ ├── schemas/ │ │ │ │ │ │ ├── consent.ex │ │ │ │ │ │ ├── role.ex │ │ │ │ │ │ ├── role_scope.ex │ │ │ │ │ │ ├── user.ex │ │ │ │ │ │ ├── user_authorized_scope.ex │ │ │ │ │ │ ├── user_role.ex │ │ │ │ │ │ └── user_token.ex │ │ │ │ │ ├── sessions.ex │ │ │ │ │ ├── settings.ex │ │ │ │ │ ├── users.ex │ │ │ │ │ ├── verifiable_credentials.ex │ │ │ │ │ └── verifiable_presentations.ex │ │ │ │ ├── accounts.ex │ │ │ │ ├── admin.ex │ │ │ │ ├── application.ex │ │ │ │ ├── clients.ex │ │ │ │ ├── configuration/ │ │ │ │ │ └── error_template.ex │ │ │ │ ├── configuration.ex │ │ │ │ ├── federated_accounts.ex │ │ │ │ ├── hooks/ │ │ │ │ │ └── post_user_creation_hook.ex │ │ │ │ ├── identity_providers/ │ │ │ │ │ ├── backend.ex │ │ │ │ │ ├── backend_role.ex │ │ │ │ │ ├── client_identity_provider.ex │ │ │ │ │ ├── identity_provider.ex │ │ │ │ │ └── template.ex │ │ │ │ ├── identity_providers.ex │ │ │ │ ├── ldap_repo.ex │ │ │ │ ├── logger.ex │ │ │ │ ├── organizations/ │ │ │ │ │ ├── organization.ex │ │ │ │ │ └── organization_user.ex │ │ │ │ ├── organizations.ex │ │ │ │ ├── repo.ex │ │ │ │ ├── resource_owners.ex │ │ │ │ ├── totp.ex │ │ │ │ └── webauthn.ex │ │ │ ├── boruta_identity.ex │ │ │ ├── boruta_identity_web/ │ │ │ │ ├── concerns/ │ │ │ │ │ └── authenticable.ex │ │ │ │ ├── controllers/ │ │ │ │ │ ├── backends_controller.ex │ │ │ │ │ ├── choose_session_controller.ex │ │ │ │ │ ├── fallback_controller.ex │ │ │ │ │ ├── totp_controller.ex │ │ │ │ │ ├── user_confirmation_controller.ex │ │ │ │ │ ├── user_consent_controller.ex │ │ │ │ │ ├── user_registration_controller.ex │ │ │ │ │ ├── user_reset_password_controller.ex │ │ │ │ │ ├── user_session_controller.ex │ │ │ │ │ ├── user_settings_controller.ex │ │ │ │ │ ├── wallet_controller.ex │ │ │ │ │ └── webauthn_controller.ex │ │ │ │ ├── endpoint.ex │ │ │ │ ├── gettext.ex │ │ │ │ ├── plugs/ │ │ │ │ │ └── sessions.ex │ │ │ │ ├── router.ex │ │ │ │ ├── telemetry.ex │ │ │ │ ├── templates/ │ │ │ │ │ ├── error/ │ │ │ │ │ │ ├── 400.html.eex │ │ │ │ │ │ ├── 403.html.eex │ │ │ │ │ │ ├── 404.html.eex │ │ │ │ │ │ └── 500.html.eex │ │ │ │ │ ├── layout/ │ │ │ │ │ │ └── app.html.eex │ │ │ │ │ └── wallet/ │ │ │ │ │ └── index.html.eex │ │ │ │ ├── token.ex │ │ │ │ └── views/ │ │ │ │ ├── error_helpers.ex │ │ │ │ ├── error_view.ex │ │ │ │ ├── template_view.ex │ │ │ │ └── wallet_view.ex │ │ │ └── boruta_identity_web.ex │ │ ├── mix.exs │ │ ├── priv/ │ │ │ ├── gettext/ │ │ │ │ ├── en/ │ │ │ │ │ └── LC_MESSAGES/ │ │ │ │ │ └── errors.po │ │ │ │ └── errors.pot │ │ │ ├── repo/ │ │ │ │ ├── migrations/ │ │ │ │ │ ├── .formatter.exs │ │ │ │ │ ├── 20210127190501_create_users_auth_tables.exs │ │ │ │ │ ├── 20210128080043_create_users_authorized_scopes.exs │ │ │ │ │ ├── 20210208110903_user_authorized_scopes_unique_index.exs │ │ │ │ │ ├── 20210302213536_create_consents.exs │ │ │ │ │ ├── 20210806194842_add_last_login_at_to_users.exs │ │ │ │ │ ├── 20211002132445_modify_users_confirmed_at.exs │ │ │ │ │ ├── 20211129225646_create_relying_parties.exs │ │ │ │ │ ├── 20211130230927_create_clients_relying_parties.exs │ │ │ │ │ ├── 20220117220007_add_registrable_to_relying_parties.exs │ │ │ │ │ ├── 20220118122834_add_unique_name_to_relying_parties.exs │ │ │ │ │ ├── 20220120214356_create_relying_party_templates.exs │ │ │ │ │ ├── 20220131133951_add_confirmable_to_relying_parties.exs │ │ │ │ │ ├── 20220218144931_add_consentable_to_relying_parties.exs │ │ │ │ │ ├── 20220221123627_add_choose_session_to_relying_parties.exs │ │ │ │ │ ├── 20220520212652_add_user_editable_to_relying_parties.exs │ │ │ │ │ ├── 20220528155902_create_internal_users.exs │ │ │ │ │ ├── 20220607201657_add_user_authorized_scopes_scope_id.exs │ │ │ │ │ ├── 20220617195827_rename_relying_parties.exs │ │ │ │ │ ├── 20220628073937_create_error_templates.exs │ │ │ │ │ ├── 20220812123254_create_backends.exs │ │ │ │ │ ├── 20220815073225_add_backend_id_to_identity_providers.exs │ │ │ │ │ ├── 20220815091033_remove_type_from_identity_providers.exs │ │ │ │ │ ├── 20220815115719_add_default_to_backends.exs │ │ │ │ │ ├── 20220816074610_add_password_hashing_opts_to_backends.exs │ │ │ │ │ ├── 20220817134821_change_users_provider_to_backend_id.exs │ │ │ │ │ ├── 20220817150643_add_backend_id_to_internal_users.exs │ │ │ │ │ ├── 20220826055043_add_mail_configuration_to_backends.exs │ │ │ │ │ ├── 20220904073628_create_pg_trgm_extension.exs │ │ │ │ │ ├── 20220904183116_create_trgm_index.exs │ │ │ │ │ ├── 20220911195248_add_ldap_configuration_to_backends.exs │ │ │ │ │ ├── 20220915191039_add_ldap_ser_rdn_attribute_to_backends.exs │ │ │ │ │ ├── 20221008202236_add_ldap_master_credentials_to_backends.exs │ │ │ │ │ ├── 20221026092004_create_email_templates.exs │ │ │ │ │ ├── 20221026211130_add_smtp_ssl_to_backends.exs │ │ │ │ │ ├── 20221028083326_add_revoked_at_to_users_tokens.exs │ │ │ │ │ ├── 20221108140432_add_metadata_fields_to_backends.exs │ │ │ │ │ ├── 20221108144651_add_metadata_to_users.exs │ │ │ │ │ ├── 20230303151220_add_group_to_users.exs │ │ │ │ │ ├── 20230502111802_add_identity_federation_to_backends.exs │ │ │ │ │ ├── 20230605073651_create_roles.exs │ │ │ │ │ ├── 20230605074117_create_roles_scopes.exs │ │ │ │ │ ├── 20230615082520_create_roles_users.exs │ │ │ │ │ ├── 20230626064411_create_backends_roles.exs │ │ │ │ │ ├── 20230805134343_add_totpable_to_identity_providers.exs │ │ │ │ │ ├── 20230805160200_add_totp_to_users.exs │ │ │ │ │ ├── 20230810130509_add_enforce_totp_to_identity_providers.exs │ │ │ │ │ ├── 20230903150227_create_organizations.exs │ │ │ │ │ ├── 20230908094746_add_label_to_organizations.exs │ │ │ │ │ ├── 20230908113944_create_organizations_users.exs │ │ │ │ │ ├── 20230909103013_add_create_default_organization_to_backends.exs │ │ │ │ │ ├── 20240109125818_add_verifiable_credentails_to_backends.exs │ │ │ │ │ ├── 20240110094020_add_federated_metadata_to_users.exs │ │ │ │ │ ├── 20240426110841_organizations_users_reference.exs │ │ │ │ │ ├── 20240505104631_organizations_users_reference2.exs │ │ │ │ │ ├── 20240808195715_add_webauthn_challenge_to_users.exs │ │ │ │ │ ├── 20240820140733_add_webauthn_public_key_to_users.exs │ │ │ │ │ ├── 20240820233604_add_webauthn_to_identity_providers.exs │ │ │ │ │ ├── 20240907103609_add_verifiable_presentations_to_backends.exs │ │ │ │ │ ├── 20241017153124_add_account_type_to_users.exs │ │ │ │ │ ├── 20241130000259_add_check_password_to_identity_providers.exs │ │ │ │ │ └── 20250302193825_remove_global_email_unique_constraint.exs │ │ │ │ └── seeds.exs │ │ │ └── templates/ │ │ │ ├── choose_session/ │ │ │ │ └── index.mustache │ │ │ ├── confirmations/ │ │ │ │ └── new.mustache │ │ │ ├── consents/ │ │ │ │ └── new.mustache │ │ │ ├── emails/ │ │ │ │ ├── confirmation_instructions.html.mustache │ │ │ │ ├── confirmation_instructions.txt.mustache │ │ │ │ ├── reset_password_instructions.html.mustache │ │ │ │ ├── reset_password_instructions.txt.mustache │ │ │ │ ├── tx_code.html.mustache │ │ │ │ └── tx_code.txt.mustache │ │ │ ├── errors/ │ │ │ │ ├── 400.mustache │ │ │ │ ├── 401.mustache │ │ │ │ ├── 403.mustache │ │ │ │ ├── 404.mustache │ │ │ │ └── 500.mustache │ │ │ ├── layouts/ │ │ │ │ └── app.mustache │ │ │ ├── mfa/ │ │ │ │ ├── totp/ │ │ │ │ │ ├── authentication.mustache │ │ │ │ │ └── registration.mustache │ │ │ │ └── webauthn/ │ │ │ │ ├── authentication.mustache │ │ │ │ └── registration.mustache │ │ │ ├── registrations/ │ │ │ │ └── new.mustache │ │ │ ├── reset_passwords/ │ │ │ │ ├── edit.mustache │ │ │ │ └── new.mustache │ │ │ ├── sessions/ │ │ │ │ └── new.mustache │ │ │ └── settings/ │ │ │ ├── credential_offer.mustache │ │ │ ├── edit_user.mustache │ │ │ └── verifiable_presentation.mustache │ │ └── test/ │ │ ├── boruta_identity/ │ │ │ ├── accounts/ │ │ │ │ └── deliveries_test.exs │ │ │ ├── accounts_test.exs │ │ │ ├── admin_test.exs │ │ │ ├── configuration_test.exs │ │ │ ├── federated_accounts_test.exs │ │ │ ├── identity_providers/ │ │ │ │ ├── backend_test.exs │ │ │ │ └── identity_provider_test.exs │ │ │ ├── identity_providers_test.exs │ │ │ ├── resource_owners_test.exs │ │ │ ├── totp_test.exs │ │ │ └── webauthn_test.exs │ │ ├── boruta_identity_web/ │ │ │ ├── concerns/ │ │ │ │ └── authenticable_test.exs │ │ │ ├── controllers/ │ │ │ │ ├── choose_session_controller_test.exs │ │ │ │ ├── page_controller_test.exs │ │ │ │ ├── totp_controller_test.exs │ │ │ │ ├── user_confirmation_controller_test.exs │ │ │ │ ├── user_consent_controller_test.exs │ │ │ │ ├── user_registration_controller_test.exs │ │ │ │ ├── user_reset_password_controller_test.exs │ │ │ │ ├── user_session_controller_test.exs │ │ │ │ └── user_settings_controller_test.exs │ │ │ ├── plugs/ │ │ │ │ └── sessions_test.exs │ │ │ └── views/ │ │ │ ├── error_view_test.exs │ │ │ ├── layout_view_test.exs │ │ │ └── page_view_test.exs │ │ ├── support/ │ │ │ ├── boruta_factory.ex │ │ │ ├── boruta_identity_factory.ex │ │ │ ├── conn_case.ex │ │ │ ├── data_case.ex │ │ │ └── fixtures/ │ │ │ ├── accounts_fixtures.ex │ │ │ ├── admin_fixtures.ex │ │ │ └── identity_providers_fixtures.ex │ │ └── test_helper.exs │ └── boruta_web/ │ ├── .formatter.exs │ ├── .gitignore │ ├── config/ │ │ ├── config.exs │ │ ├── dev.exs │ │ ├── prod.exs │ │ └── test.exs │ ├── lib/ │ │ ├── boruta/ │ │ │ └── status_resolver.ex │ │ ├── boruta_web/ │ │ │ ├── application.ex │ │ │ ├── controllers/ │ │ │ │ ├── did_controller.ex │ │ │ │ ├── fallback_controller.ex │ │ │ │ ├── monitoring_controller.ex │ │ │ │ ├── oauth/ │ │ │ │ │ ├── authorize_controller.ex │ │ │ │ │ ├── introspect_controller.ex │ │ │ │ │ ├── pushed_authorization_request_controller.ex │ │ │ │ │ ├── revoke_controller.ex │ │ │ │ │ └── token_controller.ex │ │ │ │ ├── openid/ │ │ │ │ │ ├── credential_controller.ex │ │ │ │ │ ├── dynamic_registration_controller.ex │ │ │ │ │ ├── jwks_controller.ex │ │ │ │ │ └── userinfo_controller.ex │ │ │ │ └── openid_controller.ex │ │ │ ├── endpoint.ex │ │ │ ├── gettext.ex │ │ │ ├── logger.ex │ │ │ ├── plugs/ │ │ │ │ └── rate_limit.ex │ │ │ ├── presentation_server.ex │ │ │ ├── release.ex │ │ │ ├── repo.ex │ │ │ ├── router.ex │ │ │ ├── templates/ │ │ │ │ └── error/ │ │ │ │ ├── 404.html.eex │ │ │ │ └── 500.html.eex │ │ │ ├── token.ex │ │ │ └── views/ │ │ │ ├── error_helpers.ex │ │ │ ├── error_view.ex │ │ │ ├── oauth_view.ex │ │ │ └── openid_view.ex │ │ ├── boruta_web.ex │ │ └── mix/ │ │ └── tasks/ │ │ └── server.ex │ ├── mix.exs │ ├── priv/ │ │ ├── gettext/ │ │ │ ├── en/ │ │ │ │ └── LC_MESSAGES/ │ │ │ │ └── errors.po │ │ │ └── errors.pot │ │ └── repo/ │ │ └── migrations/ │ │ └── .keep │ └── test/ │ ├── boruta_web/ │ │ ├── controllers/ │ │ │ ├── credential_controller_test.exs │ │ │ ├── oauth/ │ │ │ │ ├── authorization_code_test.exs │ │ │ │ ├── authorize_controller_test.exs │ │ │ │ ├── client_credentials_test.exs │ │ │ │ ├── direct_post_test.exs │ │ │ │ ├── implicit_test.exs │ │ │ │ ├── introspect_test.exs │ │ │ │ ├── openid_connect_test.exs │ │ │ │ ├── password_test.exs │ │ │ │ └── revoke_test.exs │ │ │ └── pushed_authorization_request_controller_test.exs │ │ ├── plugs/ │ │ │ └── rate_limit_test.exs │ │ └── views/ │ │ ├── error_view_test.exs │ │ ├── layout_view_test.exs │ │ └── page_view_test.exs │ ├── support/ │ │ ├── boruta_factory.ex │ │ ├── boruta_identity_factory.ex │ │ └── conn_case.ex │ └── test_helper.exs ├── boruta-admin.openapi.json ├── config/ │ ├── config.exs │ ├── dev.exs │ ├── prod.exs │ ├── releases.exs │ └── test.exs ├── docker-compose.yml ├── examples/ │ ├── README.md │ └── sidecar-authorization-gateways/ │ ├── config/ │ │ ├── example-gateway-configuration.yml │ │ ├── example-httpbin-configuration.yml │ │ └── example-protected-httpbin-configuration.yml │ └── docker-compose.yml ├── mix.exs ├── rel/ │ ├── env.bat.eex │ ├── env.sh.eex │ └── vm.args.eex ├── scripts/ │ ├── prepare_assets.sh │ └── setup.debian.sh ├── static_config/ │ ├── example-gateway-configuration.yml │ ├── example-httpbin-configuration.yml │ └── example-protected-httpbin-configuration.yml └── vetur.config.js