├── .dockerignore ├── .gitattributes ├── .github ├── FUNDING.yml └── workflows │ ├── ci_main_docker.yaml │ ├── ci_master_seed_tool_release.yaml │ ├── ci_release.yaml │ ├── ci_seed_tool_release.yaml │ └── ci_test_docker.yaml ├── .gitignore ├── Docker ├── README-FoxIDs-Control-image.md ├── README-FoxIDs-image.md ├── docker-compose-image.yaml ├── docker-compose-project.yaml ├── docker-compose.development-http.yaml └── docker-compose.development-https.yaml ├── FoxIDs.sln ├── Kubernetes ├── k8s-foxids-deployment.yaml ├── k8s-foxids-ingress-deployment.yaml ├── k8s-letsencrypt-issuer.yaml ├── k8s-mongo-configmap.yaml ├── k8s-mongo-deployment.yaml ├── k8s-mongo-pv-dockerdesktop.yaml ├── k8s-mongo-pvc-dockerdesktop.yaml ├── k8s-mongo-pvc-dynamic.yaml ├── k8s-mongo-secret.yaml ├── k8s-postgres-configmap.yaml ├── k8s-postgres-secret.yaml ├── k8s-redis-configmap.yaml ├── k8s-redis-deployment.yaml ├── k8s-redis-pv-dockerdesktop.yaml ├── k8s-redis-pvc-dockerdesktop.yaml └── k8s-redis-pvc-dynamic.yaml ├── LICENSE ├── README.md ├── ReleaseConfig ├── FoxIDs.Control │ ├── linux │ │ ├── appsettings.json │ │ └── web.config │ └── win │ │ ├── appsettings.json │ │ └── web.config └── FoxIDs │ ├── linux │ ├── appsettings.json │ └── web.config │ └── win │ ├── appsettings.json │ └── web.config ├── azuredeploy-small.json ├── azuredeploy.json ├── docs ├── README.md ├── _sidebar.md ├── app-reg-howto-saml-2.0-adfs.md ├── app-reg-oauth-2.0.md ├── app-reg-oidc.md ├── app-reg-saml-2.0.md ├── auth-method-howto-oidc-amazon-cognito.md ├── auth-method-howto-oidc-azure-ad-b2c.md ├── auth-method-howto-oidc-azure-ad.md ├── auth-method-howto-oidc-facebook.md ├── auth-method-howto-oidc-google.md ├── auth-method-howto-oidc-identityserver.md ├── auth-method-howto-oidc-nets-eid-broker.md ├── auth-method-howto-oidc-signicat.md ├── auth-method-howto-saml-2.0-adfs.md ├── auth-method-howto-saml-2.0-google-workspace.md ├── auth-method-howto-saml-2.0-nemlogin.md ├── auth-method-howto-saml-2.0-pingone.md ├── auth-method-howto-saml-amazon-iam-identity-center.md ├── auth-method-oidc.md ├── auth-method-saml-2.0.md ├── bridge.md ├── certificates.md ├── claim-transform-dk-privilege.md ├── claim-transform-task.md ├── claim.md ├── connections.md ├── control.md ├── custom-domain.md ├── customisation.md ├── deployment-azure.md ├── deployment-docker.md ├── deployment-k8s.md ├── deployment-window-iis.md ├── deployment.md ├── description.md ├── development.md ├── email.md ├── external-login.md ├── faq.md ├── foxids-dev.md ├── foxids-inside.md ├── get-started.md ├── gs-context-handler.md ├── gs-nemlogin.md ├── howto-connect.md ├── howto-environmentlink-foxids.md ├── howto-oidc-foxids.md ├── howto-saml-2.0-context-handler.md ├── images │ ├── bridge-oidc-saml.svg │ ├── bridge-saml-oidc.svg │ ├── bridge.vsdx │ ├── claim-transform.svg │ ├── claims.vsdx │ ├── configuration.svg │ ├── configure-authorization-code-flow-pkce.png │ ├── configure-authorization-code-flow.png │ ├── configure-certificate.png │ ├── configure-claim-task-auth-method.png │ ├── configure-claim-transform-app-reg.png │ ├── configure-claim-transform-auth-method.png │ ├── configure-client-api-client.png │ ├── configure-client-api-resource.png │ ├── configure-client-credentials-grant.png │ ├── configure-connections.png │ ├── configure-default-scope-claims.png │ ├── configure-email-provider-environment-sendgrid.png │ ├── configure-email-provider-environment-smtp.png │ ├── configure-env-name-address.png │ ├── configure-environment-setting.png │ ├── configure-environment.png │ ├── configure-external-claims-config.png │ ├── configure-external-login-config.png │ ├── configure-external-login-ui.png │ ├── configure-foxids_control_api.png │ ├── configure-implicit-code-flow.png │ ├── configure-jwt-saml-mappings.png │ ├── configure-log-stream-appinsight.png │ ├── configure-log.png │ ├── configure-login-2fa-example.png │ ├── configure-login-2fa.png │ ├── configure-login-advanced.png │ ├── configure-login-css-backbround-image.png │ ├── configure-login-css-backbround-logo.png │ ├── configure-login-css-sample-test.png │ ├── configure-login-customisation.png │ ├── configure-login-hrd-example.png │ ├── configure-login-hrd.png │ ├── configure-login-session.png │ ├── configure-login-title-icon-css.png │ ├── configure-login.png │ ├── configure-oauth-resource.png │ ├── configure-oidc-auth-method.png │ ├── configure-oidc-lifetime.png │ ├── configure-plan-tenant.png │ ├── configure-plan.png │ ├── configure-resource-scopes-client.png │ ├── configure-resource-scopes-resource.png │ ├── configure-reverse-proxy-secret-firewall.png │ ├── configure-reverse-proxy-secret-permissions.png │ ├── configure-reverse-proxy-secret.png │ ├── configure-saml-adfs-auth-method.png │ ├── configure-saml-app-reg.png │ ├── configure-saml-auth-method-idp-initiated.png │ ├── configure-saml-auth-method.png │ ├── configure-saml-googleworkspace-add-app.png │ ├── configure-saml-googleworkspace-app.png │ ├── configure-saml-googleworkspace-auth-method.png │ ├── configure-saml-googleworkspace-start-auth-method.png │ ├── configure-saml-manual-auth-method.png │ ├── configure-tenant-adminuser.png │ ├── configure-tenant-custom-domain-environment.png │ ├── configure-tenant-custom-domain-my-environment.png │ ├── configure-tenant-text.png │ ├── configure-tenant.png │ ├── configure-user-mfa.png │ ├── configure-user.png │ ├── connections-app-reg-oauth.svg │ ├── connections-app-reg-oidc.svg │ ├── connections-app-reg-saml.svg │ ├── connections-auth-method-oidc.svg │ ├── connections-auth-method-saml-idpi.svg │ ├── connections-auth-method-saml.svg │ ├── connections-login.svg │ ├── connections-oauth.svg │ ├── connections-oidc.svg │ ├── connections-saml.svg │ ├── connections.svg │ ├── connections.vsdx │ ├── deployment-window-iis-add-website.png │ ├── deployment-window-iis-my-cert.png │ ├── environments.vsdx │ ├── example-claim-transform-name-to-given_name-family_name.png │ ├── example-claim-transform-remove-post-auth-method-name.png │ ├── faq-pass-through-all-claims-app-reg.png │ ├── faq-pass-through-all-claims-auth-method.png │ ├── fqa-matching-issuer-authority.png │ ├── get-started-first-access.png │ ├── get-started-login.png │ ├── get-started-new-app-reg-conf.png │ ├── get-started-new-app-reg-done.png │ ├── get-started-new-app-reg.png │ ├── get-started-test-user.png │ ├── how-to-connect.svg │ ├── how-to-context-handler-environment-link.svg │ ├── how-to-context-handler-foxids-idp.png │ ├── how-to-context-handler-rp.svg │ ├── how-to-context-handler.svg │ ├── how-to-environment-link.svg │ ├── how-to-nemlogin-environment-link.svg │ ├── how-to-nemlogin.svg │ ├── how-to.vsdx │ ├── howto-environmentlink-foxids-auth-method-select.png │ ├── howto-environmentlink-foxids-auth-method-y-select.png │ ├── howto-oidc-amazon-cognito-app-client-client-id.png │ ├── howto-oidc-amazon-cognito-app-client-logout.png │ ├── howto-oidc-amazon-cognito-app-client.png │ ├── howto-oidc-amazon-cognito-authority.png │ ├── howto-oidc-amazon-cognito-config.png │ ├── howto-oidc-amazon-cognito-urls.png │ ├── howto-oidc-amazon-cognito-user-pool.png │ ├── howto-oidc-amazon-iam-ic-acs-issuer.png │ ├── howto-oidc-amazon-iam-ic-binding-format.png │ ├── howto-oidc-amazon-iam-ic-certificate-change.png │ ├── howto-oidc-amazon-iam-ic-certificate-type.png │ ├── howto-oidc-amazon-iam-ic-create.png │ ├── howto-oidc-azuread-readredirect.png │ ├── howto-oidc-facebook-app-details.png │ ├── howto-oidc-facebook-config.png │ ├── howto-oidc-facebook-email.png │ ├── howto-oidc-facebook-readredirect.png │ ├── howto-oidc-facebook-redirect-url.png │ ├── howto-oidc-facebook-select-login.png │ ├── howto-oidc-foxids-auth-method-readredirect.png │ ├── howto-oidc-foxids-auth-method.png │ ├── howto-oidc-foxids-parallel-app-reg.png │ ├── howto-oidc-google-appclient.png │ ├── howto-oidc-google-config.png │ ├── howto-oidc-google-readredirect.png │ ├── howto-oidc-google-scopes.png │ ├── howto-oidc-google-usertype.png │ ├── howto-oidc-identityserver-readredirect.png │ ├── howto-oidc-nets-eid-broker-claim-transform.png │ ├── howto-oidc-nets-eid-broker-external-user.png │ ├── howto-oidc-nets-eid-broker-profile.png │ ├── howto-saml-claim-mappings.png │ ├── howto-saml-context-handler-app-base-config-reg.png │ ├── howto-saml-context-handler-app-base-config.png │ ├── howto-saml-context-handler-app-ct1.png │ ├── howto-saml-context-handler-app-ct2.png │ ├── howto-saml-context-handler-auth-attributes.png │ ├── howto-saml-context-handler-auth-nameidformat.png │ ├── howto-saml-context-handler-auth-read-metadata.png │ ├── howto-saml-context-handler-certificate.png │ ├── howto-saml-context-handler-new-environment.png │ ├── howto-saml-context-handler-test-user1.png │ ├── howto-saml-nemlogin3-auth-attributes.png │ ├── howto-saml-nemlogin3-auth-claims.png │ ├── howto-saml-nemlogin3-auth-contact.png │ ├── howto-saml-nemlogin3-auth-nameidformat.png │ ├── howto-saml-nemlogin3-auth-read-metadata.png │ ├── howto-saml-nemlogin3-auth-req-ext.png │ ├── howto-saml-nemlogin3-auth-top.png │ ├── howto-saml-nemlogin3-certificate-container-type.png │ ├── howto-saml-nemlogin3-certificate.png │ ├── howto-saml-nemlogin3-claim-mappings.png │ ├── howto-saml-nemlogin3-id-type.png │ ├── howto-saml-nemlogin3-log.png │ ├── howto-saml-nemlogin3-nsis-level.png │ ├── howto-saml-privilege-claim-tf.png │ ├── language-danish.png │ ├── language-french.png │ ├── language-german.png │ ├── language-spanish.png │ ├── main-tenant.png │ ├── master-seed-tool-client.png │ ├── master-tenant-admin-user.png │ ├── master-tenant2.png │ ├── sample_seed-client.png │ ├── search-logs.png │ ├── search-usage-logs.png │ ├── seed-tool-client.png │ ├── structure.svg │ ├── structure.vsdx │ ├── token-exchange-access-token-by-trust.svg │ ├── token-exchange-access-token-in-api.svg │ ├── token-exchange-access-token-in-web-app.svg │ ├── token-exchange-config-app-reg.png │ ├── token-exchange-config-auth-method.png │ ├── token-exchange-oauth-by-trust-app-reg-client.png │ ├── token-exchange-oauth-by-trust-auth-method.png │ ├── token-exchange-oauth-same-environment-app-reg.png │ ├── token-exchange-oidc-same-environment-app-reg.png │ ├── token-exchange-saml-by-trust-app-reg-client.png │ ├── token-exchange-saml-by-trust-auth-method.png │ ├── token-exchange-saml-by-trust.svg │ ├── token-exchange.vsdx │ ├── user-create-new-account-config.png │ ├── user-create-new-account.png │ ├── user-email-phone-username-user-identifier.png │ ├── user-external-auth-method-redemption.png │ ├── user-external-create-new-account-config.png │ ├── user-external-create-new-account.png │ ├── user-external-redemption.png │ ├── user-login.png │ └── user-phone-user-identifier.png ├── language.md ├── logging.md ├── login.md ├── monitoring.md ├── name-title-icon-css.md ├── oauth-2.0.md ├── oidc.md ├── plan.md ├── reverse-proxy.md ├── risk-passwords.md ├── saml-2.0.md ├── samples.md ├── standard-support.md ├── token-exchange.md ├── users-upload.md └── users.md ├── src ├── FoxIDs.Control │ ├── Controllers │ │ ├── Base │ │ │ ├── ApiController.cs │ │ │ └── HealthController.cs │ │ ├── Client │ │ │ ├── MClientSettingsController.cs │ │ │ └── WController.cs │ │ ├── Grants │ │ │ ├── TRefreshTokenGrantController.cs │ │ │ └── TRefreshTokenGrantsController.cs │ │ ├── Helpers │ │ │ ├── TDownPartyTestController.cs │ │ │ ├── TNewPartyNameController.cs │ │ │ ├── TPlanInfoController.cs │ │ │ └── TReadCertificateController.cs │ │ ├── Master │ │ │ ├── MFilterPlanController.cs │ │ │ ├── MPlanController.cs │ │ │ ├── MPlansController.cs │ │ │ ├── MRiskPasswordController.cs │ │ │ ├── MRiskPasswordFirstController.cs │ │ │ ├── MRiskPasswordInfoController.cs │ │ │ ├── MRiskPasswordTestController.cs │ │ │ ├── MSmsPriceController.cs │ │ │ ├── MSmsPricesController.cs │ │ │ └── MUsageSettingsController.cs │ │ ├── Parties │ │ │ ├── GenericOAuthClientKeyUpPartyController.cs │ │ │ ├── GenericOAuthClientSecretDownPartyController.cs │ │ │ ├── GenericOAuthClientSecretUpPartyController.cs │ │ │ ├── GenericPartyApiController.cs │ │ │ ├── TDownPartiesController.cs │ │ │ ├── TExternalLoginSecretUpPartyController.cs │ │ │ ├── TExternalLoginUpPartyController.cs │ │ │ ├── TFilterDownPartyController.cs │ │ │ ├── TFilterUpPartyController.cs │ │ │ ├── TLoginUpPartyController.cs │ │ │ ├── TOAuthClientSecretDownPartyController.cs │ │ │ ├── TOAuthDownPartyController.cs │ │ │ ├── TOAuthUpPartyController.cs │ │ │ ├── TOidcClientKeyUpPartyController.cs │ │ │ ├── TOidcClientSecretDownPartyController.cs │ │ │ ├── TOidcClientSecretUpPartyController.cs │ │ │ ├── TOidcDownPartyController.cs │ │ │ ├── TOidcUpPartyController.cs │ │ │ ├── TSamlDownPartyController.cs │ │ │ ├── TSamlUpPartyController.cs │ │ │ ├── TSamlUpPartyReadMetadataController.cs │ │ │ ├── TTrackLinkDownPartyController.cs │ │ │ ├── TTrackLinkUpPartyController.cs │ │ │ └── TUpPartiesController.cs │ │ ├── TenantResources │ │ │ ├── TFilterResourceNameController.cs │ │ │ └── TResourceNamesController.cs │ │ ├── Tenants │ │ │ ├── TFilterTenantController.cs │ │ │ ├── TFilterUsageTenantController.cs │ │ │ ├── TMyMollieFirstPaymentController.cs │ │ │ ├── TMyTenantController.cs │ │ │ ├── TMyTenantLogController.cs │ │ │ ├── TMyTenantLogUsageController.cs │ │ │ ├── TTenantController.cs │ │ │ ├── TTenantLogController.cs │ │ │ ├── TTenantLogUsageController.cs │ │ │ ├── TTenantsController.cs │ │ │ └── TUsageTenantsController.cs │ │ ├── Tracks │ │ │ ├── TExternalUserController.cs │ │ │ ├── TExternalUsersController.cs │ │ │ ├── TFailingLoginLockController.cs │ │ │ ├── TFailingLoginLocksController.cs │ │ │ ├── TFilterExternalUserController.cs │ │ │ ├── TFilterTrackController.cs │ │ │ ├── TFilterUserController.cs │ │ │ ├── TMyUserController.cs │ │ │ ├── TTrackClaimMappingController.cs │ │ │ ├── TTrackController.cs │ │ │ ├── TTrackKeyContainedController.cs │ │ │ ├── TTrackKeyContainedSwapController.cs │ │ │ ├── TTrackKeyTypeController.cs │ │ │ ├── TTrackLogController.cs │ │ │ ├── TTrackLogSettingController.cs │ │ │ ├── TTrackLogStreamsSettingsController.cs │ │ │ ├── TTrackLogUsageController.cs │ │ │ ├── TTrackResourceController.cs │ │ │ ├── TTrackResourceSettingController.cs │ │ │ ├── TTrackSendEmailController.cs │ │ │ ├── TTracksController.cs │ │ │ ├── TUserChangePasswordController.cs │ │ │ ├── TUserControlProfileController.cs │ │ │ ├── TUserController.cs │ │ │ └── TUsersController.cs │ │ └── Usage │ │ │ ├── TFilterUsageController.cs │ │ │ ├── TUsageController.cs │ │ │ ├── TUsageInvoicingActionController.cs │ │ │ └── TUsagesController.cs │ ├── Dockerfile │ ├── Extensions │ │ ├── ClaimExtensions.cs │ │ ├── PaymentStatusExtension.cs │ │ └── TenantScopeAuthorizeExtension.cs │ ├── FoxIDs.Control.csproj │ ├── Infrastructure │ │ ├── ApiDescription │ │ │ └── FoxIDsApiDescriptionGroupCollectionProvider.cs │ │ ├── Filters │ │ │ ├── LogAttribute.cs │ │ │ └── RequireMasterTenantAttribute.cs │ │ ├── Hosting │ │ │ ├── ApplicationBuilderExtensions.cs │ │ │ ├── FoxIDsApiExceptionMiddleware.cs │ │ │ ├── FoxIDsApiRouteBindingMiddleware.cs │ │ │ ├── FoxIDsApiRouteTransformer.cs │ │ │ ├── FoxIDsClientRouteBindingMiddleware.cs │ │ │ ├── FoxIDsClientRouteTransformer.cs │ │ │ ├── MvcCoreBuilderExtensions.cs │ │ │ ├── OpenSearchClientQueryLog.cs │ │ │ └── ServiceCollectionExtensions.cs │ │ └── Security │ │ │ ├── BaseAuthorizationRequirement.cs │ │ │ ├── BaseScopeAuthorizeAttribute.cs │ │ │ ├── JwtBearerMultipleTenantsHandler.cs │ │ │ ├── JwtBearerMultipleTenantsOptions.cs │ │ │ ├── MasterAuthorizationRequirement.cs │ │ │ ├── MasterScopeAuthorizeAttribute.cs │ │ │ ├── TenantAuthorizationRequirement.cs │ │ │ └── TenantScopeAuthorizeAttribute.cs │ ├── Logic │ │ ├── Logs │ │ │ ├── LogAnalyticsWorkspaceProvider.cs │ │ │ ├── LogApplicationInsightsLogic.cs │ │ │ ├── LogLogic.cs │ │ │ ├── LogOpenSearchLogic.cs │ │ │ ├── SendEventEmailLogic.cs │ │ │ ├── UsageLogApplicationInsightsLogic.cs │ │ │ ├── UsageLogLogic.cs │ │ │ └── UsageLogOpenSearchLogic.cs │ │ ├── OidcDiscoveryReadUpLogic.cs │ │ ├── PartyLogic.cs │ │ ├── Queues │ │ │ ├── BackgroundQueue.cs │ │ │ ├── DownPartyAllowUpPartiesQueueLogic.cs │ │ │ └── QueueBackgroundService.cs │ │ ├── SamlMetadataReadUpLogic.cs │ │ ├── Seed │ │ │ ├── MainTenantDocumentsSeedLogic.cs │ │ │ ├── MasterTenantDocumentsSeedLogic.cs │ │ │ └── SeedLogic.cs │ │ ├── Usage │ │ │ ├── UsageBackgroundService.cs │ │ │ ├── UsageBackgroundWorkLogic.cs │ │ │ ├── UsageCalculatorLogic.cs │ │ │ ├── UsageInvoicingLogic.cs │ │ │ └── UsageMolliePaymentLogic.cs │ │ └── Validators │ │ │ ├── ValidateApiModelDynamicElementLogic.cs │ │ │ ├── ValidateApiModelExternalLoginPartyLogic.cs │ │ │ ├── ValidateApiModelExternalUserLogic.cs │ │ │ ├── ValidateApiModelGenericPartyLogic.cs │ │ │ ├── ValidateApiModelLoginPartyLogic.cs │ │ │ ├── ValidateApiModelOAuthOidcPartyLogic.cs │ │ │ ├── ValidateApiModelSamlPartyLogic.cs │ │ │ ├── ValidateApiModelTrackLinkPartyLogic.cs │ │ │ ├── ValidateModelGenericPartyLogic.cs │ │ │ └── ValidateModelOAuthOidcPartyLogic.cs │ ├── MappingProfiles │ │ ├── ExternalMappingProfile.cs │ │ ├── MasterMappingProfile.cs │ │ └── TenantMappingProfiles.cs │ ├── Models │ │ ├── ApplicationInsightsQuery.cs │ │ ├── Config │ │ │ ├── ApplicationInsightsSettings.cs │ │ │ ├── FoxIDsControlSettings.cs │ │ │ ├── PaymentSettings.cs │ │ │ ├── UsageBaseSettings.cs │ │ │ └── UsageSellerSettings.cs │ │ ├── ExternalInvoices │ │ │ ├── Address.cs │ │ │ ├── Customer.cs │ │ │ ├── InvoiceLine.cs │ │ │ ├── InvoiceRequest.cs │ │ │ ├── InvoiceResponse.cs │ │ │ ├── Seller.cs │ │ │ ├── UsedItem.cs │ │ │ └── UsedItemTypes.cs │ │ ├── LogErrorMessageItem.cs │ │ ├── LogExceptionDetail.cs │ │ ├── LogExceptionPassedStack.cs │ │ ├── LogTraceMessageItem.cs │ │ ├── Payments │ │ │ ├── MolliePaymentDetailsResponse.cs │ │ │ ├── MolliePaymentLinkResponse.cs │ │ │ ├── MolliePaymentLinksResponse.cs │ │ │ └── MolliePaymentResponse.cs │ │ ├── Queues │ │ │ ├── UpPartyHrdQueueMessage.cs │ │ │ └── UpPartyHrdQueueMessageActions.cs │ │ └── ViewModels │ │ │ └── ClientViewModel.cs │ ├── Program.cs │ ├── Properties │ │ └── launchSettings.json │ ├── Startup.cs │ ├── appsettings.json │ ├── web.Release.config │ ├── web.config │ └── wwwroot │ │ └── robots.txt ├── FoxIDs.ControlClient │ ├── App.razor │ ├── Extensions │ │ ├── CertificateExtensions.cs │ │ ├── ClaimTransformsExtensions.cs │ │ ├── DictionaryExtensions.cs │ │ ├── DynamicElementExtensions.cs │ │ ├── LinkExternalUserExtensions.cs │ │ ├── LogExtensions.cs │ │ ├── MapperExtensions.cs │ │ ├── RouteBindingExtensions.cs │ │ ├── TimeExtensions.cs │ │ └── TrackExtensions.cs │ ├── FoxIDs.ControlClient.csproj │ ├── Infrastructure │ │ ├── CheckResponseMessageHandler.cs │ │ ├── Hosting │ │ │ └── ServiceCollectionExtensions.cs │ │ └── Security │ │ │ └── TenantOpenidConnectPkce.cs │ ├── Logic │ │ ├── ClipboardLogic.cs │ │ ├── ControlClientSettingLogic.cs │ │ ├── MetadataLogic.cs │ │ ├── NotificationLogic.cs │ │ ├── RouteBindingLogic.cs │ │ ├── ServerErrorLogic.cs │ │ ├── TrackSelectedLogic.cs │ │ └── UserProfileLogic.cs │ ├── Models │ │ ├── Config │ │ │ └── ClientSettings.cs │ │ ├── ExternalLoginTabTypes.cs │ │ ├── LoginTabTypes.cs │ │ ├── OAuthTabTypes.cs │ │ ├── SamlTabTypes.cs │ │ ├── TrackLinkTabTypes.cs │ │ └── ViewModels │ │ │ ├── FilterResourceViewModel.cs │ │ │ ├── GeneralResourceViewModel.cs │ │ │ ├── Master │ │ │ ├── FilterPlanViewModel.cs │ │ │ ├── FilterSmsPriceViewModel.cs │ │ │ ├── GeneralPlanViewModel.cs │ │ │ ├── GeneralSmsPriceViewModel.cs │ │ │ ├── LogLifetimeOptionsVievModel.cs │ │ │ └── PlanViewModel.cs │ │ │ ├── Parties │ │ │ ├── ClaimTransformViewModel.cs │ │ │ ├── CreateUserViewModel.cs │ │ │ ├── DownPartyOAuthClientTypes.cs │ │ │ ├── DownPartyOAuthTypes.cs │ │ │ ├── DownPartyTestViewModel.cs │ │ │ ├── DynamicElementViewModel.cs │ │ │ ├── ExternalLoginUpPartyProfileViewModel.cs │ │ │ ├── ExternalLoginUpPartyViewModel.cs │ │ │ ├── FilterDownPartyViewModel.cs │ │ │ ├── FilterUpPartyViewModel.cs │ │ │ ├── GeneralDownPartyViewModel.cs │ │ │ ├── GeneralExternalLoginUpPartyViewModel.cs │ │ │ ├── GeneralLoginUpPartyViewModel.cs │ │ │ ├── GeneralOAuthDownPartyViewModel.cs │ │ │ ├── GeneralOAuthUpPartyViewModel.cs │ │ │ ├── GeneralOidcDownPartyViewModel.cs │ │ │ ├── GeneralOidcUpPartyViewModel.cs │ │ │ ├── GeneralSamlDownPartyViewModel.cs │ │ │ ├── GeneralSamlUpPartyViewModel.cs │ │ │ ├── GeneralTrackLinkDownPartyViewModel.cs │ │ │ ├── GeneralTrackLinkUpPartyViewModel.cs │ │ │ ├── GeneralUpPartyViewModel.cs │ │ │ ├── IAllowUpPartyNames.cs │ │ │ ├── IClientAdditionalParameters.cs │ │ │ ├── IClientResourceScope.cs │ │ │ ├── IClientSecret.cs │ │ │ ├── IDownPartyName.cs │ │ │ ├── IDynamicElementsViewModel.cs │ │ │ ├── IGeneralOAuthDownPartyTabViewModel.cs │ │ │ ├── IGeneralOAuthUpPartyTabViewModel.cs │ │ │ ├── ILinkExternalUser.cs │ │ │ ├── ISamlMetadataAttributeConsumingServiceVievModel.cs │ │ │ ├── ISamlMetadataContactPersonVievModel.cs │ │ │ ├── ISamlMetadataOrganizationVievModel.cs │ │ │ ├── IUpPartyHrd.cs │ │ │ ├── IUpPartySelection.cs │ │ │ ├── IUpPartySessionLifetime.cs │ │ │ ├── LinkExternalUserViewModel.cs │ │ │ ├── LoginUpPartyViewModel.cs │ │ │ ├── NewDownPartyOAuthClientViewModel.cs │ │ │ ├── NewDownPartyOAuthResourceViewModel.cs │ │ │ ├── NewDownPartyOidcViewModel.cs │ │ │ ├── NewDownPartySamlViewModel.cs │ │ │ ├── NewDownPartyViewModel.cs │ │ │ ├── NewUpPartyEnvironmentLinkViewModel.cs │ │ │ ├── NewUpPartyViewModel.cs │ │ │ ├── OAuthClaimTransformClaimInViewModel.cs │ │ │ ├── OAuthClaimTransformClaimsInViewModel.cs │ │ │ ├── OAuthClientSecretViewModel.cs │ │ │ ├── OAuthDownClientViewModel.cs │ │ │ ├── OAuthDownPartyViewModel.cs │ │ │ ├── OAuthDownScopeViewModel.cs │ │ │ ├── OAuthUpClientViewModel.cs │ │ │ ├── OAuthUpImportClientKeyViewModel.cs │ │ │ ├── OAuthUpPartyViewModel.cs │ │ │ ├── OidcDownClientViewModel.cs │ │ │ ├── OidcDownPartyViewModel.cs │ │ │ ├── OidcDownScopeViewModel.cs │ │ │ ├── OidcUpClientProfileViewModel.cs │ │ │ ├── OidcUpClientViewModel.cs │ │ │ ├── OidcUpPartyProfileViewModel.cs │ │ │ ├── OidcUpPartyViewModel.cs │ │ │ ├── SamlAuthnContextComparisonTypesVievModel.cs │ │ │ ├── SamlClaimTransformClaimInViewModel.cs │ │ │ ├── SamlClaimTransformClaimsInViewModel.cs │ │ │ ├── SamlDownPartyViewModel.cs │ │ │ ├── SamlUpPartyProfileViewModel.cs │ │ │ ├── SamlUpPartyViewModel.cs │ │ │ ├── TrackLinkDownPartyViewModel.cs │ │ │ ├── TrackLinkUpPartyProfileViewModel.cs │ │ │ ├── TrackLinkUpPartyViewModel.cs │ │ │ ├── UpPartyFilterViewModel.cs │ │ │ ├── UpPartyProfileViewModel.cs │ │ │ └── X509RevocationMode.cs │ │ │ ├── ResourceItemViewModel.cs │ │ │ ├── Tenants │ │ │ ├── CreateTenantViewModel.cs │ │ │ ├── CustomerViewModel.cs │ │ │ ├── FilterTenantViewModel.cs │ │ │ ├── FilterUsageViewModel.cs │ │ │ ├── GeneralTenantViewModel.cs │ │ │ ├── GeneralUsageSettingsViewModel.cs │ │ │ ├── GeneralUsedViewModel.cs │ │ │ ├── MasterTenantViewModel.cs │ │ │ ├── MolliePaymentErrorResult.cs │ │ │ ├── MolliePaymentResult.cs │ │ │ ├── TenantViewModel.cs │ │ │ ├── TestRiskPasswordViewModel.cs │ │ │ ├── UsageSettingsViewModel.cs │ │ │ └── UsedViewModel.cs │ │ │ └── Tracks │ │ │ ├── ClaimMappingDefaultViewModel.cs │ │ │ ├── ClaimMappingViewModel.cs │ │ │ ├── CreateTrackViewModel.cs │ │ │ ├── ExternalUserViewModel.cs │ │ │ ├── FailingLoginLockViewModel.cs │ │ │ ├── FilterExternalUserViewModel.cs │ │ │ ├── FilterRefreshTokenGrantViewModel.cs │ │ │ ├── FilterTrackViewModel.cs │ │ │ ├── FilterUserLockViewModel.cs │ │ │ ├── FilterUserViewModel.cs │ │ │ ├── GeneralExternalUserViewModel.cs │ │ │ ├── GeneralLogSettingsViewModel.cs │ │ │ ├── GeneralLogStreamSettingsViewModel.cs │ │ │ ├── GeneralRefreshTokenGrantViewModel.cs │ │ │ ├── GeneralResourceSettingsViewModel.cs │ │ │ ├── GeneralTrackCertificateViewModel.cs │ │ │ ├── GeneralUserViewModel.cs │ │ │ ├── KeyInfoViewModel.cs │ │ │ ├── LogItemDetailViewModel.cs │ │ │ ├── LogItemViewModel.cs │ │ │ ├── LogQueryTypes.cs │ │ │ ├── LogRequestViewModel.cs │ │ │ ├── LogResponseViewModel.cs │ │ │ ├── LogTimeIntervals.cs │ │ │ ├── MailProviders.cs │ │ │ ├── MailSettingsViewModel.cs │ │ │ ├── RefreshTokenGrantViewModel.cs │ │ │ ├── TrackCertificateInfoViewModel.cs │ │ │ ├── TrackSettingsViewModel.cs │ │ │ ├── UsageLogIncludeTypes.cs │ │ │ ├── UsageLogRequestViewModel.cs │ │ │ └── UserViewModel.cs │ ├── Pages │ │ ├── Authentication.razor │ │ ├── Certificates.cs │ │ ├── Certificates.razor │ │ ├── Components │ │ │ ├── DownPartyBase.cs │ │ │ ├── EExternalLoginUpParty.cs │ │ │ ├── EExternalLoginUpParty.razor │ │ │ ├── ELogItem.razor │ │ │ ├── ELoginUpParty.cs │ │ │ ├── ELoginUpParty.razor │ │ │ ├── EOAuthDownParty.cs │ │ │ ├── EOAuthDownParty.razor │ │ │ ├── EOAuthUpParty.cs │ │ │ ├── EOAuthUpParty.razor │ │ │ ├── EOidcDownParty.cs │ │ │ ├── EOidcDownParty.razor │ │ │ ├── EOidcUpParty.cs │ │ │ ├── EOidcUpParty.razor │ │ │ ├── ESamlDownParty.cs │ │ │ ├── ESamlDownParty.razor │ │ │ ├── ESamlUpParty.cs │ │ │ ├── ESamlUpParty.razor │ │ │ ├── ETrackLinkDownParty.cs │ │ │ ├── ETrackLinkDownParty.razor │ │ │ ├── ETrackLinkUpParty.cs │ │ │ ├── ETrackLinkUpParty.razor │ │ │ ├── EUsageLogItem.razor │ │ │ └── UpPartyBase.cs │ │ ├── DownParties.cs │ │ ├── DownParties.razor │ │ ├── DownPartiesLink.razor │ │ ├── DownPartyTest.cs │ │ ├── DownPartyTest.razor │ │ ├── Error.razor │ │ ├── Index.razor │ │ ├── Logging │ │ │ ├── LogSettings.cs │ │ │ ├── LogSettings.razor │ │ │ ├── LogUsage.cs │ │ │ ├── LogUsage.razor │ │ │ ├── Logs.cs │ │ │ └── Logs.razor │ │ ├── MasterTenant.cs │ │ ├── MasterTenant.razor │ │ ├── MasterTenantPaymentLink.razor │ │ ├── Settings │ │ │ ├── ClaimMappings.cs │ │ │ ├── ClaimMappings.razor │ │ │ ├── MailSettings.cs │ │ │ ├── MailSettings.razor │ │ │ ├── Plans.cs │ │ │ ├── Plans.razor │ │ │ ├── RiskPasswords.cs │ │ │ ├── RiskPasswords.razor │ │ │ ├── SmsPrices.cs │ │ │ ├── SmsPrices.razor │ │ │ ├── Text.cs │ │ │ ├── Text.razor │ │ │ ├── TrackSettings.cs │ │ │ └── TrackSettings.razor │ │ ├── Tenants.cs │ │ ├── Tenants.razor │ │ ├── UpParties.cs │ │ ├── UpParties.razor │ │ ├── UpPartiesLink.razor │ │ ├── Usage │ │ │ ├── Usage.cs │ │ │ ├── Usage.razor │ │ │ ├── UsageSettings.cs │ │ │ ├── UsageSettings.razor │ │ │ ├── UsageTenants.cs │ │ │ └── UsageTenants.razor │ │ └── Users │ │ │ ├── ExternalUsers.cs │ │ │ ├── ExternalUsers.razor │ │ │ ├── FailingLoginLocks.cs │ │ │ ├── FailingLoginLocks.razor │ │ │ ├── InternalUsers.cs │ │ │ ├── InternalUsers.razor │ │ │ ├── RefreshTokenGrants.cs │ │ │ ├── RefreshTokenGrants.razor │ │ │ └── UsersLink.razor │ ├── Program.cs │ ├── Properties │ │ └── launchSettings.json │ ├── Services │ │ ├── BaseService.cs │ │ ├── ClientService.cs │ │ ├── DownPartyService.cs │ │ ├── ExternalUserService.cs │ │ ├── HelpersNoAccessTokenService.cs │ │ ├── HelpersService.cs │ │ ├── MyTenantService.cs │ │ ├── PlanService.cs │ │ ├── RiskPasswordService.cs │ │ ├── SmsPriceService.cs │ │ ├── TenantService.cs │ │ ├── TrackService.cs │ │ ├── UpPartyService.cs │ │ └── UserService.cs │ ├── Shared │ │ ├── ActivateLogin.razor │ │ ├── Components │ │ │ ├── DocsLink.razor │ │ │ ├── DynamicElements.razor │ │ │ ├── FFieldNumberD.razor │ │ │ ├── FFieldText.razor │ │ │ ├── FFieldTextClipboard.razor │ │ │ ├── FFieldTextList.razor │ │ │ ├── FFieldTextListClipboard.razor │ │ │ ├── FInputBase.cs │ │ │ ├── FInputCheckbox.razor │ │ │ ├── FInputCheckboxSelect.razor │ │ │ ├── FInputNumber.razor │ │ │ ├── FInputNumberD.razor │ │ │ ├── FInputNumberDN.razor │ │ │ ├── FInputNumberL.razor │ │ │ ├── FInputNumberLN.razor │ │ │ ├── FInputNumberN.razor │ │ │ ├── FInputPassword.razor │ │ │ ├── FInputSelect.razor │ │ │ ├── FInputSwitch.razor │ │ │ ├── FInputSwitch.razor.css │ │ │ ├── FInputSwitchAdvancedOptions.razor │ │ │ ├── FInputSwitchAdvancedOptions.razor.css │ │ │ ├── FInputText.razor │ │ │ ├── FInputTextArea.razor │ │ │ ├── FInputTextFilter.razor │ │ │ ├── FInputTextList.razor │ │ │ ├── FInputToggle.razor │ │ │ ├── FInputToggleN.razor │ │ │ ├── FTextClipboard.razor │ │ │ ├── FTextLinkClipboard.razor │ │ │ ├── Label.razor │ │ │ ├── LinkExternalUser.razor │ │ │ ├── Modal.razor │ │ │ ├── OAuthAdditionalParameters.razor │ │ │ ├── OAuthClaimTransforms.razor │ │ │ ├── OAuthResourceScopes.razor │ │ │ ├── OAuthSecrets.razor │ │ │ ├── PageEditForm.cs │ │ │ ├── PageEditForm.razor │ │ │ ├── SamlClaimTransforms.razor │ │ │ ├── SamlMetadataAttributeConsumingServices.razor │ │ │ ├── SamlMetadataContactPersons.razor │ │ │ ├── SamlMetadataOrganization.razor │ │ │ ├── SelectUpParties.cs │ │ │ ├── SelectUpParties.razor │ │ │ ├── SelectUpParty.razor │ │ │ ├── TenantLiNavLink.razor │ │ │ ├── UpPartyHrd.razor │ │ │ └── UpPartySessionLifetime.razor │ │ ├── EmptyLayout.razor │ │ ├── HeaderLayout.razor │ │ ├── LoginDisplay.razor │ │ ├── MainLayout.cs │ │ ├── MainLayout.razor │ │ ├── PageBase.cs │ │ └── TenantOidcRedirectToLogin.razor │ ├── Util │ │ └── SecretGenerator.cs │ ├── _Imports.razor │ └── wwwroot │ │ ├── appsettings.json │ │ ├── css │ │ ├── app.css │ │ └── open-iconic │ │ │ ├── FONT-LICENSE │ │ │ ├── ICON-LICENSE │ │ │ ├── README.md │ │ │ └── font │ │ │ ├── css │ │ │ └── open-iconic-bootstrap.min.css │ │ │ └── fonts │ │ │ ├── open-iconic.eot │ │ │ ├── open-iconic.otf │ │ │ ├── open-iconic.svg │ │ │ ├── open-iconic.ttf │ │ │ └── open-iconic.woff │ │ ├── favicon.ico │ │ ├── images │ │ └── foxids_logo.svg │ │ ├── index.html │ │ ├── js │ │ ├── functions.js │ │ └── site.js │ │ └── lib │ │ ├── bootstrap-toggle │ │ ├── bootstrap-toggle.css │ │ ├── bootstrap-toggle.js │ │ ├── bootstrap-toggle.min.css │ │ ├── bootstrap-toggle.min.js │ │ └── bootstrap-toggle.min.js.map │ │ ├── bootstrap │ │ ├── bootstrap.bundle.min.js │ │ ├── bootstrap.bundle.min.js.map │ │ ├── bootstrap.css │ │ ├── bootstrap.css.map │ │ └── bootstrap.min.css │ │ ├── jquery │ │ ├── jquery.min.js │ │ └── jquery.min.map │ │ └── popper │ │ ├── popper.min.js │ │ └── popper.min.js.map ├── FoxIDs.ControlShared │ ├── Extensions │ │ └── PaymentStatusExtension.cs │ ├── FoxIDs.ControlShared.csproj │ └── Models │ │ ├── Api │ │ ├── Base │ │ │ ├── IClaimTransform.cs │ │ │ ├── IDownParty.cs │ │ │ ├── IEmailValue.cs │ │ │ ├── INameValue.cs │ │ │ ├── INewNameValue.cs │ │ │ ├── IProfile.cs │ │ │ └── PaginationResponse.cs │ │ ├── CertificateAndPassword.cs │ │ ├── CertificateInfo.cs │ │ ├── Config │ │ │ ├── ControlClientSettings.cs │ │ │ └── Options │ │ │ │ ├── KeyStorageOptions.cs │ │ │ │ └── LogOptions.cs │ │ ├── Grants │ │ │ └── RefreshTokenGrant.cs │ │ ├── Helpers │ │ │ ├── DownPartyTestResultRequest.cs │ │ │ ├── DownPartyTestResultResponse.cs │ │ │ ├── DownPartyTestStartRequest.cs │ │ │ ├── DownPartyTestStartResponse.cs │ │ │ ├── JwtWithCertificateInfo.cs │ │ │ ├── NewPartyName.cs │ │ │ └── PlanInfo.cs │ │ ├── Master │ │ │ ├── LogLifetimeOptions.cs │ │ │ ├── Plan.cs │ │ │ ├── PlanItem.cs │ │ │ ├── Resource.cs │ │ │ ├── ResourceCultureItem.cs │ │ │ ├── ResourceItem.cs │ │ │ ├── ResourceName.cs │ │ │ ├── RiskPassword.cs │ │ │ ├── RiskPasswordDelete.cs │ │ │ ├── RiskPasswordInfo.cs │ │ │ ├── RiskPasswordRequest.cs │ │ │ ├── SmsPrice.cs │ │ │ ├── UsageCurrencyExchange.cs │ │ │ └── UsageSettings.cs │ │ ├── Parties │ │ │ ├── ClaimTransform.cs │ │ │ ├── ClaimTransformActions.cs │ │ │ ├── ClaimTransformTasks.cs │ │ │ ├── ClaimTransformTypes.cs │ │ │ ├── ClientAuthenticationMethods.cs │ │ │ ├── ClientKey.cs │ │ │ ├── ClientKeyTypes.cs │ │ │ ├── CreateUser.cs │ │ │ ├── DownParty.cs │ │ │ ├── DynamicElement.cs │ │ │ ├── DynamicElementTypes.cs │ │ │ ├── ExternalConnectTypes.cs │ │ │ ├── ExternalLoginSecretRequest.cs │ │ │ ├── ExternalLoginSecretResponse.cs │ │ │ ├── ExternalLoginUpParty.cs │ │ │ ├── ExternalLoginUpPartyProfile.cs │ │ │ ├── ExternalLoginUsernameTypes.cs │ │ │ ├── LinkExternalUser.cs │ │ │ ├── LoginUpParty.cs │ │ │ ├── LoginUpPartyLogoutConsents.cs │ │ │ ├── OAuthAdditionalParameter.cs │ │ │ ├── OAuthClaimTransform.cs │ │ │ ├── OAuthClientKeyRequest.cs │ │ │ ├── OAuthClientKeyResponse.cs │ │ │ ├── OAuthClientSecretRequest.cs │ │ │ ├── OAuthClientSecretResponse.cs │ │ │ ├── OAuthClientSecretSingleRequest.cs │ │ │ ├── OAuthClientSecretSingleResponse.cs │ │ │ ├── OAuthDownClaim.cs │ │ │ ├── OAuthDownClient.cs │ │ │ ├── OAuthDownParty.cs │ │ │ ├── OAuthDownResource.cs │ │ │ ├── OAuthDownResourceScope.cs │ │ │ ├── OAuthDownScope.cs │ │ │ ├── OAuthUpClient.cs │ │ │ ├── OAuthUpParty.cs │ │ │ ├── OidcDownClaim.cs │ │ │ ├── OidcDownClient.cs │ │ │ ├── OidcDownParty.cs │ │ │ ├── OidcDownScope.cs │ │ │ ├── OidcUpClient.cs │ │ │ ├── OidcUpClientProfile.cs │ │ │ ├── OidcUpParty.cs │ │ │ ├── OidcUpPartyProfile.cs │ │ │ ├── PartyBindingPatterns.cs │ │ │ ├── PartyTypes.cs │ │ │ ├── PartyUpdateStates.cs │ │ │ ├── SamlAuthnContextComparisonTypes.cs │ │ │ ├── SamlBindingTypes.cs │ │ │ ├── SamlClaimTransform.cs │ │ │ ├── SamlDownParty.cs │ │ │ ├── SamlMetadataAttributeConsumingService.cs │ │ │ ├── SamlMetadataContactPerson.cs │ │ │ ├── SamlMetadataContactPersonTypes.cs │ │ │ ├── SamlMetadataOrganization.cs │ │ │ ├── SamlMetadataRequestedAttribute.cs │ │ │ ├── SamlMetadataServiceName.cs │ │ │ ├── SamlReadMetadataRequest.cs │ │ │ ├── SamlReadMetadataType.cs │ │ │ ├── SamlUpParty.cs │ │ │ ├── SamlUpPartyProfile.cs │ │ │ ├── TrackLinkDownParty.cs │ │ │ ├── TrackLinkUpParty.cs │ │ │ ├── TrackLinkUpPartyProfile.cs │ │ │ ├── UpParty.cs │ │ │ ├── UpPartyLink.cs │ │ │ └── UpPartyProfile.cs │ │ ├── Tenants │ │ │ ├── Address.cs │ │ │ ├── CreateTenantRequest.cs │ │ │ ├── Customer.cs │ │ │ ├── MollieFirstPaymentRequest.cs │ │ │ ├── MollieFirstPaymentResponse.cs │ │ │ ├── MyTenantRequest.cs │ │ │ ├── Payment.cs │ │ │ ├── Tenant.cs │ │ │ ├── TenantBase.cs │ │ │ ├── TenantRequest.cs │ │ │ └── TenantResponse.cs │ │ ├── Tracks │ │ │ ├── ClaimAndValues.cs │ │ │ ├── ClaimMap.cs │ │ │ ├── CreateUserRequest.cs │ │ │ ├── ExternalUser.cs │ │ │ ├── ExternalUserId.cs │ │ │ ├── ExternalUserRequest.cs │ │ │ ├── ExternalUserUpdateRequest.cs │ │ │ ├── FailingLoginLock.cs │ │ │ ├── FailingLoginTypes.cs │ │ │ ├── Logs │ │ │ │ ├── LogItem.cs │ │ │ │ ├── LogItemDetail.cs │ │ │ │ ├── LogItemTypes.cs │ │ │ │ ├── LogRequest.cs │ │ │ │ ├── LogResponse.cs │ │ │ │ ├── LogSettings.cs │ │ │ │ ├── LogStreamApplicationInsightsSettings.cs │ │ │ │ ├── LogStreamSettings.cs │ │ │ │ ├── LogStreamTypes.cs │ │ │ │ ├── LogStreams.cs │ │ │ │ ├── MyTenantLogRequest.cs │ │ │ │ ├── ResourceSettings.cs │ │ │ │ ├── TenantLogRequest.cs │ │ │ │ ├── UsageLogItem.cs │ │ │ │ ├── UsageLogRequest.cs │ │ │ │ ├── UsageLogResponse.cs │ │ │ │ ├── UsageLogSummarizeLevels.cs │ │ │ │ ├── UsageLogTimeScopes.cs │ │ │ │ ├── UsageLogTypes.cs │ │ │ │ ├── UsageMyTenantLogRequest.cs │ │ │ │ └── UsageTenantLogRequest.cs │ │ │ ├── MyUser.cs │ │ │ ├── SendEmail.cs │ │ │ ├── SendSms.cs │ │ │ ├── SendSmsTypes.cs │ │ │ ├── Track.cs │ │ │ ├── TrackKey.cs │ │ │ ├── TrackKeyItemContained.cs │ │ │ ├── TrackKeyItemContainedRequest.cs │ │ │ ├── TrackKeyItemContainedSwap.cs │ │ │ ├── TrackKeyItemsContained.cs │ │ │ ├── TrackKeyTypes.cs │ │ │ ├── TrackResourceItem.cs │ │ │ ├── User.cs │ │ │ ├── UserBase.cs │ │ │ ├── UserChangePasswordRequest.cs │ │ │ ├── UserControlProfile.cs │ │ │ ├── UserRequest.cs │ │ │ ├── UsersDelete.cs │ │ │ └── UsersRequest.cs │ │ └── Usage │ │ │ ├── Invoice.cs │ │ │ ├── InvoiceLine.cs │ │ │ ├── UpdateUsageRequest.cs │ │ │ ├── UsageInvoiceSendStatus.cs │ │ │ ├── UsageInvoicingAction.cs │ │ │ ├── UsagePaymentStatus.cs │ │ │ ├── UsageRequest.cs │ │ │ ├── Used.cs │ │ │ ├── UsedBase.cs │ │ │ ├── UsedItem.cs │ │ │ └── UsedItemTypes.cs │ │ └── ErrorInfo.cs ├── FoxIDs.Shared │ ├── Extensions │ │ ├── ActionResultExtensions.cs │ │ ├── ClaimExtensions.cs │ │ ├── DataAnnotationExtensions.cs │ │ ├── DataDocumentExtensions.cs │ │ ├── DateOnlySerializableExtensions.cs │ │ ├── ExceptionExtensions.cs │ │ ├── ExpressionExtensions.cs │ │ ├── HttpContextExtensions.cs │ │ ├── HttpResponseExtensions.cs │ │ ├── LogLifetimeOptionsExtensions.cs │ │ ├── ObjectExtensions.cs │ │ ├── PartyTypeExtensions.cs │ │ ├── RouteBindingExtensions.cs │ │ ├── ServiceCollectionExtensions.cs │ │ ├── StringExtensions.cs │ │ └── X509Certificate2Extensions.cs │ ├── FoxIDs.Shared.csproj │ ├── Infrastructure │ │ ├── Filters │ │ │ └── HttpSecurityHeadersAttribute.cs │ │ ├── Hosting │ │ │ ├── ApplicationBuilderExtensions.cs │ │ │ ├── DataProtectionBuilderExtension.cs │ │ │ ├── DataProtectionGeneralRepository.cs │ │ │ ├── LoggingMiddleware.cs │ │ │ ├── OidcDiscoveryBackgroundService.cs │ │ │ ├── ProxyHeadersMiddleware.cs │ │ │ ├── RouteBindingMiddleware.cs │ │ │ ├── RouteException.cs │ │ │ ├── ServiceCollectionExtensions.cs │ │ │ └── SiteRouteTransformer.cs │ │ └── Logging │ │ │ ├── ApplicationInsightsTelemetryLogger.cs │ │ │ ├── OpenSearchTelemetryLogger.cs │ │ │ ├── StdoutTelemetryLogger.cs │ │ │ ├── TelemetryLogger.cs │ │ │ ├── TelemetryScopedLogger.cs │ │ │ ├── TelemetryScopedProperties.cs │ │ │ └── TelemetryScopedStreamLogger.cs │ ├── Logic │ │ ├── Base │ │ │ └── LogicBase.cs │ │ ├── Caches │ │ │ ├── DownPartyCacheLogic.cs │ │ │ ├── PlanCacheLogic.cs │ │ │ ├── Providers │ │ │ │ ├── FileCacheProvider.cs │ │ │ │ ├── ICacheProvider.cs │ │ │ │ ├── IDataCacheProvider.cs │ │ │ │ ├── InactiveCacheProvider.cs │ │ │ │ ├── MemoryCacheProvider.cs │ │ │ │ ├── MongoDbCacheProvider.cs │ │ │ │ ├── PostgreSqlCacheProvider.cs │ │ │ │ └── RedisCacheProvider.cs │ │ │ ├── TenantCacheLogic.cs │ │ │ ├── TrackCacheLogic.cs │ │ │ └── UpPartyCacheLogic.cs │ │ ├── Exceptions │ │ │ ├── Account │ │ │ │ ├── AccountActionException.cs │ │ │ │ ├── AccountException.cs │ │ │ │ ├── ChangePasswordException.cs │ │ │ │ ├── InvalidEmailException.cs │ │ │ │ ├── InvalidPasswordException.cs │ │ │ │ ├── InvalidUsernameOrPasswordException.cs │ │ │ │ ├── NewPasswordEqualsCurrentException.cs │ │ │ │ ├── PasswordComplexityException.cs │ │ │ │ ├── PasswordEmailTextComplexityException.cs │ │ │ │ ├── PasswordLengthException.cs │ │ │ │ ├── PasswordPhoneTextComplexityException.cs │ │ │ │ ├── PasswordRiskException.cs │ │ │ │ ├── PasswordUrlTextComplexityException.cs │ │ │ │ ├── PasswordUsernameTextComplexityException.cs │ │ │ │ ├── UserExistsException.cs │ │ │ │ ├── UserNotExistsException.cs │ │ │ │ └── UserObservationPeriodException.cs │ │ │ ├── EmailConfigurationException.cs │ │ │ ├── KeyException.cs │ │ │ ├── PlanException.cs │ │ │ └── X509Certificate2Extensions.cs │ │ ├── Keys │ │ │ ├── ContainedKeyLogic.cs │ │ │ ├── ExternalKeyLogic.cs │ │ │ └── ExternalSecretLogic.cs │ │ ├── Master │ │ │ └── EmbeddedResourceLogic.cs │ │ ├── MasterTenantLogic.cs │ │ ├── OAuth │ │ │ └── OAuthRefreshTokenGrantDownBaseLogic.cs │ │ ├── Parties │ │ │ ├── OidcDiscoveryReadLogic.cs │ │ │ ├── OidcDiscoveryReadModelLogic.cs │ │ │ └── SamlMetadataReadLogic.cs │ │ ├── PlanUsageLogic.cs │ │ ├── SendEmailLogic.cs │ │ ├── SendSmsLogic.cs │ │ └── Tracks │ │ │ ├── BaseAccountLogic.cs │ │ │ ├── ClaimTransformValidationLogic.cs │ │ │ ├── SecretHashLogic.cs │ │ │ └── TrackLogic.cs │ ├── Models │ │ ├── Base │ │ │ ├── DataDocument.cs │ │ │ ├── DataElement.cs │ │ │ ├── DataTtlDocument.cs │ │ │ ├── DateOnlySerializable.cs │ │ │ ├── DefaultElement.cs │ │ │ ├── IDataDocument.cs │ │ │ ├── IDataElement.cs │ │ │ ├── IDataTtlDocument.cs │ │ │ ├── IOAuthClaimTransforms.cs │ │ │ ├── IParty.cs │ │ │ ├── IPartyDataElement.cs │ │ │ ├── ISamlClaimTransforms.cs │ │ │ ├── ISecretHash.cs │ │ │ ├── IUiLoginUpParty.cs │ │ │ ├── IUpParty.cs │ │ │ ├── MasterDocument.cs │ │ │ └── UiLoginUpPartyData.cs │ │ ├── Cache │ │ │ ├── CacheData.cs │ │ │ └── CacheTtlData.cs │ │ ├── Config │ │ │ ├── AddressSettings.cs │ │ │ ├── ApplicationInsights.cs │ │ │ ├── CacheSettings.cs │ │ │ ├── ClientCredentialSettings.cs │ │ │ ├── CosmosDbSettings.cs │ │ │ ├── FileDataSettings.cs │ │ │ ├── InvalidConfigException.cs │ │ │ ├── KeyVaultSettings.cs │ │ │ ├── MongoDbSettings.cs │ │ │ ├── OpenSearchBaseSettings.cs │ │ │ ├── OpenSearchQuerySettings.cs │ │ │ ├── OpenSearchSettings.cs │ │ │ ├── Options │ │ │ │ ├── CacheOptions.cs │ │ │ │ ├── DataCacheOptions.cs │ │ │ │ ├── DataStorageOptions.cs │ │ │ │ ├── KeyStorageOptions.cs │ │ │ │ └── LogOptions.cs │ │ │ ├── OptionsSettings.cs │ │ │ ├── PostgreSqlSettings.cs │ │ │ ├── RedisCacheSettings.cs │ │ │ ├── SendgridSettings.cs │ │ │ ├── Settings.cs │ │ │ ├── SmsSettings.cs │ │ │ └── SmtpSettings.cs │ │ ├── Exceptions │ │ │ └── DataNullException.cs │ │ ├── External │ │ │ └── Sms │ │ │ │ ├── GatewayApiRecipient.cs │ │ │ │ ├── GatewayApiRequest.cs │ │ │ │ ├── GatewayApiResponse.cs │ │ │ │ ├── SmstoolsApiRequest.cs │ │ │ │ └── SmstoolsApiResponse.cs │ │ ├── Grants │ │ │ ├── AuthCodeTtlGrant.cs │ │ │ ├── RefreshTokenGrant.cs │ │ │ ├── RefreshTokenTtlGrant.cs │ │ │ └── SamlUpPartyIdPInitiatedTtlGrant.cs │ │ ├── Logic │ │ │ ├── CreateUserObj.cs │ │ │ ├── EmailContent.cs │ │ │ ├── SmsContent.cs │ │ │ └── UserIdentifier.cs │ │ ├── Master │ │ │ ├── DataProtection.cs │ │ │ ├── Plans │ │ │ │ ├── LogLifetimeOptions.cs │ │ │ │ ├── Plan.cs │ │ │ │ └── PlanItem.cs │ │ │ ├── Resources │ │ │ │ ├── EmbeddedResource.cs │ │ │ │ ├── EmbeddedResource.json │ │ │ │ ├── ResourceCultureItem.cs │ │ │ │ ├── ResourceEditLevels.cs │ │ │ │ ├── ResourceEnvelope.cs │ │ │ │ ├── ResourceItem.cs │ │ │ │ └── ResourceName.cs │ │ │ ├── RiskPassword.cs │ │ │ ├── SmsPrice.cs │ │ │ ├── SmsPrices.cs │ │ │ ├── UsageCurrencyExchange.cs │ │ │ └── UsageSettings.cs │ │ ├── Parties │ │ │ ├── ClaimTransform.cs │ │ │ ├── ClaimTransformActions.cs │ │ │ ├── ClaimTransformTasks.cs │ │ │ ├── ClaimTransformTypes.cs │ │ │ ├── ClientAuthenticationMethods.cs │ │ │ ├── ClientKey.cs │ │ │ ├── ClientKeyTypes.cs │ │ │ ├── CreateUser.cs │ │ │ ├── DownParty.cs │ │ │ ├── DownPartyLink.cs │ │ │ ├── DynamicElement.cs │ │ │ ├── DynamicElementTypes.cs │ │ │ ├── ExternalConnectTypes.cs │ │ │ ├── ExternalLoginUpParty.cs │ │ │ ├── ExternalLoginUpPartyProfile.cs │ │ │ ├── ExternalLoginUsernameTypes.cs │ │ │ ├── LinkExternalUser.cs │ │ │ ├── LoginUpParty.cs │ │ │ ├── LoginUpPartyLogoutConsents.cs │ │ │ ├── OAuthAdditionalParameter.cs │ │ │ ├── OAuthClaimTransform.cs │ │ │ ├── OAuthClientSecret.cs │ │ │ ├── OAuthDownClaim.cs │ │ │ ├── OAuthDownClient.cs │ │ │ ├── OAuthDownParty.cs │ │ │ ├── OAuthDownResource.cs │ │ │ ├── OAuthDownResourceScope.cs │ │ │ ├── OAuthDownScope.cs │ │ │ ├── OAuthUpClient.cs │ │ │ ├── OAuthUpClientProfile.cs │ │ │ ├── OAuthUpParty.cs │ │ │ ├── OAuthUpPartyProfile.cs │ │ │ ├── OidcDownClaim.cs │ │ │ ├── OidcDownClient.cs │ │ │ ├── OidcDownParty.cs │ │ │ ├── OidcDownScope.cs │ │ │ ├── OidcUpClient.cs │ │ │ ├── OidcUpParty.cs │ │ │ ├── Party.cs │ │ │ ├── PartyBindingPatterns.cs │ │ │ ├── PartyDataElement.cs │ │ │ ├── PartyTypes.cs │ │ │ ├── PartyUpdateStates.cs │ │ │ ├── SamlAuthnContextComparisonTypes.cs │ │ │ ├── SamlBinding.cs │ │ │ ├── SamlBindingTypes.cs │ │ │ ├── SamlClaimTransform.cs │ │ │ ├── SamlDownParty.cs │ │ │ ├── SamlMetadataAttributeConsumingService.cs │ │ │ ├── SamlMetadataContactPerson.cs │ │ │ ├── SamlMetadataContactPersonTypes.cs │ │ │ ├── SamlMetadataOrganization.cs │ │ │ ├── SamlMetadataRequestedAttribute.cs │ │ │ ├── SamlMetadataServiceName.cs │ │ │ ├── SamlUpParty.cs │ │ │ ├── SamlUpPartyProfile.cs │ │ │ ├── TrackLinkDownParty.cs │ │ │ ├── TrackLinkUpParty.cs │ │ │ ├── TrackLinkUpPartyProfile.cs │ │ │ ├── UpParty.cs │ │ │ ├── UpPartyLink.cs │ │ │ ├── UpPartyProfile.cs │ │ │ ├── UpPartyWithExternalUser.cs │ │ │ └── UpPartyWithProfile.cs │ │ ├── Routes │ │ │ ├── IRouteBinding.cs │ │ │ ├── RouteBinding.cs │ │ │ ├── RouteTrackKey.cs │ │ │ └── RouteTrackKeyItem.cs │ │ ├── Tenants │ │ │ ├── Address.cs │ │ │ ├── Customer.cs │ │ │ ├── Payment.cs │ │ │ └── Tenant.cs │ │ ├── Tracks │ │ │ ├── CertificateItem.cs │ │ │ ├── ClaimAndValues.cs │ │ │ ├── ClaimMap.cs │ │ │ ├── ExternalUser.cs │ │ │ ├── FailingLoginLock.cs │ │ │ ├── FailingLoginTypes.cs │ │ │ ├── Logs │ │ │ │ ├── Logging.cs │ │ │ │ ├── Logging │ │ │ │ │ ├── ErrorMessageIItem.cs │ │ │ │ │ ├── LogTypes.cs │ │ │ │ │ ├── MetricMessage.cs │ │ │ │ │ ├── OpenSearchErrorLogItem.cs │ │ │ │ │ ├── OpenSearchEventLogItem.cs │ │ │ │ │ ├── OpenSearchLogItem.cs │ │ │ │ │ ├── OpenSearchLogItemBase.cs │ │ │ │ │ ├── OpenSearchMetricLogItem.cs │ │ │ │ │ ├── OpenSearchTraceLogItem.cs │ │ │ │ │ ├── TraceMessageItem.cs │ │ │ │ │ └── TraceTypes.cs │ │ │ │ ├── ScopedLogger.cs │ │ │ │ ├── ScopedStreamApplicationInsightsSettings.cs │ │ │ │ ├── ScopedStreamLogger.cs │ │ │ │ ├── ScopedStreamLoggerTypes.cs │ │ │ │ ├── UsageLogSendTypes.cs │ │ │ │ ├── UsageLogTokenTypes.cs │ │ │ │ └── UsageLogTypes.cs │ │ │ ├── SendEmail.cs │ │ │ ├── SendSms.cs │ │ │ ├── SendSmsTypes.cs │ │ │ ├── Track.cs │ │ │ ├── TrackKey.cs │ │ │ ├── TrackKeyExternal.cs │ │ │ ├── TrackKeyExternalItem.cs │ │ │ ├── TrackKeyItem.cs │ │ │ ├── TrackKeyTypes.cs │ │ │ ├── TwoFactorAppRecoveryCode.cs │ │ │ ├── User.cs │ │ │ └── UserControlProfile.cs │ │ └── Usage │ │ │ ├── Invoice.cs │ │ │ ├── InvoiceLine.cs │ │ │ ├── Seller.cs │ │ │ ├── UsageInvoiceSendStatus.cs │ │ │ ├── UsagePaymentStatus.cs │ │ │ ├── Used.cs │ │ │ ├── UsedItem.cs │ │ │ └── UsedItemTypes.cs │ └── Repository │ │ ├── CosmosDb │ │ ├── CosmosDbDataRepositoryBulkClient.cs │ │ ├── CosmosDbDataRepositoryClient.cs │ │ ├── CosmosDbDataRepositoryClientBase.cs │ │ ├── CosmosDbMasterDataRepository.cs │ │ ├── CosmosDbTenantDataRepository.cs │ │ ├── ICosmosDbDataRepositoryBulkClient.cs │ │ └── ICosmosDbDataRepositoryClient.cs │ │ ├── Exceptions │ │ ├── DataStatusCode.cs │ │ └── FoxIDsDataException.cs │ │ ├── Files │ │ ├── BackgroundFileDataService.cs │ │ ├── FileDataRepository.cs │ │ ├── FileMasterDataRepository.cs │ │ └── FileTenantDataRepository.cs │ │ ├── IMasterDataRepository.cs │ │ ├── ITenantDataRepository.cs │ │ ├── MasterDataRepositoryBase.cs │ │ ├── MongoDb │ │ ├── MongoDbJsonPropertyConvention.cs │ │ ├── MongoDbMasterDataRepository.cs │ │ ├── MongoDbRepositoryClient.cs │ │ └── MongoDbTenantDataRepository.cs │ │ ├── PostgreSql │ │ ├── BackgroundPgDataService.cs │ │ ├── PgMasterDataRepository.cs │ │ └── PgTenantDataRepository.cs │ │ └── TenantDataRepositoryBase.cs ├── FoxIDs.SharedBase │ ├── Constants.cs │ ├── Extensions │ │ ├── HashExtensions.cs │ │ ├── HttpClientExtensions.cs │ │ ├── HttpResponseMessageExtensions.cs │ │ ├── JsonFoxIDsApiSerializerExtensions.cs │ │ ├── JsonSerializerExtensions.cs │ │ └── ListExtensions.cs │ ├── FoxIDs.SharedBase.csproj │ ├── Infrastructure │ │ ├── DataAnnotations │ │ │ ├── EmailAddressEmptyStringAttribute.cs │ │ │ ├── Exceptions │ │ │ │ └── ValidationResultException.cs │ │ │ ├── ListLengthAttribute.cs │ │ │ ├── MaxAttribute.cs │ │ │ └── MinAttribute.cs │ │ └── FoxIDsApiException.cs │ └── Util │ │ └── RandomName.cs └── FoxIDs │ ├── Connected Services │ └── Application Insights │ │ └── ConnectedService.json │ ├── Controllers │ ├── ActionController.cs │ ├── EndpointController.cs │ ├── ExtController.cs │ ├── ExtLoginController.cs │ ├── LoginController.cs │ ├── MfaController.cs │ ├── OAuthController.cs │ ├── OAuthUpJumpController.cs │ ├── OpenIDConfigController.cs │ ├── SamlController.cs │ ├── SamlUpJumpController.cs │ ├── Site │ │ ├── ErrorController.cs │ │ ├── HealthController.cs │ │ └── WController.cs │ └── TrackLinkController.cs │ ├── Dockerfile │ ├── Extensions │ ├── DynamicElementExtension.cs │ ├── HtmlActionExtensions.cs │ ├── HtmlHelperExtensions.cs │ ├── HttpContextExtensions.cs │ ├── JsonWebKeyExtensions.cs │ ├── RouteBindingExtensions.cs │ ├── Saml2BindingExtensions.cs │ └── SequenceExtensions.cs │ ├── FoxIDs.csproj │ ├── Infrastructure │ ├── DataAnnotations │ │ ├── MaxLengthMessageAttribute.cs │ │ └── RequiredMessageAttribute.cs │ ├── Filters │ │ ├── FoxIDsHttpSecurityHeadersAttribute.cs │ │ ├── OAuthBearerTokenUsageExceptionAttribute.cs │ │ └── SequenceAttribute.cs │ ├── Hosting │ │ ├── ApplicationBuilderExtensions.cs │ │ ├── CorsPolicyProvider.cs │ │ ├── FoxIDsProxyHeadersMiddleware.cs │ │ ├── FoxIDsRouteBindingMiddleware.cs │ │ ├── FoxIDsRouteTransformer.cs │ │ └── ServiceCollectionExtensions.cs │ ├── Localization │ │ ├── FoxIDsStringLocalizer.cs │ │ ├── FoxIDsStringLocalizerFactory.cs │ │ └── LocalizedValidationAttributeAdapterProvider.cs │ └── Saml2 │ │ ├── FoxIdsSaml2AuthnResponse.cs │ │ ├── FoxIdsSaml2TokenExchangeBinding.cs │ │ └── FoxIdsSaml2TokenExchangeRequest.cs │ ├── Logic │ ├── Base │ │ └── LogicSequenceBase.cs │ ├── Exceptions │ │ ├── CodeNotExistsException.cs │ │ ├── EndpointException.cs │ │ ├── ExternalKeyIsNotReadyException.cs │ │ ├── InvalidAppCodeException.cs │ │ ├── InvalidCodeException.cs │ │ ├── InvalidRecoveryCodeException.cs │ │ ├── OAuthRefreshTokenGrantNotFoundException.cs │ │ ├── OAuthRequestException.cs │ │ ├── SamlRequestException.cs │ │ ├── SamlResponseException.cs │ │ ├── SequenceBrowserBackException.cs │ │ ├── SequenceException.cs │ │ ├── SequenceTimeoutException.cs │ │ └── StopSequenceException.cs │ ├── ExternalLogin │ │ ├── ExternalLoginConnectLogic.cs │ │ ├── ExternalLoginPageLogic.cs │ │ ├── ExternalLoginUpLogic.cs │ │ └── ExternalLogoutUpLogic.cs │ ├── Link │ │ ├── TrackLinkAuthDownLogic.cs │ │ ├── TrackLinkAuthUpLogic.cs │ │ ├── TrackLinkFrontChannelLogoutDownLogic.cs │ │ ├── TrackLinkFrontChannelLogoutUpLogic.cs │ │ ├── TrackLinkRpInitiatedLogoutDownLogic.cs │ │ └── TrackLinkRpInitiatedLogoutUpLogic.cs │ ├── LocalizationLogic.cs │ ├── Login │ │ ├── AccountActionLogic.cs │ │ ├── AccountLogic.cs │ │ ├── AccountTwoFactorAppLogic.cs │ │ ├── CountryCodesLogic.cs │ │ ├── FailingLoginLogic.cs │ │ ├── LoginPageLogic.cs │ │ ├── LoginUpLogic.cs │ │ ├── LogoutUpLogic.cs │ │ └── SingleLogoutLogic.cs │ ├── OAuth │ │ ├── OAuthAuthCodeGrantDownLogic.cs │ │ ├── OAuthAuthUpLogic.cs │ │ ├── OAuthJwtDownLogic.cs │ │ ├── OAuthJwtUpLogic.cs │ │ ├── OAuthRefreshTokenGrantDownLogic.cs │ │ ├── OAuthResourceScopeDownLogic.cs │ │ ├── OAuthTokenDownLogic.cs │ │ └── OAuthTokenExchangeDownLogic.cs │ ├── Oidc │ │ ├── ClientKeySecretLogic.cs │ │ ├── OidcAuthDownLogic.cs │ │ ├── OidcAuthUpLogic.cs │ │ ├── OidcDiscoveryExposeDownLogic.cs │ │ ├── OidcDiscoveryReadUpLogic.cs │ │ ├── OidcFrontChannelLogoutDownLogic.cs │ │ ├── OidcFrontChannelLogoutUpLogic.cs │ │ ├── OidcJwtDownLogic.cs │ │ ├── OidcJwtUpLogic.cs │ │ ├── OidcRpInitiatedLogoutDownLogic.cs │ │ ├── OidcRpInitiatedLogoutUpLogic.cs │ │ ├── OidcTokenDownLogic.cs │ │ └── OidcUserInfoDownLogic.cs │ ├── Saml │ │ ├── SamlAuthnDownLogic.cs │ │ ├── SamlAuthnUpIdPInitiatedGrantLogic.cs │ │ ├── SamlAuthnUpLogic.cs │ │ ├── SamlClaimsDownLogic.cs │ │ ├── SamlConfigurationLogic.cs │ │ ├── SamlConvertLogic.cs │ │ ├── SamlLogoutDownLogic.cs │ │ ├── SamlLogoutUpLogic.cs │ │ ├── SamlMetadataExposeLogic.cs │ │ └── SamlMetadataReadUpLogic.cs │ ├── SecurityHeaderLogic.cs │ ├── SequenceLogic.cs │ └── Tracks │ │ ├── ClaimTransformLogic.cs │ │ ├── ClaimValidationLogic.cs │ │ ├── ClaimsDownLogic.cs │ │ ├── ClaimsOAuthDownLogic.cs │ │ ├── DynamicElementLogic.cs │ │ ├── ExternalClaimsConnectLogic.cs │ │ ├── ExternalUserLogic.cs │ │ ├── HrdLogic.cs │ │ ├── SessionBaseLogic.cs │ │ ├── SessionLoginUpPartyLogic.cs │ │ ├── SessionUpPartyLogic.cs │ │ ├── StateUpPartyLogic.cs │ │ ├── TrackIssuerLogic.cs │ │ └── TrackKeyLogic.cs │ ├── Models │ ├── Config │ │ └── FoxIDsSettings.cs │ ├── External │ │ ├── ClaimValue.cs │ │ ├── Claims │ │ │ ├── ClaimsRequest.cs │ │ │ └── ClaimsResponse.cs │ │ ├── ErrorResponse.cs │ │ ├── InvalidAppIdOrSecretException.cs │ │ └── Login │ │ │ ├── AuthenticationRequest.cs │ │ │ └── AuthenticationResponse.cs │ ├── FoxIDsSaml2Configuration.cs │ ├── Logic │ │ ├── ConfirmationCode.cs │ │ ├── CountryCode.cs │ │ ├── CountryCodes.cs │ │ ├── CountryCodes.json │ │ ├── DkPrivilegeGroup.cs │ │ ├── ILoginRequest.cs │ │ ├── IdPInitiatedDownPartyLink.cs │ │ ├── LoginAction.cs │ │ ├── LoginRequest.cs │ │ ├── LoginResponseSequenceSteps.cs │ │ ├── LoginSequenceError.cs │ │ ├── LoginUserIdentifier.cs │ │ └── LogoutRequest.cs │ ├── Sequences │ │ ├── Base │ │ │ ├── IDownSequenceData.cs │ │ │ ├── ILoginUpSequenceDataBase.cs │ │ │ ├── ISequenceData.cs │ │ │ ├── ISequenceKey.cs │ │ │ └── IUpSequenceData.cs │ │ ├── DownSequenceData.cs │ │ ├── ExternalLoginUpSequenceData.cs │ │ ├── ExternalUserUpSequenceData.cs │ │ ├── HrdUpPartySequenceData.cs │ │ ├── LoginUpSequenceData.cs │ │ ├── OidcDownSequenceData.cs │ │ ├── OidcUpSequenceData.cs │ │ ├── SamlDownSequenceData.cs │ │ ├── SamlUpSequenceData.cs │ │ ├── Sequence.cs │ │ ├── SequenceAction.cs │ │ ├── SequenceStep.cs │ │ ├── SingleLogoutSequenceData.cs │ │ ├── StateUpPartyCookie.cs │ │ ├── TrackLinkDownSequenceData.cs │ │ ├── TrackLinkUpSequenceData.cs │ │ ├── TwoFactorAppSequenceStates.cs │ │ └── UpSequenceData.cs │ ├── Session │ │ ├── CookieEnvelope.cs │ │ ├── CookieMessage.cs │ │ ├── DownPartySessionLink.cs │ │ ├── HrdTrackCookie.cs │ │ ├── HrdUpPartyCookieData.cs │ │ ├── SessionBaseCookie.cs │ │ ├── SessionLoginUpPartyCookie.cs │ │ ├── SessionTrackCookie.cs │ │ ├── SessionTrackCookieGroup.cs │ │ ├── SessionUpPartyCookie.cs │ │ └── UpPartySessionLink.cs │ ├── TwoFactorSetupInfo.cs │ └── ViewModels │ │ ├── Abstracts │ │ └── ViewModel.cs │ │ ├── Action │ │ ├── ConfirmationCodeSendStatus.cs │ │ ├── EmailConfirmationViewModel.cs │ │ ├── EmailSetPasswordViewModel.cs │ │ ├── PhoneConfirmationViewModel.cs │ │ ├── PhoneSetPasswordViewModel.cs │ │ └── SetPasswordBaseViewModel.cs │ │ ├── DynamicElements │ │ ├── DynamicElementBase.cs │ │ ├── EmailDElement.cs │ │ ├── EmailRequiredDElement.cs │ │ ├── FamilyNameDElement.cs │ │ ├── FamilyNameRequiredDElement.cs │ │ ├── GivenNameDElement.cs │ │ ├── GivenNameRequiredDElement.cs │ │ ├── NameDElement.cs │ │ ├── NameRequiredDElement.cs │ │ ├── PasswordDElement.cs │ │ ├── PhoneDElement.cs │ │ ├── PhoneRequiredDElement.cs │ │ ├── UsernameDElement.cs │ │ └── UsernameRequiredDElement.cs │ │ ├── ErrorViewModel.cs │ │ ├── Ext │ │ └── CreateExternalUserViewModel.cs │ │ ├── ExtLogin │ │ ├── ExternalLoginEmailViewModel.cs │ │ ├── ExternalLoginResponseViewModel.cs │ │ └── ExternalLoginTextViewModel.cs │ │ ├── Login │ │ ├── ChangePasswordViewModel.cs │ │ ├── CreateUserViewModel.cs │ │ ├── IdentifierUpPartyViewModel.cs │ │ ├── IdentifierViewModel.cs │ │ ├── Identifiers │ │ │ ├── EmailIdentifierViewModel.cs │ │ │ ├── EmailPasswordViewModel.cs │ │ │ ├── PhoneEmailIdentifierViewModel.cs │ │ │ ├── PhoneEmailPasswordViewModel.cs │ │ │ ├── PhoneIdentifierViewModel.cs │ │ │ ├── PhonePasswordViewModel.cs │ │ │ ├── UsernameEmailIdentifierViewModel.cs │ │ │ ├── UsernameEmailPasswordViewModel.cs │ │ │ ├── UsernameIdentifierViewModel.cs │ │ │ ├── UsernamePasswordViewModel.cs │ │ │ ├── UsernamePhoneEmailIdentifierViewModel.cs │ │ │ ├── UsernamePhoneEmailPasswordViewModel.cs │ │ │ ├── UsernamePhoneIdentifierViewModel.cs │ │ │ └── UsernamePhonePasswordViewModel.cs │ │ ├── LoggedInViewModel.cs │ │ ├── LoggedOutViewModel.cs │ │ ├── LoginBaseViewModel.cs │ │ ├── LoginViewModel.cs │ │ ├── LogoutChoice.cs │ │ ├── LogoutViewModel.cs │ │ ├── PasswordViewModel.cs │ │ ├── PasswordlessEmailViewModel.cs │ │ └── PasswordlessSmsViewModel.cs │ │ └── Mfa │ │ ├── RecoveryCodeTwoFactorAppViewModel.cs │ │ ├── RegisterTwoFactorAppViewModel.cs │ │ ├── TwoFactorAppViewModel.cs │ │ ├── TwoFactorEmailViewModel.cs │ │ ├── TwoFactorSendBaseViewModel.cs │ │ └── TwoFactorSmsViewModel.cs │ ├── Program.cs │ ├── Properties │ └── launchSettings.json │ ├── Repository │ ├── CookieRepositoryBase.cs │ ├── TrackCookieRepository.cs │ └── UpPartyCookieRepository.cs │ ├── Startup.cs │ ├── Views │ ├── Action │ │ ├── EmailConfirmation.cshtml │ │ ├── EmailSetPassword.cshtml │ │ ├── PhoneConfirmation.cshtml │ │ └── PhoneSetPassword.cshtml │ ├── Error │ │ └── Index.cshtml │ ├── Ext │ │ └── CreateUser.cshtml │ ├── ExtLogin │ │ ├── LoggedOut.cshtml │ │ ├── LoginEmail.cshtml │ │ ├── LoginText.cshtml │ │ └── Logout.cshtml │ ├── Login │ │ ├── ChangePassword.cshtml │ │ ├── CreateUser.cshtml │ │ ├── Identifier.cshtml │ │ ├── LoggedIn.cshtml │ │ ├── LoggedOut.cshtml │ │ ├── Logout.cshtml │ │ ├── Password.cshtml │ │ ├── PasswordlessEmail.cshtml │ │ └── PasswordlessSms.cshtml │ ├── Mfa │ │ ├── AppTwoFactor.cshtml │ │ ├── AppTwoFactorRecCode.cshtml │ │ ├── AppTwoFactorReg.cshtml │ │ ├── EmailTwoFactor.cshtml │ │ └── SmsTwoFactor.cshtml │ ├── Shared │ │ ├── _Layout.cshtml │ │ ├── _UserIdentifiers.cshtml │ │ └── _ValidationScriptsPartial.cshtml │ ├── W │ │ └── Index.cshtml │ ├── _ViewImports.cshtml │ └── _ViewStart.cshtml │ ├── appsettings.json │ ├── bundleconfig.json │ ├── web.Release.config │ ├── web.config │ └── wwwroot │ ├── css │ ├── site.css │ └── site1.min.css │ ├── favicon.ico │ ├── images │ └── foxids_logo.svg │ ├── js │ ├── site.js │ └── site1.min.js │ ├── lib │ ├── bootstrap │ │ └── dist │ │ │ ├── css │ │ │ ├── bootstrap.css │ │ │ ├── bootstrap.css.map │ │ │ └── bootstrap.min.css │ │ │ └── js │ │ │ ├── bootstrap.bundle.js │ │ │ ├── bootstrap.bundle.js.map │ │ │ └── bootstrap.bundle.min.js │ ├── jquery-validation-unobtrusive │ │ └── dist │ │ │ ├── jquery.validate.unobtrusive.js │ │ │ └── jquery.validate.unobtrusive.min.js │ ├── jquery-validation │ │ └── dist │ │ │ ├── jquery.validate.js │ │ │ └── jquery.validate.min.js │ └── jquery │ │ └── dist │ │ ├── jquery.js │ │ └── jquery.min.js │ └── robots.txt ├── test ├── FoxIDs.IntegrationTests │ ├── AccountLogicTests.cs │ ├── DatabaseCollection.cs │ ├── FoxIDs.IntegrationTests.csproj │ ├── Helpers │ │ ├── DatabaseFixture.cs │ │ └── RepositoriesHelper.cs │ └── TenantRepositoryTests.cs └── FoxIDs.UnitTests │ ├── AccountLogicTests.cs │ ├── ClaimTransformLogicTests.cs │ ├── Fakes │ ├── FakeMasterRepository.cs │ └── FakeTenantRepository.cs │ ├── FoxIDs.UnitTests.csproj │ ├── Helpers │ └── TelemetryLoggerHelper.cs │ └── MockHelpers │ └── HttpContextAccessorHelper.cs └── tools ├── FoxIDs.ConvertCertificateTool ├── FoxIDs.ConvertCertificateTool.csproj ├── Program.cs ├── README.md └── oces3_-test-_systemcertifikat.p12 ├── FoxIDs.MasterSeedTool ├── Extensions │ ├── HttpClientExtensions.cs │ └── HttpResponseMessageExtensions.cs ├── FoxIDs.MasterSeedTool.csproj ├── Infrastructure │ └── StartupConfigure.cs ├── Logic │ └── AccessLogic.cs ├── Models │ ├── ApiModels │ │ ├── RiskPasswordApiModel.cs │ │ ├── RiskPasswordDeleteApiModel.cs │ │ └── RiskPasswordRequestApiModel.cs │ └── SeedSettings.cs ├── Program.cs ├── SeedLogic │ └── RiskPasswordSeedLogic.cs └── appsettings.json ├── FoxIDs.PGMigrator ├── FoxIDs.PGMigrator.csproj ├── Migrator.cs ├── Program.cs └── appsettings.json ├── FoxIDs.ResourceTranslateTool ├── FoxIDs.ResourceTranslateTool.csproj ├── Infrastructure │ └── StartupConfigure.cs ├── Logic │ ├── DeepLTranslateLogic.cs │ ├── GoogleTranslateLogic.cs │ └── ResourceLogic.cs ├── Models │ └── TranslateSettings.cs ├── Program.cs ├── README.md └── appsettings.json └── FoxIDs.SeedTool ├── Extensions ├── HttpClientExtensions.cs └── HttpResponseMessageExtensions.cs ├── FoxIDs.SeedTool.csproj ├── Infrastructure └── StartupConfigure.cs ├── Logic └── AccessLogic.cs ├── Models ├── ApiModels │ ├── ClaimAndValuesApiModel.cs │ ├── CreateUserApiModel.cs │ ├── PaginationResponseApiModel.cs │ ├── UserApiModel.cs │ ├── UserBaseApiModel.cs │ ├── UsersDeleteApiModel.cs │ └── UsersRequestApiModel.cs └── SeedSettings.cs ├── Program.cs ├── SeedLogic └── UserSeedLogic.cs └── appsettings.json /.dockerignore: -------------------------------------------------------------------------------- 1 | **/.classpath 2 | **/.dockerignore 3 | **/.env 4 | **/.git 5 | **/.gitignore 6 | **/.project 7 | **/.settings 8 | **/.toolstarget 9 | **/.vs 10 | **/.vscode 11 | **/*.*proj.user 12 | **/*.dbmdl 13 | **/*.jfm 14 | **/azds.yaml 15 | **/bin 16 | **/charts 17 | **/docker-compose* 18 | **/Dockerfile* 19 | **/node_modules 20 | **/npm-debug.log 21 | **/obj 22 | **/secrets.dev.yaml 23 | **/values.dev.yaml 24 | .github 25 | azuredeploy.json 26 | LICENSE 27 | README.md -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: ITfoxtec 4 | -------------------------------------------------------------------------------- /Kubernetes/k8s-mongo-configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: mongo-configmap 5 | data: 6 | database_url: mongo-service -------------------------------------------------------------------------------- /Kubernetes/k8s-mongo-pv-dockerdesktop.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolume 3 | metadata: 4 | name: mongo-data-pv 5 | spec: 6 | capacity: 7 | storage: 2Gi 8 | volumeMode: Filesystem 9 | accessModes: 10 | - ReadWriteOnce 11 | persistentVolumeReclaimPolicy: Retain 12 | storageClassName: standard 13 | hostPath: 14 | # local directory c:\data\foxids-data\mongo on Docker Desktop host machine 15 | path: "/run/desktop/mnt/host/c/data/foxids-data/mongo" 16 | type: "" -------------------------------------------------------------------------------- /Kubernetes/k8s-mongo-pvc-dockerdesktop.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: mongo-data-pvc 5 | spec: 6 | storageClassName: standard 7 | accessModes: 8 | - ReadWriteOnce 9 | resources: 10 | requests: 11 | storage: 2Gi -------------------------------------------------------------------------------- /Kubernetes/k8s-mongo-pvc-dynamic.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: mongo-data-pvc 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 2Gi 11 | #storageClassName: standard -------------------------------------------------------------------------------- /Kubernetes/k8s-mongo-secret.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Secret 3 | metadata: 4 | name: mongo-secret 5 | type: Opaque 6 | data: 7 | mongo-username: dXNlcm5hbWU= 8 | mongo-password: cGFzc3dvcmQ= -------------------------------------------------------------------------------- /Kubernetes/k8s-postgres-configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: postgres-configmap 5 | data: 6 | database_url: postgres-db -------------------------------------------------------------------------------- /Kubernetes/k8s-postgres-secret.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Secret 3 | metadata: 4 | name: postgres-secret 5 | type: Opaque 6 | data: 7 | postgres-username: dXNlcm5hbWU= 8 | postgres-password: cGFzc3dvcmQ= -------------------------------------------------------------------------------- /Kubernetes/k8s-redis-configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: redis-configmap 5 | data: 6 | database_url: redis-service -------------------------------------------------------------------------------- /Kubernetes/k8s-redis-pv-dockerdesktop.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolume 3 | metadata: 4 | name: redis-data-pv 5 | spec: 6 | capacity: 7 | storage: 1Gi 8 | volumeMode: Filesystem 9 | accessModes: 10 | - ReadWriteOnce 11 | persistentVolumeReclaimPolicy: Retain 12 | storageClassName: standard 13 | hostPath: 14 | # local directory c:\data\foxids-data\redis on Docker Desktop host machine 15 | path: "/run/desktop/mnt/host/c/data/foxids-data/redis" 16 | type: "" -------------------------------------------------------------------------------- /Kubernetes/k8s-redis-pvc-dockerdesktop.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: redis-data-pvc 5 | spec: 6 | storageClassName: standard 7 | accessModes: 8 | - ReadWriteOnce 9 | resources: 10 | requests: 11 | storage: 1Gi -------------------------------------------------------------------------------- /Kubernetes/k8s-redis-pvc-dynamic.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: redis-data-pvc 5 | spec: 6 | accessModes: 7 | - ReadWriteOnce 8 | resources: 9 | requests: 10 | storage: 1Gi 11 | #storageClassName: standard -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | # FoxIDs documentation 2 | This folder contains the FoxIDs documentation, the documentation is rendered [here](https://www.foxids.com/docs). 3 | -------------------------------------------------------------------------------- /docs/images/bridge.vsdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/bridge.vsdx -------------------------------------------------------------------------------- /docs/images/claims.vsdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/claims.vsdx -------------------------------------------------------------------------------- /docs/images/configure-authorization-code-flow-pkce.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-authorization-code-flow-pkce.png -------------------------------------------------------------------------------- /docs/images/configure-authorization-code-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-authorization-code-flow.png -------------------------------------------------------------------------------- /docs/images/configure-certificate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-certificate.png -------------------------------------------------------------------------------- /docs/images/configure-claim-task-auth-method.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-claim-task-auth-method.png -------------------------------------------------------------------------------- /docs/images/configure-claim-transform-app-reg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-claim-transform-app-reg.png -------------------------------------------------------------------------------- /docs/images/configure-claim-transform-auth-method.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-claim-transform-auth-method.png -------------------------------------------------------------------------------- /docs/images/configure-client-api-client.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-client-api-client.png -------------------------------------------------------------------------------- /docs/images/configure-client-api-resource.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-client-api-resource.png -------------------------------------------------------------------------------- /docs/images/configure-client-credentials-grant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-client-credentials-grant.png -------------------------------------------------------------------------------- /docs/images/configure-connections.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-connections.png -------------------------------------------------------------------------------- /docs/images/configure-default-scope-claims.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-default-scope-claims.png -------------------------------------------------------------------------------- /docs/images/configure-email-provider-environment-sendgrid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-email-provider-environment-sendgrid.png -------------------------------------------------------------------------------- /docs/images/configure-email-provider-environment-smtp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-email-provider-environment-smtp.png -------------------------------------------------------------------------------- /docs/images/configure-env-name-address.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-env-name-address.png -------------------------------------------------------------------------------- /docs/images/configure-environment-setting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-environment-setting.png -------------------------------------------------------------------------------- /docs/images/configure-environment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-environment.png -------------------------------------------------------------------------------- /docs/images/configure-external-claims-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-external-claims-config.png -------------------------------------------------------------------------------- /docs/images/configure-external-login-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-external-login-config.png -------------------------------------------------------------------------------- /docs/images/configure-external-login-ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-external-login-ui.png -------------------------------------------------------------------------------- /docs/images/configure-foxids_control_api.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-foxids_control_api.png -------------------------------------------------------------------------------- /docs/images/configure-implicit-code-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-implicit-code-flow.png -------------------------------------------------------------------------------- /docs/images/configure-jwt-saml-mappings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-jwt-saml-mappings.png -------------------------------------------------------------------------------- /docs/images/configure-log-stream-appinsight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-log-stream-appinsight.png -------------------------------------------------------------------------------- /docs/images/configure-log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-log.png -------------------------------------------------------------------------------- /docs/images/configure-login-2fa-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-login-2fa-example.png -------------------------------------------------------------------------------- /docs/images/configure-login-2fa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-login-2fa.png -------------------------------------------------------------------------------- /docs/images/configure-login-advanced.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-login-advanced.png -------------------------------------------------------------------------------- /docs/images/configure-login-css-backbround-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-login-css-backbround-image.png -------------------------------------------------------------------------------- /docs/images/configure-login-css-backbround-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-login-css-backbround-logo.png -------------------------------------------------------------------------------- /docs/images/configure-login-css-sample-test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-login-css-sample-test.png -------------------------------------------------------------------------------- /docs/images/configure-login-customisation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-login-customisation.png -------------------------------------------------------------------------------- /docs/images/configure-login-hrd-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-login-hrd-example.png -------------------------------------------------------------------------------- /docs/images/configure-login-hrd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-login-hrd.png -------------------------------------------------------------------------------- /docs/images/configure-login-session.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-login-session.png -------------------------------------------------------------------------------- /docs/images/configure-login-title-icon-css.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-login-title-icon-css.png -------------------------------------------------------------------------------- /docs/images/configure-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-login.png -------------------------------------------------------------------------------- /docs/images/configure-oauth-resource.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-oauth-resource.png -------------------------------------------------------------------------------- /docs/images/configure-oidc-auth-method.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-oidc-auth-method.png -------------------------------------------------------------------------------- /docs/images/configure-oidc-lifetime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-oidc-lifetime.png -------------------------------------------------------------------------------- /docs/images/configure-plan-tenant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-plan-tenant.png -------------------------------------------------------------------------------- /docs/images/configure-plan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-plan.png -------------------------------------------------------------------------------- /docs/images/configure-resource-scopes-client.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-resource-scopes-client.png -------------------------------------------------------------------------------- /docs/images/configure-resource-scopes-resource.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-resource-scopes-resource.png -------------------------------------------------------------------------------- /docs/images/configure-reverse-proxy-secret-firewall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-reverse-proxy-secret-firewall.png -------------------------------------------------------------------------------- /docs/images/configure-reverse-proxy-secret-permissions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-reverse-proxy-secret-permissions.png -------------------------------------------------------------------------------- /docs/images/configure-reverse-proxy-secret.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-reverse-proxy-secret.png -------------------------------------------------------------------------------- /docs/images/configure-saml-adfs-auth-method.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-saml-adfs-auth-method.png -------------------------------------------------------------------------------- /docs/images/configure-saml-app-reg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-saml-app-reg.png -------------------------------------------------------------------------------- /docs/images/configure-saml-auth-method-idp-initiated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-saml-auth-method-idp-initiated.png -------------------------------------------------------------------------------- /docs/images/configure-saml-auth-method.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-saml-auth-method.png -------------------------------------------------------------------------------- /docs/images/configure-saml-googleworkspace-add-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-saml-googleworkspace-add-app.png -------------------------------------------------------------------------------- /docs/images/configure-saml-googleworkspace-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-saml-googleworkspace-app.png -------------------------------------------------------------------------------- /docs/images/configure-saml-googleworkspace-auth-method.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-saml-googleworkspace-auth-method.png -------------------------------------------------------------------------------- /docs/images/configure-saml-googleworkspace-start-auth-method.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-saml-googleworkspace-start-auth-method.png -------------------------------------------------------------------------------- /docs/images/configure-saml-manual-auth-method.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-saml-manual-auth-method.png -------------------------------------------------------------------------------- /docs/images/configure-tenant-adminuser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-tenant-adminuser.png -------------------------------------------------------------------------------- /docs/images/configure-tenant-custom-domain-environment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-tenant-custom-domain-environment.png -------------------------------------------------------------------------------- /docs/images/configure-tenant-custom-domain-my-environment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-tenant-custom-domain-my-environment.png -------------------------------------------------------------------------------- /docs/images/configure-tenant-text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-tenant-text.png -------------------------------------------------------------------------------- /docs/images/configure-tenant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-tenant.png -------------------------------------------------------------------------------- /docs/images/configure-user-mfa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-user-mfa.png -------------------------------------------------------------------------------- /docs/images/configure-user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/configure-user.png -------------------------------------------------------------------------------- /docs/images/connections.vsdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/connections.vsdx -------------------------------------------------------------------------------- /docs/images/deployment-window-iis-add-website.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/deployment-window-iis-add-website.png -------------------------------------------------------------------------------- /docs/images/deployment-window-iis-my-cert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/deployment-window-iis-my-cert.png -------------------------------------------------------------------------------- /docs/images/environments.vsdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/environments.vsdx -------------------------------------------------------------------------------- /docs/images/example-claim-transform-name-to-given_name-family_name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/example-claim-transform-name-to-given_name-family_name.png -------------------------------------------------------------------------------- /docs/images/example-claim-transform-remove-post-auth-method-name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/example-claim-transform-remove-post-auth-method-name.png -------------------------------------------------------------------------------- /docs/images/faq-pass-through-all-claims-app-reg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/faq-pass-through-all-claims-app-reg.png -------------------------------------------------------------------------------- /docs/images/faq-pass-through-all-claims-auth-method.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/faq-pass-through-all-claims-auth-method.png -------------------------------------------------------------------------------- /docs/images/fqa-matching-issuer-authority.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/fqa-matching-issuer-authority.png -------------------------------------------------------------------------------- /docs/images/get-started-first-access.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/get-started-first-access.png -------------------------------------------------------------------------------- /docs/images/get-started-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/get-started-login.png -------------------------------------------------------------------------------- /docs/images/get-started-new-app-reg-conf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/get-started-new-app-reg-conf.png -------------------------------------------------------------------------------- /docs/images/get-started-new-app-reg-done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/get-started-new-app-reg-done.png -------------------------------------------------------------------------------- /docs/images/get-started-new-app-reg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/get-started-new-app-reg.png -------------------------------------------------------------------------------- /docs/images/get-started-test-user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/get-started-test-user.png -------------------------------------------------------------------------------- /docs/images/how-to-context-handler-foxids-idp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/how-to-context-handler-foxids-idp.png -------------------------------------------------------------------------------- /docs/images/how-to.vsdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/how-to.vsdx -------------------------------------------------------------------------------- /docs/images/howto-environmentlink-foxids-auth-method-select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-environmentlink-foxids-auth-method-select.png -------------------------------------------------------------------------------- /docs/images/howto-environmentlink-foxids-auth-method-y-select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-environmentlink-foxids-auth-method-y-select.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-amazon-cognito-app-client-client-id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-amazon-cognito-app-client-client-id.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-amazon-cognito-app-client-logout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-amazon-cognito-app-client-logout.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-amazon-cognito-app-client.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-amazon-cognito-app-client.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-amazon-cognito-authority.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-amazon-cognito-authority.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-amazon-cognito-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-amazon-cognito-config.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-amazon-cognito-urls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-amazon-cognito-urls.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-amazon-cognito-user-pool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-amazon-cognito-user-pool.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-amazon-iam-ic-acs-issuer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-amazon-iam-ic-acs-issuer.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-amazon-iam-ic-binding-format.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-amazon-iam-ic-binding-format.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-amazon-iam-ic-certificate-change.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-amazon-iam-ic-certificate-change.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-amazon-iam-ic-certificate-type.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-amazon-iam-ic-certificate-type.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-amazon-iam-ic-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-amazon-iam-ic-create.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-azuread-readredirect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-azuread-readredirect.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-facebook-app-details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-facebook-app-details.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-facebook-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-facebook-config.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-facebook-email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-facebook-email.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-facebook-readredirect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-facebook-readredirect.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-facebook-redirect-url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-facebook-redirect-url.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-facebook-select-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-facebook-select-login.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-foxids-auth-method-readredirect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-foxids-auth-method-readredirect.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-foxids-auth-method.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-foxids-auth-method.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-foxids-parallel-app-reg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-foxids-parallel-app-reg.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-google-appclient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-google-appclient.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-google-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-google-config.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-google-readredirect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-google-readredirect.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-google-scopes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-google-scopes.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-google-usertype.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-google-usertype.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-identityserver-readredirect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-identityserver-readredirect.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-nets-eid-broker-claim-transform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-nets-eid-broker-claim-transform.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-nets-eid-broker-external-user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-nets-eid-broker-external-user.png -------------------------------------------------------------------------------- /docs/images/howto-oidc-nets-eid-broker-profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-oidc-nets-eid-broker-profile.png -------------------------------------------------------------------------------- /docs/images/howto-saml-claim-mappings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-saml-claim-mappings.png -------------------------------------------------------------------------------- /docs/images/howto-saml-context-handler-app-base-config-reg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-saml-context-handler-app-base-config-reg.png -------------------------------------------------------------------------------- /docs/images/howto-saml-context-handler-app-base-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-saml-context-handler-app-base-config.png -------------------------------------------------------------------------------- /docs/images/howto-saml-context-handler-app-ct1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-saml-context-handler-app-ct1.png -------------------------------------------------------------------------------- /docs/images/howto-saml-context-handler-app-ct2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-saml-context-handler-app-ct2.png -------------------------------------------------------------------------------- /docs/images/howto-saml-context-handler-auth-attributes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-saml-context-handler-auth-attributes.png -------------------------------------------------------------------------------- /docs/images/howto-saml-context-handler-auth-nameidformat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-saml-context-handler-auth-nameidformat.png -------------------------------------------------------------------------------- /docs/images/howto-saml-context-handler-auth-read-metadata.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-saml-context-handler-auth-read-metadata.png -------------------------------------------------------------------------------- /docs/images/howto-saml-context-handler-certificate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-saml-context-handler-certificate.png -------------------------------------------------------------------------------- /docs/images/howto-saml-context-handler-new-environment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-saml-context-handler-new-environment.png -------------------------------------------------------------------------------- /docs/images/howto-saml-context-handler-test-user1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-saml-context-handler-test-user1.png -------------------------------------------------------------------------------- /docs/images/howto-saml-nemlogin3-auth-attributes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-saml-nemlogin3-auth-attributes.png -------------------------------------------------------------------------------- /docs/images/howto-saml-nemlogin3-auth-claims.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-saml-nemlogin3-auth-claims.png -------------------------------------------------------------------------------- /docs/images/howto-saml-nemlogin3-auth-contact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-saml-nemlogin3-auth-contact.png -------------------------------------------------------------------------------- /docs/images/howto-saml-nemlogin3-auth-nameidformat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-saml-nemlogin3-auth-nameidformat.png -------------------------------------------------------------------------------- /docs/images/howto-saml-nemlogin3-auth-read-metadata.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-saml-nemlogin3-auth-read-metadata.png -------------------------------------------------------------------------------- /docs/images/howto-saml-nemlogin3-auth-req-ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-saml-nemlogin3-auth-req-ext.png -------------------------------------------------------------------------------- /docs/images/howto-saml-nemlogin3-auth-top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-saml-nemlogin3-auth-top.png -------------------------------------------------------------------------------- /docs/images/howto-saml-nemlogin3-certificate-container-type.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-saml-nemlogin3-certificate-container-type.png -------------------------------------------------------------------------------- /docs/images/howto-saml-nemlogin3-certificate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-saml-nemlogin3-certificate.png -------------------------------------------------------------------------------- /docs/images/howto-saml-nemlogin3-claim-mappings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-saml-nemlogin3-claim-mappings.png -------------------------------------------------------------------------------- /docs/images/howto-saml-nemlogin3-id-type.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-saml-nemlogin3-id-type.png -------------------------------------------------------------------------------- /docs/images/howto-saml-nemlogin3-log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-saml-nemlogin3-log.png -------------------------------------------------------------------------------- /docs/images/howto-saml-nemlogin3-nsis-level.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-saml-nemlogin3-nsis-level.png -------------------------------------------------------------------------------- /docs/images/howto-saml-privilege-claim-tf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/howto-saml-privilege-claim-tf.png -------------------------------------------------------------------------------- /docs/images/language-danish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/language-danish.png -------------------------------------------------------------------------------- /docs/images/language-french.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/language-french.png -------------------------------------------------------------------------------- /docs/images/language-german.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/language-german.png -------------------------------------------------------------------------------- /docs/images/language-spanish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/language-spanish.png -------------------------------------------------------------------------------- /docs/images/main-tenant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/main-tenant.png -------------------------------------------------------------------------------- /docs/images/master-seed-tool-client.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/master-seed-tool-client.png -------------------------------------------------------------------------------- /docs/images/master-tenant-admin-user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/master-tenant-admin-user.png -------------------------------------------------------------------------------- /docs/images/master-tenant2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/master-tenant2.png -------------------------------------------------------------------------------- /docs/images/sample_seed-client.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/sample_seed-client.png -------------------------------------------------------------------------------- /docs/images/search-logs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/search-logs.png -------------------------------------------------------------------------------- /docs/images/search-usage-logs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/search-usage-logs.png -------------------------------------------------------------------------------- /docs/images/seed-tool-client.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/seed-tool-client.png -------------------------------------------------------------------------------- /docs/images/structure.vsdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/structure.vsdx -------------------------------------------------------------------------------- /docs/images/token-exchange-config-app-reg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/token-exchange-config-app-reg.png -------------------------------------------------------------------------------- /docs/images/token-exchange-config-auth-method.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/token-exchange-config-auth-method.png -------------------------------------------------------------------------------- /docs/images/token-exchange-oauth-by-trust-app-reg-client.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/token-exchange-oauth-by-trust-app-reg-client.png -------------------------------------------------------------------------------- /docs/images/token-exchange-oauth-by-trust-auth-method.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/token-exchange-oauth-by-trust-auth-method.png -------------------------------------------------------------------------------- /docs/images/token-exchange-oauth-same-environment-app-reg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/token-exchange-oauth-same-environment-app-reg.png -------------------------------------------------------------------------------- /docs/images/token-exchange-oidc-same-environment-app-reg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/token-exchange-oidc-same-environment-app-reg.png -------------------------------------------------------------------------------- /docs/images/token-exchange-saml-by-trust-app-reg-client.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/token-exchange-saml-by-trust-app-reg-client.png -------------------------------------------------------------------------------- /docs/images/token-exchange-saml-by-trust-auth-method.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/token-exchange-saml-by-trust-auth-method.png -------------------------------------------------------------------------------- /docs/images/token-exchange.vsdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/token-exchange.vsdx -------------------------------------------------------------------------------- /docs/images/user-create-new-account-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/user-create-new-account-config.png -------------------------------------------------------------------------------- /docs/images/user-create-new-account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/user-create-new-account.png -------------------------------------------------------------------------------- /docs/images/user-email-phone-username-user-identifier.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/user-email-phone-username-user-identifier.png -------------------------------------------------------------------------------- /docs/images/user-external-auth-method-redemption.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/user-external-auth-method-redemption.png -------------------------------------------------------------------------------- /docs/images/user-external-create-new-account-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/user-external-create-new-account-config.png -------------------------------------------------------------------------------- /docs/images/user-external-create-new-account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/user-external-create-new-account.png -------------------------------------------------------------------------------- /docs/images/user-external-redemption.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/user-external-redemption.png -------------------------------------------------------------------------------- /docs/images/user-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/user-login.png -------------------------------------------------------------------------------- /docs/images/user-phone-user-identifier.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/docs/images/user-phone-user-identifier.png -------------------------------------------------------------------------------- /src/FoxIDs.Control/Controllers/Base/HealthController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | 3 | namespace FoxIDs.Controllers 4 | { 5 | [Route(Constants.Routes.HealthController)] 6 | public class HealthController : Controller 7 | { 8 | [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] 9 | [HttpGet] 10 | public IActionResult Index() 11 | { 12 | return Ok(); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/FoxIDs.Control/Infrastructure/Hosting/OpenSearchClientQueryLog.cs: -------------------------------------------------------------------------------- 1 | using OpenSearch.Client; 2 | 3 | namespace FoxIDs.Infrastructure.Hosting 4 | { 5 | public class OpenSearchClientQueryLog : OpenSearchClient 6 | { 7 | public OpenSearchClientQueryLog(IConnectionSettingsValues connectionSettings) : base(connectionSettings) 8 | { } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/FoxIDs.Control/Infrastructure/Security/JwtBearerMultipleTenantsOptions.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Authentication; 2 | 3 | namespace FoxIDs.Infrastructure.Security 4 | { 5 | public class JwtBearerMultipleTenantsOptions : AuthenticationSchemeOptions 6 | { 7 | public string FoxIDsEndpoint { get; set; } 8 | public string DownParty { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/FoxIDs.Control/Models/ApplicationInsightsQuery.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models 2 | { 3 | public class ApplicationInsightsQuery 4 | { 5 | public string Query { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/FoxIDs.Control/Models/Config/PaymentSettings.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Config 2 | { 3 | public class PaymentSettings 4 | { 5 | public bool TestMode { get; set; } = false; 6 | public bool EnablePayment => !string.IsNullOrWhiteSpace(MollieApiKey) && !string.IsNullOrWhiteSpace(MollieProfileId); 7 | 8 | public string MollieApiKey { get; set; } 9 | public string MollieProfileId { get; set; } 10 | public string MollieApiUrl { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs.Control/Models/ExternalInvoices/InvoiceResponse.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.ExternalInvoices 4 | { 5 | public class InvoiceResponse 6 | { 7 | [Required] 8 | public string InvoiceNumber { get; set; } 9 | 10 | /// 11 | /// Base64 encoded PDF invoice. 12 | /// 13 | public string PdfInvoice { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/FoxIDs.Control/Models/ExternalInvoices/UsedItemTypes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.ExternalInvoices 2 | { 3 | public enum UsedItemTypes 4 | { 5 | /// 6 | /// One item with a text. 7 | /// 8 | Text = 10, 9 | /// 10 | /// A number of hours. 11 | /// 12 | Hours = 100 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.Control/Models/LogErrorMessageItem.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System.Collections.Generic; 3 | 4 | namespace FoxIDs.Models 5 | { 6 | public class LogErrorMessageItem 7 | { 8 | [JsonProperty(PropertyName = "m")] 9 | public string Message { get; set; } 10 | 11 | [JsonProperty(PropertyName = "s")] 12 | public IEnumerable StackTrace { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.Control/Models/LogExceptionDetail.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System.Collections.Generic; 3 | 4 | namespace FoxIDs.Models 5 | { 6 | public class LogExceptionDetail 7 | { 8 | [JsonProperty(PropertyName = "message")] 9 | public string Message { get; set; } 10 | 11 | [JsonProperty(PropertyName = "parsedStack")] 12 | public List ParsedStack { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.Control/Models/LogTraceMessageItem.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace FoxIDs.Models 4 | { 5 | public class LogTraceMessageItem 6 | { 7 | [JsonProperty(PropertyName = "m")] 8 | public string Message { get; set; } 9 | 10 | [JsonProperty(PropertyName = "message")] 11 | public string MessageOld { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs.Control/Models/Payments/MolliePaymentDetailsResponse.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace FoxIDs.Models.Payments 4 | { 5 | public class MolliePaymentDetailsResponse 6 | { 7 | [JsonProperty(PropertyName = "failureReason")] 8 | public string FailureReason { get; set; } 9 | 10 | [JsonProperty(PropertyName = "failureMessage")] 11 | public string FailureMessage { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs.Control/Models/Payments/MolliePaymentLinkResponse.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace FoxIDs.Models.Payments 4 | { 5 | public class MolliePaymentLinkResponse 6 | { 7 | [JsonProperty(PropertyName = "ref")] 8 | public string Href { get; set; } 9 | 10 | [JsonProperty(PropertyName = "type")] 11 | public string Type { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs.Control/Models/Payments/MolliePaymentLinksResponse.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace FoxIDs.Models.Payments 4 | { 5 | public class MolliePaymentLinksResponse 6 | { 7 | [JsonProperty(PropertyName = "self")] 8 | public string Self { get; set; } 9 | 10 | [JsonProperty(PropertyName = "checkout")] 11 | public string Checkout { get; set; } 12 | 13 | [JsonProperty(PropertyName = "documentation")] 14 | public string Documentation { get; set; } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/FoxIDs.Control/Models/Queues/UpPartyHrdQueueMessageActions.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Queues 2 | { 3 | public enum UpPartyHrdQueueMessageActions 4 | { 5 | None = 0, 6 | Update = 10, 7 | UpdateProfile = 11, 8 | Remove = 20, 9 | RemoveProfile = 21, 10 | ChangeName = 30, 11 | ChangeProfileName = 31, 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs.Control/Models/ViewModels/ClientViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.ViewModels 2 | { 3 | public class ClientViewModel 4 | { 5 | public string TenantName { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/FoxIDs.Control/web.Release.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/FoxIDs.Control/wwwroot/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: / 3 | Allow: /api/swagger/ -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Extensions/DictionaryExtensions.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace FoxIDs.Client 4 | { 5 | public static class DictionaryExtensions 6 | { 7 | public static string GetValue(this Dictionary dictionary, string key) 8 | { 9 | if(dictionary != null && dictionary.ContainsKey(key)) 10 | { 11 | return dictionary[key]; 12 | } 13 | return null; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Extensions/MapperExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Client 4 | { 5 | public static class MapperExtensions 6 | { 7 | public static T Map(this object inObj, Action afterMap = null) 8 | { 9 | var json = inObj.JsonSerialize(); 10 | var outObj = json.JsonDeserialize(); 11 | afterMap?.Invoke(outObj); 12 | return outObj; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Extensions/TimeExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Client 4 | { 5 | public static class TimeExtensions 6 | { 7 | public static string TimeToString(this long time) 8 | { 9 | var dateTimeOffset = DateTimeOffset.FromUnixTimeSeconds(time); 10 | return dateTimeOffset.ToLocalTime().ToString(); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ExternalLoginTabTypes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Client.Models 2 | { 3 | public enum ExternalLoginTabTypes 4 | { 5 | ExternalLogin, 6 | ClaimsTransform, 7 | LinkExternalUser, 8 | Hrd, 9 | Profile, 10 | Session 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/LoginTabTypes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Client.Models 2 | { 3 | public enum LoginTabTypes 4 | { 5 | Login, 6 | ClaimsTransform, 7 | CreateUser, 8 | Session, 9 | Hrd 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/OAuthTabTypes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Client.Models 2 | { 3 | public enum OAuthTabTypes 4 | { 5 | Client, 6 | Resource, 7 | ClaimsTransform, 8 | LinkExternalUser, 9 | Hrd, 10 | Profile, 11 | Session 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/SamlTabTypes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Client.Models 2 | { 3 | public enum SamlTabTypes 4 | { 5 | Saml, 6 | ClaimsTransform, 7 | LinkExternalUser, 8 | Hrd, 9 | Profile, 10 | Session 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/TrackLinkTabTypes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Client.Models 2 | { 3 | public enum TrackLinkTabTypes 4 | { 5 | TrackLink, 6 | ClaimsTransform, 7 | LinkExternalUser, 8 | Hrd, 9 | Profile, 10 | Session 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/FilterResourceViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Client.Models.ViewModels 4 | { 5 | public class FilterResourceViewModel 6 | { 7 | /// 8 | /// Search by text or ID. 9 | /// 10 | [MaxLength(Constants.Models.Resource.NameLength)] 11 | [Display(Name = "Search for text or ID")] 12 | public string FilterName { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Master/FilterPlanViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Client.Models.ViewModels 4 | { 5 | public class FilterPlanViewModel 6 | { 7 | /// 8 | /// Search by plan name. 9 | /// 10 | [MaxLength(Constants.Models.Plan.NameLength)] 11 | [Display(Name = "Search plan")] 12 | public string FilterName { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Master/FilterSmsPriceViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Client.Models.ViewModels 4 | { 5 | public class FilterSmsPriceViewModel 6 | { 7 | /// 8 | /// Search by country name and ISO2. 9 | /// 10 | [MaxLength(Constants.Models.SmsPrices.CountryNameLength)] 11 | [Display(Name = "Search SMS price")] 12 | public string FilterName { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Master/LogLifetimeOptionsVievModel.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public enum LogLifetimeOptionsVievModel 4 | { 5 | Null = 1, 6 | Max30Days = 30, 7 | Max180Days = 180, 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Parties/DownPartyOAuthClientTypes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Client.Models.ViewModels 2 | { 3 | public enum DownPartyOAuthClientTypes 4 | { 5 | Confidential, 6 | Public, 7 | PublicNative 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Parties/DownPartyOAuthTypes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Client.Models.ViewModels 2 | { 3 | public enum DownPartyOAuthTypes 4 | { 5 | Client, 6 | Resource, 7 | ClientAndResource 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Parties/DynamicElementViewModel.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.Models.Api; 2 | 3 | namespace FoxIDs.Client.Models.ViewModels 4 | { 5 | public class DynamicElementViewModel : DynamicElement 6 | { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Parties/FilterDownPartyViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Client.Models.ViewModels 4 | { 5 | public class FilterDownPartyViewModel 6 | { 7 | /// 8 | /// Search by application name. 9 | /// 10 | [MaxLength(Constants.Models.Party.NameLength)] 11 | [Display(Name = "Filter applications")] 12 | public string FilterName { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Parties/FilterUpPartyViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Client.Models.ViewModels 4 | { 5 | public class FilterUpPartyViewModel 6 | { 7 | /// 8 | /// Search by authentication method name. 9 | /// 10 | [MaxLength(Constants.Models.Party.NameLength)] 11 | [Display(Name = "Filter authentication methods")] 12 | public string FilterName { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Parties/IAllowUpPartyNames.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.Models.Api; 2 | using System.Collections.Generic; 3 | using System.ComponentModel.DataAnnotations; 4 | 5 | namespace FoxIDs.Client.Models.ViewModels 6 | { 7 | public interface IAllowUpPartyNames 8 | { 9 | [Display(Name = "Allowed authentication methods")] 10 | List AllowUpParties { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Parties/IClientAdditionalParameters.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.Models.Api; 2 | using System.Collections.Generic; 3 | using System.ComponentModel.DataAnnotations; 4 | 5 | namespace FoxIDs.Client.Models.ViewModels 6 | { 7 | public interface IClientAdditionalParameters 8 | { 9 | [Display(Name = "Additional parameters")] 10 | public List AdditionalParameters { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Parties/IClientSecret.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.ComponentModel.DataAnnotations; 3 | 4 | namespace FoxIDs.Client.Models.ViewModels 5 | { 6 | public interface IClientSecret 7 | { 8 | [Display(Name = "Secrets")] 9 | List Secrets { get; set; } 10 | 11 | List ExistingSecrets { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Parties/IDownPartyName.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Client.Models.ViewModels 2 | { 3 | public interface IDownPartyName 4 | { 5 | string Name { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Parties/IDynamicElementsViewModel.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.Infrastructure.DataAnnotations; 2 | using System.Collections.Generic; 3 | 4 | namespace FoxIDs.Client.Models.ViewModels 5 | { 6 | public interface IDynamicElementsViewModel 7 | { 8 | [ListLength(Constants.Models.DynamicElements.ElementsMin, Constants.Models.DynamicElements.ElementsMax)] 9 | public List Elements { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Parties/IGeneralOAuthDownPartyTabViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Client.Models.ViewModels 2 | { 3 | public interface IGeneralOAuthDownPartyTabViewModel 4 | { 5 | bool ShowClientTab { get; set; } 6 | bool ShowResourceTab { get; set; } 7 | bool ShowClaimTransformTab { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Parties/IGeneralOAuthUpPartyTabViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Client.Models.ViewModels 2 | { 3 | public interface IGeneralOAuthUpPartyTabViewModel 4 | { 5 | bool ShowClientTab { get; set; } 6 | bool ShowClaimTransformTab { get; set; } 7 | public bool ShowLinkExternalUserTab { get; set; } 8 | public bool ShowHrdTab { get; set; } 9 | public bool ShowProfileTab { get; set; } 10 | public bool ShowSessionTab { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Parties/ISamlMetadataOrganizationVievModel.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.Models.Api; 2 | using System.ComponentModel.DataAnnotations; 3 | 4 | namespace FoxIDs.Client.Models.ViewModels 5 | { 6 | public interface ISamlMetadataOrganizationVievModel 7 | { 8 | [ValidateComplexType] 9 | [Display(Name = "Optional organization in metadata")] 10 | public SamlMetadataOrganization MetadataOrganization { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Parties/OAuthClientSecretViewModel.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.Models.Api; 2 | 3 | namespace FoxIDs.Client.Models.ViewModels 4 | { 5 | public class OAuthClientSecretViewModel : OAuthClientSecretResponse 6 | { 7 | public bool Removed { get; set; } = false; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Parties/OAuthDownScopeViewModel.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.Models.Api; 2 | 3 | namespace FoxIDs.Client.Models.ViewModels 4 | { 5 | public class OAuthDownScopeViewModel : OAuthDownScope 6 | { 7 | public bool ShowVoluntaryClaims { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Parties/OidcDownScopeViewModel.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.Models.Api; 2 | 3 | namespace FoxIDs.Client.Models.ViewModels 4 | { 5 | public class OidcDownScopeViewModel : OidcDownScope 6 | { 7 | public bool ShowVoluntaryClaims { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Parties/OidcUpPartyProfileViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Client.Models.ViewModels 4 | { 5 | public class OidcUpPartyProfileViewModel : UpPartyProfileViewModel 6 | { 7 | [Required] 8 | public OidcUpClientProfileViewModel Client { get; set; } = new OidcUpClientProfileViewModel(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Parties/SamlAuthnContextComparisonTypesVievModel.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Client.Models.ViewModels 2 | { 3 | public enum SamlAuthnContextComparisonTypesVievModel 4 | { 5 | Null = 1, 6 | Exact = 10, 7 | Minimum = 20, 8 | Maximum = 30, 9 | Better = 40, 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Parties/X509RevocationMode.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Client.Models.ViewModels 2 | { 3 | /// 4 | /// Added because System.Security.Cryptography.X509Certificates is not supported in the browser. 5 | /// 6 | public enum X509RevocationMode 7 | { 8 | NoCheck, 9 | Online, 10 | Offline 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Tenants/FilterTenantViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Client.Models.ViewModels 4 | { 5 | public class FilterTenantViewModel 6 | { 7 | /// 8 | /// Search by tenant name and custom domain. 9 | /// 10 | [MaxLength(Constants.Models.Tenant.CustomDomainLength)] 11 | [Display(Name = "Search tenant")] 12 | public string FilterValue { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Tenants/GeneralUsageSettingsViewModel.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.Client.Shared.Components; 2 | 3 | namespace FoxIDs.Client.Models.ViewModels 4 | { 5 | public class GeneralUsageSettingsViewModel 6 | { 7 | public GeneralUsageSettingsViewModel() 8 | { } 9 | 10 | public string Error { get; set; } 11 | 12 | public PageEditForm Form { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Tenants/MolliePaymentErrorResult.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Client.Models.ViewModels 2 | { 3 | public class MolliePaymentErrorResult 4 | { 5 | public object Message { get; set; } 6 | 7 | public string Detail { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Tenants/MolliePaymentResult.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Client.Models.ViewModels 2 | { 3 | public class MolliePaymentResult 4 | { 5 | public string Token { get; set; } 6 | 7 | public MolliePaymentErrorResult Error { get; set; } 8 | 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Tenants/TestRiskPasswordViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Client.Models.ViewModels 4 | { 5 | public class TestRiskPasswordViewModel 6 | { 7 | [Required] 8 | [MaxLength(Constants.Models.Track.PasswordLengthMax)] 9 | [DataType(DataType.Password)] 10 | public string Password { get; set; } 11 | 12 | public bool? IsValid { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Tenants/UsageSettingsViewModel.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.Models.Api; 2 | using System.Collections.Generic; 3 | 4 | namespace FoxIDs.Client.Models.ViewModels 5 | { 6 | public class UsageSettingsViewModel : UsageSettings 7 | { 8 | public UsageSettingsViewModel() 9 | { 10 | CurrencyExchanges = new List(); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Tenants/UsedViewModel.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.Models.Api; 2 | using System.Collections.Generic; 3 | 4 | namespace FoxIDs.Client.Models.ViewModels 5 | { 6 | public class UsedViewModel : Used 7 | { 8 | public UsedViewModel() 9 | { 10 | Items = new List(); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Tracks/ClaimMappingViewModel.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.Models.Api; 2 | using System.Collections.Generic; 3 | using System.ComponentModel.DataAnnotations; 4 | 5 | namespace FoxIDs.Client.Models.ViewModels 6 | { 7 | public class ClaimMappingViewModel 8 | { 9 | [Display(Name = "Mappings between JWT and SAML claim types")] 10 | public List ClaimMappings { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Tracks/FilterTrackViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Client.Models.ViewModels 4 | { 5 | public class FilterTrackViewModel 6 | { 7 | /// 8 | /// Search by environment name. 9 | /// 10 | [MaxLength(Constants.Models.Track.NameLength)] 11 | [Display(Name = "Filter environments")] 12 | public string FilterName { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Tracks/FilterUserViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Client.Models.ViewModels 4 | { 5 | public class FilterUserViewModel 6 | { 7 | /// 8 | /// Search by user email. 9 | /// 10 | [MaxLength(Constants.Models.User.UsernameLength)] 11 | [Display(Name = "Search user")] 12 | public string FilterValue { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Tracks/GeneralLogSettingsViewModel.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.Client.Shared.Components; 2 | using FoxIDs.Models.Api; 3 | 4 | namespace FoxIDs.Client.Models.ViewModels 5 | { 6 | public class GeneralLogSettingsViewModel 7 | { 8 | public GeneralLogSettingsViewModel() 9 | { } 10 | 11 | public string Error { get; set; } 12 | 13 | public PageEditForm Form { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Tracks/LogItemDetailViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace FoxIDs.Client.Models.ViewModels 4 | { 5 | public class LogItemDetailViewModel 6 | { 7 | public string Name { get; set; } 8 | 9 | public List Details { get; set; } 10 | 11 | public bool ShowDetails { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Tracks/LogQueryTypes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Client.Models.ViewModels 2 | { 3 | public static class LogQueryTypes 4 | { 5 | public const string Errors = "Errors"; 6 | public const string Warnings = "Warnings"; 7 | public const string Traces = "traces"; 8 | public const string Events = "events"; 9 | public const string Metrics = "metrics"; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Tracks/LogResponseViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace FoxIDs.Client.Models.ViewModels 4 | { 5 | public class LogResponseViewModel 6 | { 7 | public List Items { get; set; } 8 | 9 | public bool ResponseTruncated { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Tracks/LogTimeIntervals.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Client.Models.ViewModels 2 | { 3 | public enum LogTimeIntervals 4 | { 5 | ThirtySeconds = 30, 6 | OneMinute = 60, 7 | FiveMinutes = 300, 8 | FifteenMinutes = 900, 9 | ThirtyMinutes = 1800, 10 | OneHour = 3600, 11 | SixHours = 21600, 12 | TwelveHours = 43200, 13 | TwentyfourHours = 86400, 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Tracks/MailProviders.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Client.Models.ViewModels 2 | { 3 | public enum MailProviders 4 | { 5 | SendGrid, 6 | Smtp 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Models/ViewModels/Tracks/TrackCertificateInfoViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Client.Models.ViewModels 2 | { 3 | public class TrackCertificateInfoViewModel : KeyInfoViewModel 4 | { 5 | public bool IsPrimary { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Pages/DownPartiesLink.razor: -------------------------------------------------------------------------------- 1 | @page "/{tenantName}/downparties" 2 | @inherits PageBase 3 | @inject RouteBindingLogic routeBinding 4 | @inject NavigationManager NavigationManager 5 | 6 | @code { 7 | [Parameter] 8 | public string TenantName { get; set; } 9 | 10 | protected override void OnInitialized() 11 | { 12 | NavigationManager.NavigateTo($"{TenantName}/applications"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Pages/MasterTenantPaymentLink.razor: -------------------------------------------------------------------------------- 1 | @page "/{tenantName}/tenantpaymentresponse" 2 | @inherits PageBase 3 | @inject RouteBindingLogic routeBinding 4 | @inject NavigationManager NavigationManager 5 | 6 | @code { 7 | [Parameter] 8 | public string TenantName { get; set; } 9 | 10 | protected override void OnInitialized() 11 | { 12 | NavigationManager.NavigateTo($"{TenantName}/tenant", true); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Pages/UpPartiesLink.razor: -------------------------------------------------------------------------------- 1 | @page "/{tenantName}/upparties" 2 | @inherits PageBase 3 | @inject RouteBindingLogic routeBinding 4 | @inject NavigationManager NavigationManager 5 | 6 | @code { 7 | [Parameter] 8 | public string TenantName { get; set; } 9 | 10 | protected override void OnInitialized() 11 | { 12 | NavigationManager.NavigateTo($"{TenantName}/authentication"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Pages/Users/UsersLink.razor: -------------------------------------------------------------------------------- 1 | @page "/{tenantName}/users" 2 | @inherits PageBase 3 | @inject RouteBindingLogic routeBinding 4 | @inject NavigationManager NavigationManager 5 | 6 | @code { 7 | [Parameter] 8 | public string TenantName { get; set; } 9 | 10 | protected override void OnInitialized() 11 | { 12 | NavigationManager.NavigateTo($"{TenantName}/internalusers"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Shared/Components/FFieldNumberD.razor: -------------------------------------------------------------------------------- 1 | @inherits FInputBase 2 | 3 | 4 | 5 | 6 | @CurrentValue 7 | 8 | 9 | 10 | 11 | 12 | @code { 13 | [Parameter] 14 | public string Class { get; set; } 15 | } 16 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Shared/Components/FFieldText.razor: -------------------------------------------------------------------------------- 1 | @inherits FInputBase 2 | 3 | 4 | 5 | 6 | @CurrentValue 7 | 8 | 9 | 10 | 11 | 12 | @code { 13 | [Parameter] 14 | public string Class { get; set; } 15 | } 16 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Shared/Components/FInputNumber.razor: -------------------------------------------------------------------------------- 1 | @inherits FInputBase 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Shared/Components/FInputNumberD.razor: -------------------------------------------------------------------------------- 1 | @inherits FInputBase 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | @code { 10 | [Parameter] 11 | public string LabelText { get; set; } 12 | } -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Shared/Components/FInputNumberDN.razor: -------------------------------------------------------------------------------- 1 | @inherits FInputBase 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | @code { 10 | [Parameter] 11 | public string LabelText { get; set; } 12 | } -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Shared/Components/FInputNumberL.razor: -------------------------------------------------------------------------------- 1 | @inherits FInputBase 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Shared/Components/FInputNumberLN.razor: -------------------------------------------------------------------------------- 1 | @inherits FInputBase 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Shared/Components/FInputNumberN.razor: -------------------------------------------------------------------------------- 1 | @inherits FInputBase 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Shared/Components/FInputTextArea.razor: -------------------------------------------------------------------------------- 1 | @inherits FInputBase 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Shared/Components/FTextClipboard.razor: -------------------------------------------------------------------------------- 1 | @Text await ClipboardLogic.WriteTextAsync(Text))"> 2 | 3 | @code { 4 | [Inject] 5 | public ClipboardLogic ClipboardLogic { get; set; } 6 | 7 | [Parameter] 8 | public string Text { get; set; } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Shared/Components/FTextLinkClipboard.razor: -------------------------------------------------------------------------------- 1 | @Text await ClipboardLogic.WriteTextAsync(Text))"> 2 | 3 | @code { 4 | [Inject] 5 | public ClipboardLogic ClipboardLogic { get; set; } 6 | 7 | [Parameter] 8 | public string Text { get; set; } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Shared/Components/PageEditForm.razor: -------------------------------------------------------------------------------- 1 | @typeparam TModel 2 | 3 | 4 | 5 | @if (!error.IsNullOrWhiteSpace()) 6 | { 7 | 8 | @error 9 | 10 | } 11 | 12 | @ChildContent 13 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Shared/EmptyLayout.razor: -------------------------------------------------------------------------------- 1 | @inherits LayoutComponentBase 2 | 3 | @Body -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Shared/HeaderLayout.razor: -------------------------------------------------------------------------------- 1 | @inherits LayoutComponentBase 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | @Body 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Shared/TenantOidcRedirectToLogin.razor: -------------------------------------------------------------------------------- 1 | @inject OpenidConnectPkce openidConnectPkce 2 | 3 | @code { 4 | protected override async Task OnInitializedAsync() 5 | { 6 | await (openidConnectPkce as TenantOpenidConnectPkce).TenantLoginAsync(); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/Util/SecretGenerator.cs: -------------------------------------------------------------------------------- 1 | using ITfoxtec.Identity.Util; 2 | 3 | namespace FoxIDs.Client.Util 4 | { 5 | public static class SecretGenerator 6 | { 7 | public static string GenerateNewSecret() 8 | { 9 | return RandomGenerator.Generate(32); 10 | } 11 | 12 | public static string GenerateNewPassword() 13 | { 14 | return RandomGenerator.GenerateSimplePassword(8); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/wwwroot/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Settings": { 3 | "Authority": "{foxids_endpoint}/{tenant_name}/master/{client_id}(*)/", 4 | "LoginCallBackPath": "{tenant_name}/authentication/login_callback", 5 | "LogoutCallBackPath": "{tenant_name}/authentication/logout_callback" 6 | } 7 | } -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/wwwroot/css/open-iconic/font/fonts/open-iconic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/src/FoxIDs.ControlClient/wwwroot/css/open-iconic/font/fonts/open-iconic.eot -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/wwwroot/css/open-iconic/font/fonts/open-iconic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/src/FoxIDs.ControlClient/wwwroot/css/open-iconic/font/fonts/open-iconic.otf -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/src/FoxIDs.ControlClient/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/wwwroot/css/open-iconic/font/fonts/open-iconic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/src/FoxIDs.ControlClient/wwwroot/css/open-iconic/font/fonts/open-iconic.woff -------------------------------------------------------------------------------- /src/FoxIDs.ControlClient/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/src/FoxIDs.ControlClient/wwwroot/favicon.ico -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/FoxIDs.ControlShared.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 1.18.4 6 | FoxIDs 7 | Anders Revsgaard 8 | FoxIDs 9 | Copyright © 2025 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Base/IClaimTransform.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace FoxIDs.Models.Api 4 | { 5 | public interface IClaimTransform where T : ClaimTransform 6 | { 7 | List ClaimTransforms { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Base/IDownParty.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace FoxIDs.Models.Api 5 | { 6 | public interface IDownParty 7 | { 8 | List AllowUpParties { get; set; } 9 | 10 | [Obsolete($"Please use {nameof(AllowUpParties)} instead.")] 11 | List AllowUpPartyNames { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Base/IEmailValue.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public interface IEmailValue 4 | { 5 | string Email { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Base/INameValue.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public interface INameValue 4 | { 5 | string Name { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Base/INewNameValue.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public interface INewNameValue : INameValue 4 | { 5 | string NewName { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Base/IProfile.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public interface IProfile : INameValue, INewNameValue 4 | { 5 | string DisplayName { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Base/PaginationResponse.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace FoxIDs.Models.Api 4 | { 5 | public class PaginationResponse 6 | { 7 | public HashSet Data { get; set; } 8 | 9 | public string PaginationToken { get; set; } 10 | 11 | public int Limit { get; set; } = Constants.Models.ListPageSize; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/CertificateInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Models.Api 4 | { 5 | public class CertificateInfo 6 | { 7 | public string Subject { get; set; } 8 | public DateTime ValidFrom { get; set; } 9 | public DateTime ValidTo { get; set; } 10 | public string Thumbprint { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Config/Options/KeyStorageOptions.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public enum KeyStorageOptions 4 | { 5 | None = 100, 6 | KeyVault = 1100, 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Config/Options/LogOptions.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public enum LogOptions 4 | { 5 | Stdout = 1000, 6 | OpenSearchAndStdoutErrors = 1010, 7 | ApplicationInsights = 1100, 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Helpers/JwtWithCertificateInfo.cs: -------------------------------------------------------------------------------- 1 | using ITfoxtec.Identity.Models; 2 | 3 | namespace FoxIDs.Models.Api 4 | { 5 | public class JwkWithCertificateInfo : JsonWebKey 6 | { 7 | public CertificateInfo CertificateInfo { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Helpers/NewPartyName.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public class NewPartyName 4 | { 5 | public string Name { get; set; } 6 | 7 | public bool IsUpParty { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Helpers/PlanInfo.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.Api 4 | { 5 | public class PlanInfo 6 | { 7 | [Display(Name = "Technical plan name")] 8 | public string Name { get; set; } 9 | 10 | [Display(Name = "Plan name")] 11 | public string DisplayName { get; set; } 12 | 13 | [Display(Name = "Cost per month")] 14 | public decimal CostPerMonth { get; set; } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Master/LogLifetimeOptions.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public enum LogLifetimeOptions 4 | { 5 | Max30Days = 30, 6 | Max180Days = 180, 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Master/ResourceCultureItem.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System.ComponentModel.DataAnnotations; 3 | 4 | namespace FoxIDs.Models.Api 5 | { 6 | public class ResourceCultureItem 7 | { 8 | [Required] 9 | [MaxLength(Constants.Models.Resource.CultureLength)] 10 | public string Culture { get; set; } 11 | 12 | [Required] 13 | [MaxLength(Constants.Models.Resource.ValueLength)] 14 | public string Value { get; set; } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Master/ResourceName.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.Api 4 | { 5 | public class ResourceName 6 | { 7 | [Required] 8 | [MaxLength(Constants.Models.Resource.NameLength)] 9 | public string Name { get; set; } 10 | 11 | [Required] 12 | public int Id { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Master/RiskPasswordDelete.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.Infrastructure.DataAnnotations; 2 | using System.Collections.Generic; 3 | 4 | namespace FoxIDs.Models.Api 5 | { 6 | public class RiskPasswordDelete 7 | { 8 | [ListLength(Constants.ControlApi.SaveAndDeleteManyMin, Constants.ControlApi.SaveAndDeleteManyMax)] 9 | public List PasswordSha1Hashs { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Master/RiskPasswordInfo.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.Api 4 | { 5 | public class RiskPasswordInfo 6 | { 7 | [Display(Name = "Risk password count")] 8 | public long? RiskPasswordCount { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Master/RiskPasswordRequest.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.Infrastructure.DataAnnotations; 2 | using System.Collections.Generic; 3 | 4 | namespace FoxIDs.Models.Api 5 | { 6 | public class RiskPasswordRequest 7 | { 8 | [ListLength(Constants.ControlApi.SaveAndDeleteManyMin, Constants.ControlApi.SaveAndDeleteManyMax)] 9 | public List RiskPasswords { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Parties/ClaimTransformActions.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public enum ClaimTransformActions 4 | { 5 | If = 4, 6 | IfNot = 6, 7 | Add = 10, 8 | AddIfNot = 12, 9 | AddIfNotOut = 15, 10 | Replace = 20, 11 | ReplaceIfNot = 22, 12 | Remove = 30, 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Parties/ClaimTransformTasks.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public enum ClaimTransformTasks 4 | { 5 | RequestException = 20, 6 | UpPartyAction = 100, 7 | QueryInternalUser = 200, 8 | QueryExternalUser = 220, 9 | } 10 | } -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Parties/ClaimTransformTypes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public enum ClaimTransformTypes 4 | { 5 | Constant = 10, 6 | MatchClaim = 17, 7 | Match = 20, 8 | RegexMatch = 25, 9 | Map = 30, 10 | RegexMap = 35, 11 | Concatenate = 40, 12 | ExternalClaims = 50, 13 | DkPrivilege = 1010 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Parties/ClientAuthenticationMethods.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public enum ClientAuthenticationMethods 4 | { 5 | ClientSecretPost = 0, 6 | ClientSecretBasic = 10, 7 | //clientSecretJwt = 30, 8 | PrivateKeyJwt = 100, 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Parties/ClientKey.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System.ComponentModel.DataAnnotations; 3 | 4 | namespace FoxIDs.Models.Api 5 | { 6 | public class ClientKey 7 | { 8 | [Required] 9 | public ClientKeyTypes Type { get; set; } 10 | 11 | [Required] 12 | public string ExternalName { get; set; } 13 | 14 | [Required] 15 | public JwkWithCertificateInfo PublicKey { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Parties/ClientKeyTypes.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Models.Api 4 | { 5 | public enum ClientKeyTypes 6 | { 7 | Contained = 0, 8 | [Obsolete("KeyVault is phased out.")] 9 | KeyVaultImport = 20, 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Parties/DynamicElementTypes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public enum DynamicElementTypes 4 | { 5 | Email = 5, 6 | Phone = 6, 7 | Username = 7, 8 | 9 | EmailAndPassword = 10, 10 | Password = 11, 11 | 12 | Name = 20, 13 | GivenName = 21, 14 | FamilyName = 22 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Parties/ExternalConnectTypes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public enum ExternalConnectTypes 4 | { 5 | Api = 100, 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Parties/ExternalLoginSecretResponse.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.Api 4 | { 5 | /// 6 | /// External login secret response. 7 | /// 8 | public class ExternalLoginSecretResponse 9 | { 10 | /// 11 | /// Secret info. 12 | /// 13 | [MaxLength(Constants.Models.SecretHash.InfoLength)] 14 | public string Info { get; set; } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Parties/ExternalLoginUsernameTypes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public enum ExternalLoginUsernameTypes 4 | { 5 | Email = 100, 6 | Text = 200 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Parties/LoginUpPartyLogoutConsents.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public enum LoginUpPartyLogoutConsents 4 | { 5 | Always, 6 | IfRequired, 7 | Never 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Parties/PartyBindingPatterns.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public enum PartyBindingPatterns 4 | { 5 | Brackets = 10, 6 | Tildes = 20, 7 | Dot = 30, 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Parties/PartyTypes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public enum PartyTypes 4 | { 5 | Login = 10, 6 | OAuth2 = 20, 7 | Oidc = 30, 8 | Saml2 = 40, 9 | TrackLink = 100, 10 | ExternalLogin = 200 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Parties/PartyUpdateStates.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public enum PartyUpdateStates 4 | { 5 | Manual = 10, 6 | Automatic = 20, 7 | AutomaticStopped = 30, 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Parties/SamlAuthnContextComparisonTypes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | /// 4 | /// Comparison methods. 5 | /// 6 | public enum SamlAuthnContextComparisonTypes 7 | { 8 | Exact = 10, 9 | Minimum = 20, 10 | Maximum = 30, 11 | Better = 40, 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Parties/SamlBindingTypes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public enum SamlBindingTypes 4 | { 5 | Redirect = 10, 6 | Post = 20 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Parties/SamlMetadataContactPersonTypes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public enum SamlMetadataContactPersonTypes 4 | { 5 | Technical = 10, 6 | Support = 20, 7 | Administrative = 30, 8 | Billing = 40, 9 | Other = 50 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Parties/SamlReadMetadataType.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public enum SamlReadMetadataType 4 | { 5 | Url = 10, 6 | Xml = 20 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Tenants/MollieFirstPaymentRequest.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.Api 4 | { 5 | public class MollieFirstPaymentRequest 6 | { 7 | [MaxLength(Constants.Models.Payment.CardTokenLength)] 8 | public string CardToken { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Tenants/MollieFirstPaymentResponse.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public class MollieFirstPaymentResponse 4 | { 5 | public string CheckoutUrl { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Tenants/MyTenantRequest.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.Api 4 | { 5 | public class MyTenantRequest : TenantBase 6 | { 7 | [ValidateComplexType] 8 | public Customer Customer { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Tenants/TenantRequest.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.Api 4 | { 5 | public class TenantRequest : Tenant 6 | { 7 | [ValidateComplexType] 8 | public Customer Customer { get; set; } 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Tenants/TenantResponse.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public class TenantResponse : Tenant 4 | { 5 | public Customer Customer { get; set; } 6 | 7 | public Payment Payment { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Tracks/CreateUserRequest.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.Api 4 | { 5 | public class CreateUserRequest : UserBase 6 | { 7 | [MaxLength(Constants.Models.Track.PasswordLengthMax)] 8 | [DataType(DataType.Password)] 9 | [Display(Name = "Password")] 10 | public string Password { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Tracks/ExternalUserRequest.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.Infrastructure.DataAnnotations; 2 | using System.Collections.Generic; 3 | 4 | namespace FoxIDs.Models.Api 5 | { 6 | public class ExternalUserRequest : ExternalUserId 7 | { 8 | public bool DisableAccount { get; set; } 9 | 10 | [ListLength(Constants.Models.User.ClaimsMin, Constants.Models.User.ClaimsMax)] 11 | public List Claims { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Tracks/FailingLoginTypes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public enum FailingLoginTypes 4 | { 5 | InternalLogin = 100, 6 | ExternalLogin = 120, 7 | SmsCode = 200, 8 | EmailCode = 220, 9 | TwoFactorSmsCode = 300, 10 | TwoFactorEmailCode = 320, 11 | TwoFactorAuthenticator = 340 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Tracks/Logs/LogItemDetail.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace FoxIDs.Models.Api 4 | { 5 | public class LogItemDetail 6 | { 7 | public string Name { get; set; } 8 | 9 | public IEnumerable Details { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Tracks/Logs/LogItemTypes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public enum LogItemTypes 4 | { 5 | Sequence = 3, 6 | Operation = 6, 7 | Warning = 10, 8 | Error = 20, 9 | CriticalError = 30, 10 | Trace = 40, 11 | Event = 50, 12 | Metric = 60 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Tracks/Logs/LogResponse.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace FoxIDs.Models.Api 4 | { 5 | /// 6 | /// Log query result. 7 | /// 8 | public class LogResponse 9 | { 10 | public List Items { get; set; } 11 | 12 | public bool ResponseTruncated { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Tracks/Logs/LogStreamTypes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public enum LogStreamTypes 4 | { 5 | ApplicationInsights = 0 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Tracks/Logs/LogStreams.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.Infrastructure.DataAnnotations; 2 | using System.Collections.Generic; 3 | 4 | namespace FoxIDs.Models.Api 5 | { 6 | public class LogStreams 7 | { 8 | [ListLength(Constants.Models.Track.Logging.ScopedStreamLoggersMin, Constants.Models.Track.Logging.ScopedStreamLoggersMax)] 9 | public List LogStreamSettings { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Tracks/Logs/ResourceSettings.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.Api 4 | { 5 | /// 6 | /// Resource settings in environment. 7 | /// 8 | public class ResourceSettings 9 | { 10 | [Display(Name = "Show text ID")] 11 | public bool ShowResourceId { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Tracks/Logs/UsageLogItem.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace FoxIDs.Models.Api 4 | { 5 | public class UsageLogItem 6 | { 7 | public UsageLogTypes Type { get; set; } 8 | 9 | public decimal Value { get; set; } 10 | 11 | public IEnumerable SubItems { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Tracks/Logs/UsageLogSummarizeLevels.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public enum UsageLogSummarizeLevels 4 | { 5 | Hour = 10, 6 | Day = 20, 7 | Month = 30 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Tracks/Logs/UsageLogTimeScopes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public enum UsageLogTimeScopes 4 | { 5 | ThisMonth = 10, 6 | LastMonth = 20, 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Tracks/SendSmsTypes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public enum SendSmsTypes 4 | { 5 | GatewayApi = 100, 6 | Smstools = 200, 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Tracks/TrackKey.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.Api 4 | { 5 | public class TrackKey 6 | { 7 | [Required] 8 | public TrackKeyTypes Type { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Tracks/TrackKeyItemContained.cs: -------------------------------------------------------------------------------- 1 | using ITfoxtec.Identity.Models; 2 | using Newtonsoft.Json; 3 | using System.ComponentModel.DataAnnotations; 4 | 5 | namespace FoxIDs.Models.Api 6 | { 7 | public class TrackKeyItemContained 8 | { 9 | [Required] 10 | public JsonWebKey Key { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Tracks/TrackKeyItemContainedSwap.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public class TrackKeyItemContainedSwap 4 | { 5 | public bool SwapKeys { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Tracks/TrackKeyTypes.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Models.Api 4 | { 5 | public enum TrackKeyTypes 6 | { 7 | Contained = 0, 8 | [Obsolete("KeyVault is phased out.")] 9 | KeyVaultRenewSelfSigned = 1, 10 | ContainedRenewSelfSigned = 10 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Tracks/TrackResourceItem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Runtime.Serialization; 3 | 4 | namespace FoxIDs.Models.Api 5 | { 6 | public class TrackResourceItem : ResourceItem, INameValue 7 | { 8 | [IgnoreDataMember] 9 | public string Name { get => Convert.ToString(Id); set { } } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Tracks/UserControlProfile.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System.ComponentModel.DataAnnotations; 3 | 4 | namespace FoxIDs.Models.Api 5 | { 6 | public class UserControlProfile 7 | { 8 | [MaxLength(Constants.Models.Track.NameLength)] 9 | [RegularExpression(Constants.Models.Track.NameDbRegExPattern)] 10 | [Display(Name = "Last environment")] 11 | public string LastTrackName { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Tracks/UsersDelete.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.Infrastructure.DataAnnotations; 2 | using System.Collections.Generic; 3 | 4 | namespace FoxIDs.Models.Api 5 | { 6 | public class UsersDelete 7 | { 8 | [ListLength(Constants.ControlApi.SaveAndDeleteManyMin, Constants.ControlApi.SaveAndDeleteManyMax)] 9 | public List UserIdentifiers { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Tracks/UsersRequest.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.Infrastructure.DataAnnotations; 2 | using System.Collections.Generic; 3 | 4 | namespace FoxIDs.Models.Api 5 | { 6 | public class UsersRequest 7 | { 8 | [ListLength(Constants.ControlApi.SaveAndDeleteManyMin, Constants.ControlApi.SaveAndDeleteManyMax)] 9 | public List Users { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Usage/UpdateUsageRequest.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.Infrastructure.DataAnnotations; 2 | using System.Collections.Generic; 3 | 4 | namespace FoxIDs.Models.Api 5 | { 6 | public class UpdateUsageRequest : UsageRequest 7 | { 8 | [ListLength(Constants.Models.Used.ItemsMin, Constants.Models.Used.ItemsMax)] 9 | public List Items { get; set; } 10 | 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Usage/UsageInvoiceSendStatus.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public enum UsageInvoiceSendStatus 4 | { 5 | None = 0, 6 | Send = 100, 7 | Failed = 200 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Usage/UsagePaymentStatus.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public enum UsagePaymentStatus 4 | { 5 | None = 0, 6 | Open = 100, 7 | Pending = 120, 8 | Authorized = 140, 9 | Paid = 200, 10 | 11 | Canceled = 320, 12 | Expired = 340, 13 | Failed = 360, 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/Api/Usage/UsedItemTypes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Api 2 | { 3 | public enum UsedItemTypes 4 | { 5 | /// 6 | /// One item with a text. 7 | /// 8 | Text = 10, 9 | /// 10 | /// A number of hours. 11 | /// 12 | Hours = 100 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.ControlShared/Models/ErrorInfo.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models 2 | { 3 | public class ErrorInfo 4 | { 5 | public long CreateTime { get; set; } 6 | public string RequestId { get; set; } 7 | public string TechnicalError { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Infrastructure/Hosting/RouteException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Infrastructure.Hosting 4 | { 5 | [Serializable] 6 | public class RouteException : Exception 7 | { 8 | public RouteException() { } 9 | public RouteException(string message) : base(message) { } 10 | public RouteException(string message, Exception inner) : base(message, inner) { } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Logic/Caches/Providers/IDataCacheProvider.cs: -------------------------------------------------------------------------------- 1 | using System.Threading.Tasks; 2 | 3 | namespace FoxIDs.Logic.Caches.Providers 4 | { 5 | public interface IDataCacheProvider 6 | { 7 | public ValueTask DeleteAsync(string key); 8 | 9 | public ValueTask GetAsync(string key); 10 | 11 | public ValueTask SetAsync(string key, string value, int lifetime); 12 | } 13 | } -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Logic/Exceptions/Account/AccountActionException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Logic 4 | { 5 | [Serializable] 6 | public class AccountActionException : Exception 7 | { 8 | public AccountActionException() { } 9 | public AccountActionException(string message) : base(message) { } 10 | public AccountActionException(string message, Exception inner) : base(message, inner) { } 11 | } 12 | } -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Logic/Exceptions/Account/AccountException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Logic 4 | { 5 | [Serializable] 6 | public class AccountException : Exception 7 | { 8 | public AccountException() { } 9 | public AccountException(string message) : base(message) { } 10 | public AccountException(string message, Exception inner) : base(message, inner) { } 11 | } 12 | } -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Logic/Exceptions/Account/ChangePasswordException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Logic 4 | { 5 | [Serializable] 6 | public class ChangePasswordException : AccountException 7 | { 8 | public ChangePasswordException() { } 9 | public ChangePasswordException(string message) : base(message) { } 10 | public ChangePasswordException(string message, Exception innerException) : base(message, innerException) { } 11 | } 12 | } -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Logic/Exceptions/Account/InvalidPasswordException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Logic 4 | { 5 | [Serializable] 6 | public class InvalidPasswordException : AccountException 7 | { 8 | public InvalidPasswordException() { } 9 | public InvalidPasswordException(string message) : base(message) { } 10 | public InvalidPasswordException(string message, Exception innerException) : base(message, innerException) { } 11 | } 12 | } -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Logic/Exceptions/Account/NewPasswordEqualsCurrentException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Logic 4 | { 5 | [Serializable] 6 | public class NewPasswordEqualsCurrentException : AccountException 7 | { 8 | public NewPasswordEqualsCurrentException() { } 9 | public NewPasswordEqualsCurrentException(string message) : base(message) { } 10 | public NewPasswordEqualsCurrentException(string message, Exception innerException) : base(message, innerException) { } 11 | } 12 | } -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Logic/Exceptions/Account/PasswordComplexityException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Logic 4 | { 5 | [Serializable] 6 | public class PasswordComplexityException : AccountException 7 | { 8 | public PasswordComplexityException() { } 9 | public PasswordComplexityException(string message) : base(message) { } 10 | public PasswordComplexityException(string message, Exception innerException) : base(message, innerException) { } 11 | } 12 | } -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Logic/Exceptions/Account/PasswordLengthException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Logic 4 | { 5 | [Serializable] 6 | public class PasswordLengthException : AccountException 7 | { 8 | public PasswordLengthException() { } 9 | public PasswordLengthException(string message) : base(message) { } 10 | public PasswordLengthException(string message, Exception innerException) : base(message, innerException) { } 11 | } 12 | } -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Logic/Exceptions/Account/PasswordRiskException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Logic 4 | { 5 | [Serializable] 6 | public class PasswordRiskException : AccountException 7 | { 8 | public PasswordRiskException() { } 9 | public PasswordRiskException(string message) : base(message) { } 10 | public PasswordRiskException(string message, Exception innerException) : base(message, innerException) { } 11 | } 12 | } -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Logic/Exceptions/Account/UserExistsException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Logic 4 | { 5 | [Serializable] 6 | public class InvalidEmailException : AccountException 7 | { 8 | public InvalidEmailException() { } 9 | public InvalidEmailException(string message) : base(message) { } 10 | public InvalidEmailException(string message, Exception innerException) : base(message, innerException) { } 11 | } 12 | } -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Logic/Exceptions/Account/UserNotExistsException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Logic 4 | { 5 | [Serializable] 6 | public class UserNotExistsException : AccountException 7 | { 8 | public UserNotExistsException() { } 9 | public UserNotExistsException(string message) : base(message) { } 10 | public UserNotExistsException(string message, Exception innerException) : base(message, innerException) { } 11 | } 12 | } -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Logic/Exceptions/Account/UserObservationPeriodException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Logic 4 | { 5 | [Serializable] 6 | public class UserObservationPeriodException : AccountException 7 | { 8 | public UserObservationPeriodException() { } 9 | public UserObservationPeriodException(string message) : base(message) { } 10 | public UserObservationPeriodException(string message, Exception innerException) : base(message, innerException) { } 11 | } 12 | } -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Logic/Exceptions/EmailConfigurationException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Logic 4 | { 5 | [Serializable] 6 | public class EmailConfigurationException : Exception 7 | { 8 | public EmailConfigurationException() { } 9 | public EmailConfigurationException(string message) : base(message) { } 10 | public EmailConfigurationException(string message, Exception inner) : base(message, inner) { } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Logic/Exceptions/KeyException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Logic 4 | { 5 | [Serializable] 6 | public class KeyException : Exception 7 | { 8 | public KeyException() { } 9 | public KeyException(string message) : base(message) { } 10 | public KeyException(string message, Exception inner) : base(message, inner) { } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Base/DefaultElement.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System.ComponentModel.DataAnnotations; 3 | 4 | namespace FoxIDs.Models 5 | { 6 | public class DefaultElement : DataElement, IDataDocument 7 | { 8 | [Required] 9 | [JsonProperty(PropertyName = "id")] 10 | public override string Id { get; set; } 11 | 12 | [Required] 13 | [JsonProperty(PropertyName = "partition_id")] 14 | public string PartitionId { get; set; } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Base/IDataDocument.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models 2 | { 3 | public interface IDataDocument : IDataElement 4 | { 5 | string PartitionId { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Base/IDataElement.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System.Collections.Generic; 3 | 4 | namespace FoxIDs.Models 5 | { 6 | public interface IDataElement 7 | { 8 | [JsonProperty(PropertyName = "id")] 9 | string Id { get; set; } 10 | 11 | [JsonProperty(PropertyName = "a_ids")] 12 | List AdditionalIds { get; set; } 13 | 14 | [JsonProperty(PropertyName = "data_type")] 15 | string DataType { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Base/IDataTtlDocument.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Models 4 | { 5 | public interface IDataTtlDocument : IDataDocument 6 | { 7 | int TimeToLive { get; set; } 8 | 9 | DateTime ExpireAt { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Base/IOAuthClaimTransforms.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace FoxIDs.Models 4 | { 5 | public interface IOAuthClaimTransforms 6 | { 7 | List ClaimTransforms { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Base/IParty.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models 2 | { 3 | public interface IParty : IPartyDataElement 4 | { 5 | string PartitionId { get; set; } 6 | string DisplayName { get; set; } 7 | string Note { get; set; } 8 | } 9 | } -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Base/IPartyDataElement.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models 2 | { 3 | public interface IPartyDataElement : IDataElement 4 | { 5 | string Name { get; set; } 6 | PartyTypes Type { get; set; } 7 | } 8 | } -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Base/ISamlClaimTransforms.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace FoxIDs.Models 4 | { 5 | public interface ISamlClaimTransforms 6 | { 7 | List ClaimTransforms { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Base/ISecretHash.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models 2 | { 3 | public interface ISecretHash 4 | { 5 | string HashAlgorithm { get; set; } 6 | 7 | string Hash { get; set; } 8 | 9 | string HashSalt { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Base/IUiLoginUpParty.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models 2 | { 3 | public interface IUiLoginUpParty : IDataDocument 4 | { 5 | bool DisableSetPassword { get; set; } 6 | 7 | public string Title { get; set; } 8 | public string IconUrl { get; set; } 9 | string Css { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Config/ApplicationInsights.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.Config 4 | { 5 | public class ApplicationInsights 6 | { 7 | [Required] 8 | public string ConnectionString { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Config/InvalidConfigException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Models.Config 4 | { 5 | [Serializable] 6 | public class InvalidConfigException : Exception 7 | { 8 | public InvalidConfigException() { } 9 | public InvalidConfigException(string message) : base(message) { } 10 | public InvalidConfigException(string message, Exception inner) : base(message, inner) { } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Config/KeyVaultSettings.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.Config 4 | { 5 | public class KeyVaultSettings 6 | { 7 | /// 8 | /// Key vault endpoint. 9 | /// 10 | [Required] 11 | public string EndpointUri { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Config/OpenSearchBaseSettings.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.Infrastructure.DataAnnotations; 2 | using System; 3 | using System.Collections.Generic; 4 | 5 | namespace FoxIDs.Models.Config 6 | { 7 | public class OpenSearchBaseSettings 8 | { 9 | /// 10 | /// Specify one or many nodes in the OpenSearch cluster. 11 | /// 12 | [ListLength(1, 100)] 13 | public List Nodes { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Config/OpenSearchQuerySettings.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Config 2 | { 3 | public class OpenSearchQuerySettings : OpenSearchBaseSettings 4 | { 5 | /// 6 | /// Optional cross-cluster search, external cluster name 7 | /// 8 | public string CrossClusterSearchClusterName { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Config/Options/CacheOptions.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Config 2 | { 3 | public enum CacheOptions 4 | { 5 | Memory = 200, 6 | File = 300, 7 | Redis = 1100, 8 | MongoDb = 1200, 9 | PostgreSql = 1300, 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Config/Options/DataCacheOptions.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Config 2 | { 3 | public enum DataCacheOptions 4 | { 5 | None = 100, 6 | Default = 1000, 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Config/Options/DataStorageOptions.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Config 2 | { 3 | public enum DataStorageOptions 4 | { 5 | File = 300, 6 | CosmosDb = 1100, 7 | MongoDb = 1200, 8 | PostgreSql = 1300, 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Config/Options/KeyStorageOptions.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Config 2 | { 3 | public enum KeyStorageOptions 4 | { 5 | None = 100, 6 | KeyVault = 1100, 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Config/Options/LogOptions.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Config 2 | { 3 | public enum LogOptions 4 | { 5 | Stdout = 1000, 6 | OpenSearchAndStdoutErrors = 1010, 7 | ApplicationInsights = 1100, 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Config/RedisCacheSettings.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.Config 4 | { 5 | public class RedisCacheSettings 6 | { 7 | /// 8 | /// Redis Cache connection string. 9 | /// 10 | [Required] 11 | public string ConnectionString { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Exceptions/DataNullException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Models 4 | { 5 | [Serializable] 6 | public class DataNullException : Exception 7 | { 8 | public DataNullException() { } 9 | public DataNullException(string message) : base(message) { } 10 | public DataNullException(string message, Exception inner) : base(message, inner) { } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/External/Sms/GatewayApiRecipient.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.External.Sms 2 | { 3 | public class GatewayApiRecipient 4 | { 5 | public string Msisdn { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/External/Sms/GatewayApiRequest.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace FoxIDs.Models.External.Sms 4 | { 5 | public class GatewayApiRequest 6 | { 7 | public string Message { get; set; } 8 | public List Recipients { get; set; } 9 | public string Sender { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/External/Sms/GatewayApiResponse.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace FoxIDs.Models.External.Sms 4 | { 5 | public class GatewayApiResponse 6 | { 7 | public List Ids { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/External/Sms/SmstoolsApiRequest.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.External.Sms 2 | { 3 | public class SmstoolsApiRequest 4 | { 5 | public string Message { get; set; } 6 | public string To { get; set; } 7 | public string Sender { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/External/Sms/SmstoolsApiResponse.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.External.Sms 2 | { 3 | public class SmstoolsApiResponse 4 | { 5 | public string MessageId { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Logic/EmailContent.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Logic 2 | { 3 | public class EmailContent 4 | { 5 | public string ParentCulture { get; set; } = "en"; 6 | 7 | public string Subject { get; set; } 8 | 9 | public string Body { get; set; } 10 | 11 | public string Info { get; set; } 12 | 13 | public string Address { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Logic/SmsContent.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Logic 2 | { 3 | public class SmsContent 4 | { 5 | public string ParentCulture { get; set; } = "en"; 6 | 7 | public string Sms { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Master/Plans/LogLifetimeOptions.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models 2 | { 3 | public enum LogLifetimeOptions 4 | { 5 | Max30Days = 30, 6 | Max180Days = 180, 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Master/Resources/EmbeddedResource.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Master.Resources 2 | { 3 | class EmbeddedResource 4 | { } 5 | } 6 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Master/Resources/ResourceEditLevels.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models 2 | { 3 | public enum ResourceEditLevels 4 | { 5 | MachineGoogle = 30, 6 | MachineDeepL = 40, 7 | Human = 100, 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Master/Resources/ResourceName.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System.ComponentModel.DataAnnotations; 3 | 4 | namespace FoxIDs.Models 5 | { 6 | public class ResourceName 7 | { 8 | [Required] 9 | [MaxLength(Constants.Models.Resource.NameLength)] 10 | [JsonProperty(PropertyName = "name")] 11 | public string Name { get; set; } 12 | 13 | [Required] 14 | [JsonProperty(PropertyName = "id")] 15 | public int Id { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Parties/ClaimTransformTasks.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models 2 | { 3 | public enum ClaimTransformTasks 4 | { 5 | RequestException = 20, 6 | UpPartyAction = 100, 7 | QueryInternalUser = 200, 8 | QueryExternalUser = 220, 9 | } 10 | } -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Parties/ClientKeyTypes.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Runtime.Serialization; 3 | 4 | namespace FoxIDs.Models 5 | { 6 | public enum ClientKeyTypes 7 | { 8 | [EnumMember(Value = "contained")] 9 | Contained = 0, 10 | [Obsolete("KeyVault is phased out.")] 11 | [EnumMember(Value = "key_vault_upload")] 12 | KeyVaultImport = 20, 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Parties/ExternalConnectTypes.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.Serialization; 2 | 3 | namespace FoxIDs.Models 4 | { 5 | public enum ExternalConnectTypes 6 | { 7 | [EnumMember(Value = "api")] 8 | Api = 100, 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Parties/ExternalLoginUsernameTypes.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.Serialization; 2 | 3 | namespace FoxIDs.Models 4 | { 5 | public enum ExternalLoginUsernameTypes 6 | { 7 | [EnumMember(Value = "email")] 8 | Email = 100, 9 | [EnumMember(Value = "text")] 10 | Text = 200 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Parties/LoginUpPartyLogoutConsents.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.Serialization; 2 | 3 | namespace FoxIDs.Models 4 | { 5 | public enum LoginUpPartyLogoutConsents 6 | { 7 | [EnumMember(Value = "always")] 8 | Always, 9 | [EnumMember(Value = "if_required")] 10 | IfRequired, 11 | [EnumMember(Value = "never")] 12 | Never 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Parties/OAuthUpPartyProfile.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System.ComponentModel.DataAnnotations; 3 | 4 | namespace FoxIDs.Models 5 | { 6 | public class OAuthUpPartyProfile : UpPartyProfile 7 | { 8 | [Required] 9 | [JsonProperty(PropertyName = "client")] 10 | public OAuthUpClientProfile Client { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Parties/OidcDownClaim.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace FoxIDs.Models 4 | { 5 | public class OidcDownClaim : OAuthDownClaim 6 | { 7 | [JsonProperty(PropertyName = "in_id_token")] 8 | public bool InIdToken { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Parties/OidcDownScope.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models 2 | { 3 | public class OidcDownScope : OidcDownScope { } 4 | public class OidcDownScope : OAuthDownScope where TClaim : OidcDownClaim 5 | { 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Parties/PartyBindingPatterns.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.Serialization; 2 | 3 | namespace FoxIDs.Models 4 | { 5 | public enum PartyBindingPatterns 6 | { 7 | [EnumMember(Value = "brackets")] 8 | Brackets = 10, 9 | [EnumMember(Value = "tildes")] 10 | Tildes = 20, 11 | [EnumMember(Value = "underscore")] 12 | Dot = 30, 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Parties/PartyUpdateStates.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.Serialization; 2 | 3 | namespace FoxIDs.Models 4 | { 5 | public enum PartyUpdateStates 6 | { 7 | [EnumMember(Value = "manual")] 8 | Manual = 10, 9 | [EnumMember(Value = "automatic")] 10 | Automatic = 20, 11 | [EnumMember(Value = "automatic_atopped")] 12 | AutomaticStopped = 30, 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Parties/SamlBinding.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System.ComponentModel.DataAnnotations; 3 | 4 | namespace FoxIDs.Models 5 | { 6 | public class SamlBinding 7 | { 8 | [Required] 9 | [JsonProperty(PropertyName = "request_binding")] 10 | public SamlBindingTypes RequestBinding { get; set; } 11 | 12 | [Required] 13 | [JsonProperty(PropertyName = "response_binding")] 14 | public SamlBindingTypes ResponseBinding { get; set; } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Parties/SamlBindingTypes.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.Serialization; 2 | 3 | namespace FoxIDs.Models 4 | { 5 | public enum SamlBindingTypes 6 | { 7 | [EnumMember(Value = "redirect")] 8 | Redirect = 10, 9 | [EnumMember(Value = "post")] 10 | Post = 20 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Routes/IRouteBinding.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models 2 | { 3 | public interface IRouteBinding 4 | { 5 | RouteBinding RouteBinding { get; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Routes/RouteTrackKey.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models 2 | { 3 | public class RouteTrackKey 4 | { 5 | public TrackKeyTypes Type { get; set; } 6 | 7 | public string ExternalName { get; set; } 8 | 9 | public RouteTrackKeyItem PrimaryKey { get; set; } 10 | 11 | public RouteTrackKeyItem SecondaryKey { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Routes/RouteTrackKeyItem.cs: -------------------------------------------------------------------------------- 1 | using ITfoxtec.Identity.Models; 2 | 3 | namespace FoxIDs.Models 4 | { 5 | public class RouteTrackKeyItem 6 | { 7 | public JsonWebKey Key { get; set; } 8 | 9 | public string ExternalId { get; set; } 10 | 11 | public bool ExternalKeyIsNotReady { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Tracks/CertificateItem.cs: -------------------------------------------------------------------------------- 1 | using System.Security.Cryptography.X509Certificates; 2 | 3 | namespace FoxIDs.Models 4 | { 5 | public class CertificateItem 6 | { 7 | public X509Certificate2 Certificate { get; set; } 8 | 9 | public long NotBefore { get; set; } 10 | 11 | public long NotAfter { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Tracks/FailingLoginTypes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models 2 | { 3 | public enum FailingLoginTypes 4 | { 5 | InternalLogin = 100, 6 | ExternalLogin = 120, 7 | SmsCode = 200, 8 | EmailCode = 220, 9 | TwoFactorSmsCode = 300, 10 | TwoFactorEmailCode = 320, 11 | TwoFactorAuthenticator = 340 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Tracks/Logs/Logging/ErrorMessageIItem.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System.Collections.Generic; 3 | 4 | namespace FoxIDs.Models 5 | { 6 | public class ErrorMessageItem 7 | { 8 | [JsonProperty(PropertyName = "m")] 9 | public string Message { get; set; } 10 | 11 | [JsonProperty(PropertyName = "s")] 12 | public IEnumerable StackTrace { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Tracks/Logs/Logging/LogTypes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models 2 | { 3 | public enum LogTypes 4 | { 5 | Warning = 10, 6 | Error = 20, 7 | CriticalError = 30, 8 | Event = 40, 9 | Trace = 50, 10 | Metric = 60, 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Tracks/Logs/Logging/MetricMessage.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models 2 | { 3 | public class MetricMessage 4 | { 5 | public string Message { get; set; } 6 | public double Value { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Tracks/Logs/Logging/OpenSearchMetricLogItem.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models 2 | { 3 | public class OpenSearchMetricLogItem : OpenSearchLogItemBase 4 | { 5 | public string Message { get; set; } 6 | public double Value { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Tracks/Logs/Logging/TraceMessageItem.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace FoxIDs.Models 4 | { 5 | public class TraceMessageItem 6 | { 7 | [JsonProperty(PropertyName = "t")] 8 | public TraceTypes TraceType { get; set; } 9 | 10 | [JsonProperty(PropertyName = "m")] 11 | public string Message { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Tracks/Logs/Logging/TraceTypes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models 2 | { 3 | public enum TraceTypes 4 | { 5 | Info = 10, 6 | Claim = 20, 7 | Message = 30 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Tracks/Logs/ScopedStreamLoggerTypes.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.Serialization; 2 | 3 | namespace FoxIDs.Models 4 | { 5 | public enum ScopedStreamLoggerTypes 6 | { 7 | [EnumMember(Value = "application_insights")] 8 | ApplicationInsights = 0, 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Tracks/Logs/UsageLogSendTypes.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.Serialization; 2 | 3 | namespace FoxIDs.Models 4 | { 5 | public enum UsageLogSendTypes 6 | { 7 | [EnumMember(Value = "sms")] 8 | Sms = 20, 9 | [EnumMember(Value = "email")] 10 | Email = 30, 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Tracks/SendSmsTypes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models 2 | { 3 | public enum SendSmsTypes 4 | { 5 | GatewayApi = 100, 6 | Smstools = 200, 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Tracks/TrackKeyExternal.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace FoxIDs.Models 4 | { 5 | public class TrackKeyExternal 6 | { 7 | public List Keys { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Usage/UsageInvoiceSendStatus.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models 2 | { 3 | public enum UsageInvoiceSendStatus 4 | { 5 | None = 0, 6 | Send = 100, 7 | Failed = 200 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Usage/UsagePaymentStatus.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models 2 | { 3 | public enum UsagePaymentStatus 4 | { 5 | None = 0, 6 | Open = 100, 7 | Pending = 120, 8 | Authorized = 140, 9 | Paid = 200, 10 | 11 | Canceled = 320, 12 | Expired = 340, 13 | Failed = 360, 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Models/Usage/UsedItemTypes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models 2 | { 3 | public enum UsedItemTypes 4 | { 5 | /// 6 | /// One item with a text. 7 | /// 8 | Text = 10, 9 | /// 10 | /// A number of hours. 11 | /// 12 | Hours = 100 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Repository/CosmosDb/CosmosDbDataRepositoryBulkClient.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.Infrastructure; 2 | using FoxIDs.Models.Config; 3 | 4 | namespace FoxIDs.Repository 5 | { 6 | public class CosmosDbDataRepositoryBulkClient : CosmosDbDataRepositoryClientBase, ICosmosDbDataRepositoryBulkClient 7 | { 8 | public CosmosDbDataRepositoryBulkClient(Settings settings, TelemetryLogger logger) : base (settings, logger, false, true) 9 | { } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Repository/CosmosDb/ICosmosDbDataRepositoryBulkClient.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Azure.Cosmos; 2 | 3 | namespace FoxIDs.Repository 4 | { 5 | public interface ICosmosDbDataRepositoryBulkClient 6 | { 7 | CosmosClient Client { get; } 8 | Container Container { get; } 9 | } 10 | } -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Repository/CosmosDb/ICosmosDbDataRepositoryClient.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Azure.Cosmos; 2 | 3 | namespace FoxIDs.Repository 4 | { 5 | public interface ICosmosDbDataRepositoryClient 6 | { 7 | CosmosClient Client { get; } 8 | Container Container { get; } 9 | Container TtlContainer { get; } 10 | } 11 | } -------------------------------------------------------------------------------- /src/FoxIDs.Shared/Repository/Exceptions/DataStatusCode.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Repository 2 | { 3 | public enum DataStatusCode 4 | { 5 | NotFound = 404, 6 | Conflict = 409, 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/FoxIDs/Connected Services/Application Insights/ConnectedService.json: -------------------------------------------------------------------------------- 1 | { 2 | "ProviderId": "Microsoft.ApplicationInsights.ConnectedService.ConnectedServiceProvider", 3 | "Version": "8.12.10405.1", 4 | "GettingStartedDocument": { 5 | "Uri": "https://go.microsoft.com/fwlink/?LinkID=798432" 6 | } 7 | } -------------------------------------------------------------------------------- /src/FoxIDs/Controllers/Site/HealthController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | 3 | namespace FoxIDs.Controllers 4 | { 5 | [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] 6 | public class HealthController : Controller 7 | { 8 | public IActionResult Index() 9 | { 10 | return Ok(); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs/Extensions/HtmlHelperExtensions.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc.Rendering; 2 | 3 | namespace FoxIDs 4 | { 5 | public static class HtmlHelperExtensions 6 | { 7 | public static string ParentCultureName(this IHtmlHelper htmlHelper) 8 | { 9 | return htmlHelper.ViewContext.HttpContext.GetCultureParentName(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs/Logic/Base/LogicSequenceBase.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.Models.Sequences; 2 | using Microsoft.AspNetCore.Http; 3 | 4 | namespace FoxIDs.Logic 5 | { 6 | public class LogicSequenceBase : LogicBase 7 | { 8 | public LogicSequenceBase(IHttpContextAccessor httpContextAccessor) : base(httpContextAccessor) 9 | { } 10 | 11 | public Sequence Sequence => HttpContext.GetSequence(allowNull: true); 12 | 13 | public string SequenceString => HttpContext.GetSequenceString(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/FoxIDs/Logic/Exceptions/CodeNotExistsException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Logic 4 | { 5 | [Serializable] 6 | public class CodeNotExistsException : AccountException 7 | { 8 | public CodeNotExistsException() { } 9 | public CodeNotExistsException(string message) : base(message) { } 10 | public CodeNotExistsException(string message, Exception innerException) : base(message, innerException) { } 11 | } 12 | } -------------------------------------------------------------------------------- /src/FoxIDs/Logic/Exceptions/ExternalKeyIsNotReadyException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Logic 4 | { 5 | [Serializable] 6 | public class ExternalKeyIsNotReadyException : Exception 7 | { 8 | public ExternalKeyIsNotReadyException() { } 9 | public ExternalKeyIsNotReadyException(string message) : base(message) { } 10 | public ExternalKeyIsNotReadyException(string message, Exception inner) : base(message, inner) { } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs/Logic/Exceptions/InvalidAppCodeException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Logic 4 | { 5 | [Serializable] 6 | public class InvalidAppCodeException : AccountException 7 | { 8 | public InvalidAppCodeException() { } 9 | public InvalidAppCodeException(string message) : base(message) { } 10 | public InvalidAppCodeException(string message, Exception innerException) : base(message, innerException) { } 11 | } 12 | } -------------------------------------------------------------------------------- /src/FoxIDs/Logic/Exceptions/InvalidCodeException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Logic 4 | { 5 | [Serializable] 6 | public class InvalidCodeException : AccountException 7 | { 8 | public InvalidCodeException() { } 9 | public InvalidCodeException(string message) : base(message) { } 10 | public InvalidCodeException(string message, Exception innerException) : base(message, innerException) { } 11 | } 12 | } -------------------------------------------------------------------------------- /src/FoxIDs/Logic/Exceptions/InvalidRecoveryCodeException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Logic 4 | { 5 | [Serializable] 6 | public class InvalidRecoveryCodeException : AccountException 7 | { 8 | public InvalidRecoveryCodeException() { } 9 | public InvalidRecoveryCodeException(string message) : base(message) { } 10 | public InvalidRecoveryCodeException(string message, Exception innerException) : base(message, innerException) { } 11 | } 12 | } -------------------------------------------------------------------------------- /src/FoxIDs/Logic/Exceptions/SequenceBrowserBackException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Logic 4 | { 5 | [Serializable] 6 | public class SequenceBrowserBackException : SequenceException 7 | { 8 | public SequenceBrowserBackException() { } 9 | public SequenceBrowserBackException(string message) : base(message) { } 10 | public SequenceBrowserBackException(string message, Exception innerException) : base(message, innerException) { } 11 | } 12 | } -------------------------------------------------------------------------------- /src/FoxIDs/Logic/Exceptions/SequenceException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Logic 4 | { 5 | [Serializable] 6 | public class SequenceException : Exception 7 | { 8 | public SequenceException() { } 9 | public SequenceException(string message) : base(message) { } 10 | public SequenceException(string message, Exception innerException) : base(message, innerException) { } 11 | } 12 | } -------------------------------------------------------------------------------- /src/FoxIDs/Logic/Exceptions/StopSequenceException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Logic 4 | { 5 | public class StopSequenceException : Exception 6 | { 7 | public StopSequenceException() { } 8 | public StopSequenceException(string message) : base(message) { } 9 | public StopSequenceException(string message, Exception inner) : base(message, inner) { } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/External/ClaimValue.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.External 4 | { 5 | public class ClaimValue 6 | { 7 | [Required] 8 | public string Type { get; set; } 9 | 10 | [Required] 11 | public string Value { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/External/Claims/ClaimsRequest.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.ComponentModel.DataAnnotations; 3 | 4 | namespace FoxIDs.Models.External 5 | { 6 | public class ClaimsRequest 7 | { 8 | [Required] 9 | public IEnumerable Claims { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/External/Claims/ClaimsResponse.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.ComponentModel.DataAnnotations; 3 | 4 | namespace FoxIDs.Models.External 5 | { 6 | public class ClaimsResponse 7 | { 8 | [Required] 9 | public IEnumerable Claims { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/External/ErrorResponse.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.External 4 | { 5 | public class ErrorResponse 6 | { 7 | [Required] 8 | public string Error { get; set; } 9 | public string ErrorDescription { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/External/InvalidAppIdOrSecretException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace FoxIDs.Logic 4 | { 5 | [Serializable] 6 | public class InvalidAppIdOrSecretException : Exception 7 | { 8 | public InvalidAppIdOrSecretException() { } 9 | public InvalidAppIdOrSecretException(string message) : base(message) { } 10 | public InvalidAppIdOrSecretException(string message, Exception innerException) : base(message, innerException) { } 11 | } 12 | } -------------------------------------------------------------------------------- /src/FoxIDs/Models/External/Login/AuthenticationRequest.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.External 4 | { 5 | public class AuthenticationRequest 6 | { 7 | [Required] 8 | public ExternalLoginUsernameTypes UsernameType { get; set; } 9 | 10 | [Required] 11 | public string Username { get; set; } 12 | 13 | [Required] 14 | public string Password { get; set; } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/External/Login/AuthenticationResponse.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.ComponentModel.DataAnnotations; 3 | 4 | namespace FoxIDs.Models.External 5 | { 6 | public class AuthenticationResponse 7 | { 8 | [Required] 9 | public IEnumerable Claims { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/Logic/CountryCodes.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Logic 2 | { 3 | class CountryCodes 4 | { } 5 | } 6 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/Logic/IdPInitiatedDownPartyLink.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Logic 2 | { 3 | public class IdPInitiatedDownPartyLink 4 | { 5 | public string UpPartyName { get; set; } 6 | 7 | public PartyTypes UpPartyType { get; set; } 8 | 9 | public string DownPartyId { get; set; } 10 | 11 | public PartyTypes DownPartyType { get; set; } 12 | 13 | public string DownPartyRedirectUrl { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/Logic/LoginAction.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.Serialization; 2 | 3 | namespace FoxIDs.Models.Logic 4 | { 5 | public enum LoginAction 6 | { 7 | [EnumMember(Value = "read_session")] 8 | ReadSession, 9 | [EnumMember(Value = "read_session_or_login")] 10 | ReadSessionOrLogin, 11 | [EnumMember(Value = "session_user_require_login")] 12 | SessionUserRequireLogin, 13 | [EnumMember(Value = "require_login")] 14 | RequireLogin, 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/Logic/LoginResponseSequenceSteps.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Logic 2 | { 3 | public enum LoginResponseSequenceSteps 4 | { 5 | PhoneVerificationStep = 10, 6 | EmailVerificationStep = 20, 7 | MfaSmsStep = 30, 8 | MfaEmailStep = 31, 9 | MfaRegisterAuthAppStep = 32, 10 | MfaAllAndAppStep = 35, 11 | LoginResponseStep = 40 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/Logic/LoginSequenceError.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Logic 2 | { 3 | public enum LoginSequenceError 4 | { 5 | LoginCanceled, 6 | LoginRequired, 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/Logic/LoginUserIdentifier.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Logic 2 | { 3 | public class LoginUserIdentifier : UserIdentifier 4 | { 5 | public string UserId { get; set; } 6 | 7 | /// 8 | /// User logged in with the user identifier which is equal to either the EmailIdentifier, PhoneIdentifier or UsernameIdentifier. 9 | /// 10 | public string UserIdentifier { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/Logic/LogoutRequest.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.Models.Session; 2 | using System.ComponentModel.DataAnnotations; 3 | 4 | namespace FoxIDs.Models.Logic 5 | { 6 | public class LogoutRequest 7 | { 8 | [Required] 9 | public DownPartySessionLink DownPartyLink { get; set; } 10 | 11 | public string SessionId { get; set; } 12 | 13 | public bool RequireLogoutConsent { get; set; } 14 | 15 | public bool PostLogoutRedirect { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/Sequences/Base/IDownSequenceData.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.Models.Logic; 2 | 3 | namespace FoxIDs.Models.Sequences 4 | { 5 | public interface IDownSequenceData : ISequenceData, ILoginRequest 6 | { } 7 | } 8 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/Sequences/Base/ISequenceData.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Sequences 2 | { 3 | public interface ISequenceData 4 | { } 5 | } 6 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/Sequences/Base/ISequenceKey.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace FoxIDs.Models.Sequences 4 | { 5 | public interface ISequenceKey : ISequenceData 6 | { 7 | public string KeyName { get; set; } 8 | 9 | public List KeyNames { get; set; } 10 | 11 | long KeyValidUntil { get; set; } 12 | 13 | bool KeyUsed { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/Sequences/Base/IUpSequenceData.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.Models.Logic; 2 | 3 | namespace FoxIDs.Models.Sequences 4 | { 5 | public interface IUpSequenceData : ISequenceData, ILoginRequest 6 | { 7 | bool ExternalInitiatedSingleLogout { get; set; } 8 | string HrdLoginUpPartyName { get; set; } 9 | string UpPartyId { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/Sequences/SequenceAction.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Sequences 2 | { 3 | public enum SequenceAction 4 | { 5 | Start, 6 | Validate 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/Sequences/StateUpPartyCookie.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.Models.Session; 2 | using Microsoft.AspNetCore.Http; 3 | using Newtonsoft.Json; 4 | 5 | namespace FoxIDs.Models.Sequences 6 | { 7 | public class StateUpPartyCookie : CookieMessage 8 | { 9 | [JsonIgnore] 10 | public override SameSiteMode SameSite => SameSiteMode.None; 11 | 12 | [JsonProperty(PropertyName = "s")] 13 | public string State { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/Sequences/TwoFactorAppSequenceStates.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.Sequences 2 | { 3 | public enum TwoFactorAppSequenceStates 4 | { 5 | DoRegistration, 6 | RegisteredShowRecoveryCode, 7 | Validate 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/Session/HrdTrackCookie.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Http; 2 | using Newtonsoft.Json; 3 | using System.Collections.Generic; 4 | 5 | namespace FoxIDs.Models.Session 6 | { 7 | public class HrdTrackCookie : CookieMessage 8 | { 9 | [JsonIgnore] 10 | public override SameSiteMode SameSite => SameSiteMode.None; 11 | 12 | [JsonProperty(PropertyName = "up")] 13 | public IEnumerable UpParties { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/Session/SessionTrackCookie.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Http; 2 | using Newtonsoft.Json; 3 | using System.Collections.Generic; 4 | 5 | namespace FoxIDs.Models.Session 6 | { 7 | public class SessionTrackCookie : CookieMessage 8 | { 9 | [JsonIgnore] 10 | public override SameSiteMode SameSite => SameSiteMode.None; 11 | 12 | [JsonProperty(PropertyName = "g")] 13 | public List Groups { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/TwoFactorSetupInfo.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models 2 | { 3 | public class TwoFactorSetupInfo 4 | { 5 | public string Secret { get; set; } 6 | public string QrCodeSetupImageUrl { get; set; } 7 | public string ManualSetupKey { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/Abstracts/ViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.ViewModels 2 | { 3 | public abstract class ViewModel 4 | { 5 | public string Title { get; set; } 6 | public string IconUrl { get; set; } 7 | public string Css { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/Action/ConfirmationCodeSendStatus.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.ViewModels 2 | { 3 | public enum ConfirmationCodeSendStatus 4 | { 5 | UseExistingCode, 6 | NewCode, 7 | ForceNewCode 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/DynamicElements/DynamicElementBase.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.ViewModels 2 | { 3 | public class DynamicElementBase 4 | { 5 | public virtual string DField1 { get; set; } 6 | 7 | public virtual string DField2 { get; set; } 8 | 9 | public virtual bool Required => false; 10 | 11 | public virtual bool IsUserIdentifier { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/DynamicElements/EmailDElement.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.ViewModels 4 | { 5 | public class EmailDElement : DynamicElementBase 6 | { 7 | [MaxLength(Constants.Models.User.EmailLength)] 8 | [EmailAddress] 9 | [Display(Name = "Email")] 10 | public override string DField1 { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/DynamicElements/EmailRequiredDElement.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.ViewModels 4 | { 5 | public class EmailRequiredDElement : EmailDElement 6 | { 7 | [Required] 8 | [MaxLength(Constants.Models.User.EmailLength)] 9 | [EmailAddress] 10 | [Display(Name = "Email")] 11 | public override string DField1 { get; set; } 12 | 13 | public override bool Required => true; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/DynamicElements/FamilyNameDElement.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.ViewModels 4 | { 5 | public class FamilyNameDElement : DynamicElementBase 6 | { 7 | [MaxLength(Constants.Models.Claim.JwtTypeLength)] 8 | [Display(Name = "Family name")] 9 | public override string DField1 { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/DynamicElements/FamilyNameRequiredDElement.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.ViewModels 4 | { 5 | public class FamilyNameRequiredDElement : FamilyNameDElement 6 | { 7 | [Required] 8 | [MaxLength(Constants.Models.Claim.JwtTypeLength)] 9 | [Display(Name = "Family name")] 10 | public override string DField1 { get; set; } 11 | 12 | public override bool Required => true; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/DynamicElements/GivenNameDElement.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.ViewModels 4 | { 5 | public class GivenNameDElement : DynamicElementBase 6 | { 7 | [MaxLength(Constants.Models.Claim.JwtTypeLength)] 8 | [Display(Name = "Given name")] 9 | public override string DField1 { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/DynamicElements/GivenNameRequiredDElement.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.ViewModels 4 | { 5 | public class GivenNameRequiredDElement : GivenNameDElement 6 | { 7 | [Required] 8 | [MaxLength(Constants.Models.Claim.JwtTypeLength)] 9 | [Display(Name = "Given name")] 10 | public override string DField1 { get; set; } 11 | 12 | public override bool Required => true; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/DynamicElements/NameDElement.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.ViewModels 4 | { 5 | public class NameDElement : DynamicElementBase 6 | { 7 | [MaxLength(Constants.Models.Claim.JwtTypeLength)] 8 | [Display(Name = "Full name")] 9 | public override string DField1 { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/DynamicElements/NameRequiredDElement.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.ViewModels 4 | { 5 | public class NameRequiredDElement : NameDElement 6 | { 7 | [Required] 8 | [MaxLength(Constants.Models.Claim.JwtTypeLength)] 9 | [Display(Name = "Full name")] 10 | public override string DField1 { get; set; } 11 | 12 | public override bool Required => true; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/DynamicElements/UsernameDElement.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.ViewModels 4 | { 5 | public class UsernameDElement : DynamicElementBase 6 | { 7 | [MaxLength(Constants.Models.User.UsernameLength)] 8 | [RegularExpression(Constants.Models.User.UsernameRegExPattern, ErrorMessage = "The Username format is invalid.")] 9 | [Display(Name = "Username")] 10 | public override string DField1 { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/Ext/CreateExternalUserViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.ComponentModel.DataAnnotations; 3 | 4 | namespace FoxIDs.Models.ViewModels 5 | { 6 | public class CreateExternalUserViewModel : ViewModel 7 | { 8 | public string SequenceString { get; set; } 9 | 10 | [Required] 11 | public List Elements { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/Login/CreateUserViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.ComponentModel.DataAnnotations; 3 | 4 | namespace FoxIDs.Models.ViewModels 5 | { 6 | public class CreateUserViewModel : ViewModel 7 | { 8 | public string SequenceString { get; set; } 9 | 10 | [Required] 11 | public List Elements { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/Login/IdentifierUpPartyViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.ViewModels 2 | { 3 | public class IdentifierUpPartyViewModel 4 | { 5 | public string Name { get; set; } 6 | 7 | public string ProfileName { get; set; } 8 | 9 | public string DisplayName { get; set; } 10 | 11 | public string LogoUrl { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/Login/Identifiers/EmailIdentifierViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.ViewModels 4 | { 5 | public class EmailIdentifierViewModel 6 | { 7 | [Display(Name = "Email")] 8 | [Required] 9 | [MaxLength(Constants.Models.User.EmailLength)] 10 | [EmailAddress] 11 | public string Email { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/Login/Identifiers/EmailPasswordViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.ViewModels 4 | { 5 | public class EmailPasswordViewModel 6 | { 7 | [Display(Name = "Email")] 8 | [MaxLength(Constants.Models.User.EmailLength)] 9 | [EmailAddress] 10 | public string Email { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/Login/Identifiers/PhoneEmailIdentifierViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.ViewModels 4 | { 5 | public class PhoneEmailIdentifierViewModel 6 | { 7 | [Display(Name = "Phone or Email")] 8 | [Required] 9 | [MaxLength(Constants.Models.User.UsernameLength)] 10 | public string UserIdentifier { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/Login/Identifiers/PhoneEmailPasswordViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.ViewModels 4 | { 5 | public class PhoneEmailPasswordViewModel 6 | { 7 | [Display(Name = "Phone or Email")] 8 | [MaxLength(Constants.Models.User.UsernameLength)] 9 | public string UserIdentifier { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/Login/Identifiers/UsernameEmailIdentifierViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.ViewModels 4 | { 5 | public class UsernameEmailIdentifierViewModel 6 | { 7 | [Display(Name = "Username or Email")] 8 | [Required] 9 | [MaxLength(Constants.Models.User.UsernameLength)] 10 | public string UserIdentifier { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/Login/Identifiers/UsernameEmailPasswordViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.ViewModels 4 | { 5 | public class UsernameEmailPasswordViewModel 6 | { 7 | [Display(Name = "Username or Email")] 8 | [MaxLength(Constants.Models.User.UsernameLength)] 9 | public string UserIdentifier { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/Login/Identifiers/UsernameIdentifierViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.ViewModels 4 | { 5 | public class UsernameIdentifierViewModel 6 | { 7 | [Display(Name = "Username")] 8 | [Required] 9 | [MaxLength(Constants.Models.User.UsernameLength)] 10 | public string Username { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/Login/Identifiers/UsernamePasswordViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.ViewModels 4 | { 5 | public class UsernamePasswordViewModel 6 | { 7 | [Display(Name = "Username")] 8 | [MaxLength(Constants.Models.User.UsernameLength)] 9 | public string Username { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/Login/Identifiers/UsernamePhoneEmailIdentifierViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.ViewModels 4 | { 5 | public class UsernamePhoneEmailIdentifierViewModel 6 | { 7 | [Display(Name = "Username or Phone or Email")] 8 | [Required] 9 | [MaxLength(Constants.Models.User.UsernameLength)] 10 | public string UserIdentifier { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/Login/Identifiers/UsernamePhoneEmailPasswordViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.ViewModels 4 | { 5 | public class UsernamePhoneEmailPasswordViewModel 6 | { 7 | [Display(Name = "Username or Phone or Email")] 8 | [MaxLength(Constants.Models.User.UsernameLength)] 9 | public string UserIdentifier { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/Login/Identifiers/UsernamePhoneIdentifierViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.ViewModels 4 | { 5 | public class UsernamePhoneIdentifierViewModel 6 | { 7 | [Display(Name = "Username or Phone")] 8 | [Required] 9 | [MaxLength(Constants.Models.User.UsernameLength)] 10 | public string UserIdentifier { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/Login/Identifiers/UsernamePhonePasswordViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.ViewModels 4 | { 5 | public class UsernamePhonePasswordViewModel 6 | { 7 | [Display(Name = "Username or Phone")] 8 | [MaxLength(Constants.Models.User.UsernameLength)] 9 | public string UserIdentifier { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/Login/LoggedInViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.ViewModels 2 | { 3 | public class LoggedInViewModel : ViewModel 4 | { 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/Login/LoggedOutViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.ViewModels 2 | { 3 | public class LoggedOutViewModel : ViewModel 4 | { 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/Login/LogoutChoice.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.Models.ViewModels 2 | { 3 | public enum LogoutChoice 4 | { 5 | Logout, 6 | KeepMeLoggedIn 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/Login/LogoutViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.ViewModels 4 | { 5 | public class LogoutViewModel : ViewModel 6 | { 7 | public string SequenceString { get; set; } 8 | 9 | [Required] 10 | public LogoutChoice LogoutChoice { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/Login/PasswordViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.ViewModels 4 | { 5 | public class PasswordViewModel : LoginBaseViewModel 6 | { 7 | [Display(Name = "Password")] 8 | [Required] 9 | [MaxLength(Constants.Models.Track.PasswordLengthMax)] 10 | [DataType(DataType.Password)] 11 | public string Password { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/FoxIDs/Models/ViewModels/Mfa/RecoveryCodeTwoFactorAppViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace FoxIDs.Models.ViewModels 4 | { 5 | public class RecoveryCodeTwoFactorAppViewModel : ViewModel 6 | { 7 | public string SequenceString { get; set; } 8 | 9 | [Display(Name = "Recovery code")] 10 | public string RecoveryCode { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/FoxIDs/Views/ExtLogin/LoggedOut.cshtml: -------------------------------------------------------------------------------- 1 | @using Microsoft.AspNetCore.Mvc.Localization 2 | @inject IViewLocalizer Localizer 3 | @model LoggedOutViewModel 4 | 5 | @{ 6 | ViewData["Title"] = Localizer["logged out"]; 7 | } 8 | 9 | @ViewData["Title"] 10 | 11 | 12 | 13 | 14 | @Localizer["You are now logged out!"] 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/FoxIDs/Views/Login/LoggedIn.cshtml: -------------------------------------------------------------------------------- 1 | @using Microsoft.AspNetCore.Mvc.Localization 2 | @inject IViewLocalizer Localizer 3 | @model LoggedInViewModel 4 | 5 | @{ 6 | ViewData["Title"] = Localizer["Logged in"]; 7 | } 8 | 9 | @ViewData["Title"] 10 | 11 | 12 | 13 | 14 | 15 | @Localizer["You are still logged in!"] 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/FoxIDs/Views/Login/LoggedOut.cshtml: -------------------------------------------------------------------------------- 1 | @using Microsoft.AspNetCore.Mvc.Localization 2 | @inject IViewLocalizer Localizer 3 | @model LoggedOutViewModel 4 | 5 | @{ 6 | ViewData["Title"] = Localizer["logged out"]; 7 | } 8 | 9 | @ViewData["Title"] 10 | 11 | 12 | 13 | 14 | @Localizer["You are now logged out!"] 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/FoxIDs/Views/W/Index.cshtml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/FoxIDs/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using ITfoxtec.Identity 2 | @using FoxIDs 3 | @using FoxIDs.Models.ViewModels 4 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 5 | -------------------------------------------------------------------------------- /src/FoxIDs/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /src/FoxIDs/web.Release.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/FoxIDs/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/src/FoxIDs/wwwroot/favicon.ico -------------------------------------------------------------------------------- /src/FoxIDs/wwwroot/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: / -------------------------------------------------------------------------------- /test/FoxIDs.IntegrationTests/DatabaseCollection.cs: -------------------------------------------------------------------------------- 1 | using FoxIDs.IntegrationTests.Helpers; 2 | using Xunit; 3 | 4 | namespace FoxIDs.IntegrationTests 5 | { 6 | [CollectionDefinition(nameof(DatabaseCollection))] 7 | public class DatabaseCollection : ICollectionFixture 8 | { 9 | // This class has no code, and is never created. Its purpose is simply 10 | // to be the place to apply [CollectionDefinition] and all the 11 | // ICollectionFixture<> interfaces. 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /tools/FoxIDs.ConvertCertificateTool/oces3_-test-_systemcertifikat.p12: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ITfoxtec/FoxIDs/1ed51d53de1e01b61480ace2137185c9c33c4e78/tools/FoxIDs.ConvertCertificateTool/oces3_-test-_systemcertifikat.p12 -------------------------------------------------------------------------------- /tools/FoxIDs.MasterSeedTool/Models/ApiModels/RiskPasswordApiModel.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.MasterSeedTool.Models.ApiModels 2 | { 3 | public class RiskPasswordApiModel 4 | { 5 | public string PasswordSha1Hash { get; set; } 6 | 7 | public long Count { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /tools/FoxIDs.MasterSeedTool/Models/ApiModels/RiskPasswordDeleteApiModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace FoxIDs.MasterSeedTool.Models.ApiModels 4 | { 5 | public class RiskPasswordDeleteApiModel 6 | { 7 | public List PasswordSha1Hashs { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /tools/FoxIDs.MasterSeedTool/Models/ApiModels/RiskPasswordRequestApiModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace FoxIDs.MasterSeedTool.Models.ApiModels 4 | { 5 | public class RiskPasswordRequestApiModel 6 | { 7 | public List RiskPasswords { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /tools/FoxIDs.ResourceTranslateTool/README.md: -------------------------------------------------------------------------------- 1 | # Resource translation tool 2 | 3 | The tool translate the resources using mainly DeepL and secondary Google translators. 4 | 5 | To set up Google translators, please follow this description https://www.craftedpod.com/tech/google-cloud-translate-v3-with-csharp/ 6 | -------------------------------------------------------------------------------- /tools/FoxIDs.ResourceTranslateTool/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Warning" 5 | } 6 | }, 7 | "TranslateSettings": { 8 | "EmbeddedResourceJsonPath": "C:\\xxx\\FoxIDs\\src\\FoxIDs.Shared\\Models\\Master\\Resources\\EmbeddedResource.json", 9 | "DeeplAuthenticationKey": "xxx", 10 | "DeeplServerUrl": "https://api-free.deepl.com", 11 | "GoogleProjectId": "xxx" 12 | } 13 | } -------------------------------------------------------------------------------- /tools/FoxIDs.SeedTool/Models/ApiModels/ClaimAndValuesApiModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace FoxIDs.SeedTool.Models.ApiModels 4 | { 5 | public class ClaimAndValuesApiModel 6 | { 7 | public string Claim { get; set; } 8 | 9 | public List Values { get; set; } 10 | 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /tools/FoxIDs.SeedTool/Models/ApiModels/CreateUserApiModel.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.SeedTool.Models.ApiModels 2 | { 3 | public class CreateUserApiModel : UserBaseApiModel 4 | { 5 | public string Password { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /tools/FoxIDs.SeedTool/Models/ApiModels/PaginationResponseApiModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace FoxIDs.SeedTool.Models.ApiModels 4 | { 5 | public class PaginationResponse 6 | { 7 | public HashSet Data { get; set; } 8 | 9 | public string PaginationToken { get; set; } 10 | 11 | public int Limit { get; set; } = Constants.Models.ListPageSize; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /tools/FoxIDs.SeedTool/Models/ApiModels/UserApiModel.cs: -------------------------------------------------------------------------------- 1 | namespace FoxIDs.SeedTool.Models.ApiModels 2 | { 3 | public class UserApiModel : UserBaseApiModel 4 | { 5 | public string UserId { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /tools/FoxIDs.SeedTool/Models/ApiModels/UsersDeleteApiModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace FoxIDs.SeedTool.Models.ApiModels 4 | { 5 | public class UsersDeleteApiModel 6 | { 7 | public List UserIdentifiers { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /tools/FoxIDs.SeedTool/Models/ApiModels/UsersRequestApiModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace FoxIDs.SeedTool.Models.ApiModels 4 | { 5 | public class UsersRequestApiModel 6 | { 7 | public List Users { get; set; } 8 | } 9 | } 10 | --------------------------------------------------------------------------------