From 854be19fd5b8640c8895f8cd71bde17d1d933636 Mon Sep 17 00:00:00 2001 From: ThompsonNye Date: Sat, 28 Dec 2024 15:55:34 +0100 Subject: [PATCH] Remove system tests --- tests/WebApi.Tests.System/ComposeService.cs | 166 -- tests/WebApi.Tests.System/Constants.cs | 13 - .../DockerComposeFixture.cs | 301 --- tests/WebApi.Tests.System/Dockerfile.keycloak | 8 - .../SharedTestCollection.cs | 7 - .../WebApi.Tests.System/SharedTestContext.cs | 11 - tests/WebApi.Tests.System/Test.cs | 57 - tests/WebApi.Tests.System/TokenResponse.cs | 9 - .../WebApi.Tests.System.csproj | 34 - tests/WebApi.Tests.System/compose.system.yaml | 72 - tests/WebApi.Tests.System/test-realm.json | 1960 ----------------- vegasco-server.slnx | 1 - 12 files changed, 2639 deletions(-) delete mode 100644 tests/WebApi.Tests.System/ComposeService.cs delete mode 100644 tests/WebApi.Tests.System/Constants.cs delete mode 100644 tests/WebApi.Tests.System/DockerComposeFixture.cs delete mode 100644 tests/WebApi.Tests.System/Dockerfile.keycloak delete mode 100644 tests/WebApi.Tests.System/SharedTestCollection.cs delete mode 100644 tests/WebApi.Tests.System/SharedTestContext.cs delete mode 100644 tests/WebApi.Tests.System/Test.cs delete mode 100644 tests/WebApi.Tests.System/TokenResponse.cs delete mode 100644 tests/WebApi.Tests.System/WebApi.Tests.System.csproj delete mode 100644 tests/WebApi.Tests.System/compose.system.yaml delete mode 100644 tests/WebApi.Tests.System/test-realm.json diff --git a/tests/WebApi.Tests.System/ComposeService.cs b/tests/WebApi.Tests.System/ComposeService.cs deleted file mode 100644 index 05483c4..0000000 --- a/tests/WebApi.Tests.System/ComposeService.cs +++ /dev/null @@ -1,166 +0,0 @@ -using Ductus.FluentDocker.Services; -using Ductus.FluentDocker.Services.Extensions; -using System.Diagnostics.CodeAnalysis; - -namespace WebApi.Tests.System; - -public abstract class ComposeService : IDisposable -{ - public string ServiceName { get; init; } - public string ServiceInternalPort { get; init; } - public string ServiceInternalProtocol { get; init; } - public string ServiceInternalPortAndProtocol => $"{ServiceInternalPort}/{ServiceInternalProtocol}"; - - private readonly ICompositeService _dockerService; - private readonly bool _isTestRunningInContainer; - - private IContainerService? _container; - private bool _hasCheckedForContainer; - - /// - /// Not null, if is true. - /// - public IContainerService? Container - { - get - { - if (_hasCheckedForContainer) - { - return _container; - } - - _container ??= _dockerService.Containers.First(x => x.Name == ServiceName); - _hasCheckedForContainer = true; - - return _container; - } - } - - [MemberNotNullWhen(returnValue: true, nameof(Container))] - public bool ContainerExists => Container is not null; - - public ComposeService( - ICompositeService dockerService, - bool isTestRunningInContainer, - string serviceName, - string serviceInternalPort, - string serviceInternalProtocol = "tcp") - { - _dockerService = dockerService; - _isTestRunningInContainer = isTestRunningInContainer; - ServiceName = serviceName; - ServiceInternalPort = serviceInternalPort; - ServiceInternalProtocol = serviceInternalProtocol; - } - - public string? GetServiceUrl() - { - if (!ContainerExists) - { - return null; - } - - return _isTestRunningInContainer - ? GetServiceUrlWhenRunningInsideContainer() - : GetUrlFromOutsideContainer(Container, ServiceInternalPortAndProtocol); - } - - private string GetServiceUrlWhenRunningInsideContainer() - { - return $"http://{ServiceName}:{ServiceInternalPort}"; - } - - private static string GetUrlFromOutsideContainer(IContainerService container, string portAndProto) - { - var ipEndpoint = container.ToHostExposedEndpoint(portAndProto); - return $"http://{ipEndpoint.Address}:{ipEndpoint.Port}"; - } - - protected virtual void Dispose(bool disposing) - { - if (disposing) - { - _container?.Dispose(); - } - } - - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } -} - -public sealed class AppContainer : ComposeService -{ - public AppContainer(ICompositeService dockerService, bool isTestRunningInContainer) - : base(dockerService, isTestRunningInContainer, "app", "8080") - { - } -} - -public sealed class LoginContainer : ComposeService -{ - public LoginContainer(ICompositeService dockerService, bool isTestRunningInContainer) - : base(dockerService, isTestRunningInContainer, "login", "8080") - { - } -} - - -public sealed class TestAppContainer : IDisposable -{ - private IContainerService? _testApplicationContainer; - private bool _hasCheckedForThisContainer; - public IContainerService? Container - { - get - { - if (!_hasCheckedForThisContainer) - { - _testApplicationContainer = _dockerHost.GetRunningContainers() - .FirstOrDefault(x => x.Id.StartsWith(Environment.MachineName)); - - if (_testApplicationContainer is not null) - { - // If the test is running inside a container (i.e. usually in a pipeline), we do not want to mess with the container, just release the resources held by this program - _testApplicationContainer.RemoveOnDispose = false; - _testApplicationContainer.StopOnDispose = false; - } - - _hasCheckedForThisContainer = true; - } - - return _testApplicationContainer; - } - } - - private bool _hasCheckedIfTestRunInContainer; - private bool _isTestRunningInContainer; - public bool IsTestRunningInContainer - { - get - { - if (!_hasCheckedIfTestRunInContainer) - { - _isTestRunningInContainer = Container is not null; - _hasCheckedIfTestRunInContainer = true; - } - - return _isTestRunningInContainer; - } - } - - - private readonly IHostService _dockerHost; - - public TestAppContainer(IHostService dockerHost) - { - _dockerHost = dockerHost; - } - - public void Dispose() - { - _testApplicationContainer?.Dispose(); - } -} \ No newline at end of file diff --git a/tests/WebApi.Tests.System/Constants.cs b/tests/WebApi.Tests.System/Constants.cs deleted file mode 100644 index 4f05ff6..0000000 --- a/tests/WebApi.Tests.System/Constants.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace WebApi.Tests.System; - -public static class Constants -{ - public static class Login - { - public const string ClientId = "vegasco"; - public const string ClientSecret = "siIgnkijkkIxeQ9BDNwnGGUb60S53QZh"; - public const string Username = "test.user"; - public const string Password = "T3sttest."; - public const string Realm = "development"; - } -} \ No newline at end of file diff --git a/tests/WebApi.Tests.System/DockerComposeFixture.cs b/tests/WebApi.Tests.System/DockerComposeFixture.cs deleted file mode 100644 index 8922f73..0000000 --- a/tests/WebApi.Tests.System/DockerComposeFixture.cs +++ /dev/null @@ -1,301 +0,0 @@ -using Ductus.FluentDocker.Builders; -using Ductus.FluentDocker.Extensions; -using Ductus.FluentDocker.Model.Common; -using Ductus.FluentDocker.Model.Compose; -using Ductus.FluentDocker.Services; -using Ductus.FluentDocker.Services.Extensions; - -namespace WebApi.Tests.System; - -public sealed class DockerComposeFixture : IDisposable -{ - private const string ComposeFileName = "compose.system.yaml"; - - private const string AppServiceName = "app"; - private const string AppServiceInternalPort = "8080"; - private const string AppServiceInternalPortAndProtocol = $"{AppServiceInternalPort}/tcp"; - - private const string LoginServiceName = "login"; - private const string LoginServiceInternalPort = "8080"; - private const string LoginServiceInternalPortAndProtocol = $"{LoginServiceInternalPort}/tcp"; - - private static readonly string ComposeFilePath = Path.GetFullPath(Path.Combine("../../..", ComposeFileName)); - - private readonly ICompositeService _dockerService; - - - private bool _hasCheckedForThisContainer; - private bool _hasCheckedIfTestRunInContainer; - - private IHostService? _host; - - private bool _isTestRunningInContainer; - private INetworkService? _networkService; - private IContainerService? _testApplicationContainer; - - public DockerComposeFixture() - { - _dockerService = GetDockerComposeServices(); - _dockerService.Start(); - AttachDockerNetworksIfRunningInContainer(); - } - - private IContainerService? _appContainer; - public IContainerService AppContainer - { - get - { - _appContainer ??= _dockerService.Containers.First(x => x.Name == AppServiceName); - return _appContainer; - } - } - - private IContainerService? _loginContainer; - public IContainerService LoginContainer - { - get - { - _loginContainer ??= _dockerService.Containers.First(x => x.Name == LoginServiceName); - return _loginContainer; - } - } - - public IContainerService? TestApplicationContainer - { - get - { - if (!_hasCheckedForThisContainer) - { - _testApplicationContainer = DockerHost.GetRunningContainers() - .FirstOrDefault(x => x.Id.StartsWith(Environment.MachineName)); - - if (_testApplicationContainer is not null) - { - // If the test is running inside a container (i.e. usually in a pipeline), we do not want to mess with the container, just release the resources held by this program - _testApplicationContainer.RemoveOnDispose = false; - _testApplicationContainer.StopOnDispose = false; - } - - _hasCheckedForThisContainer = true; - } - - return _testApplicationContainer; - } - } - - public IHostService DockerHost - { - get - { - var hosts = new Hosts().Discover(); - _host = hosts.FirstOrDefault(x => x.IsNative) ?? - hosts.FirstOrDefault(x => x.Name == "default") ?? - hosts.FirstOrDefault(); - - if (_host is null) throw new InvalidOperationException("No docker host found"); - - return _host; - } - } - - public bool IsTestRunningInContainer - { - get - { - if (!_hasCheckedIfTestRunInContainer) - { - _isTestRunningInContainer = TestApplicationContainer is not null; - _hasCheckedIfTestRunInContainer = true; - } - - return _isTestRunningInContainer; - } - } - - public void Dispose() - { - _networkService?.Dispose(); - - _testApplicationContainer?.Dispose(); - _appContainer?.Dispose(); - _loginContainer?.Dispose(); - - // Kill container because otherwise the _dockerService.Dispose() takes much longer - KillDockerComposeServices(); - - _dockerService.Dispose(); - - _host?.Dispose(); - } - - private ICompositeService GetDockerComposeServices() - { - var services = new Builder() - .UseContainer() - .UseCompose() - .AssumeComposeVersion(ComposeVersion.V2) - .FromFile((TemplateString)ComposeFilePath) - .ForceBuild() - .RemoveOrphans() - .Wait("app", WaitForApplicationToListenToRequests) - .Build(); - - return services; - } - - private int WaitForApplicationToListenToRequests(IContainerService container, int iteration) - { - const int maxTryCount = 15; - ArgumentOutOfRangeException.ThrowIfGreaterThan(iteration, maxTryCount); - - var isStarted = container.Logs().ReadToEnd().Reverse().Any(x => x.Contains("Now listening on:")); - return isStarted ? 0 : 500; - } - - private void AttachDockerNetworksIfRunningInContainer() - { - if (!IsTestRunningInContainer) return; - - var randomNetworkName = Guid.NewGuid().ToString("N"); - _networkService = DockerHost.CreateNetwork(randomNetworkName, removeOnDispose: true); - - _networkService.Attach(AppContainer, true, AppServiceName); - _networkService.Attach(TestApplicationContainer, true); - } - - public string GetAppUrl() - { - return IsTestRunningInContainer - ? GetAppUrlWhenRunningInsideContainer() - : GetUrlFromOutsideContainer(AppContainer, AppServiceInternalPortAndProtocol); - } - - private static string GetAppUrlWhenRunningInsideContainer() - { - return $"http://{AppServiceName}:{AppServiceInternalPort}"; - } - - public string GetLoginUrl() - { - return IsTestRunningInContainer - ? GetLoginUrlWhenRunningInsideContainer() - : GetUrlFromOutsideContainer(LoginContainer, LoginServiceInternalPortAndProtocol); - } - - private static string GetLoginUrlWhenRunningInsideContainer() - { - return $"http://{LoginServiceName}:{LoginServiceInternalPort}"; - } - - private static string GetUrlFromOutsideContainer(IContainerService container, string portAndProto) - { - var ipEndpoint = container.ToHostExposedEndpoint(portAndProto); - return $"http://{ipEndpoint.Address}:{ipEndpoint.Port}"; - } - - private void KillDockerComposeServices() - { - foreach (var container in _dockerService.Containers) container.Remove(true); - } -} - - -public sealed class DockerComposeFixture2 : IDisposable -{ - private const string ComposeFileName = "compose.system.yaml"; - - private static readonly string ComposeFilePath = Path.GetFullPath(Path.Combine("../../..", ComposeFileName)); - - private readonly ICompositeService _dockerService; - - private IHostService? _host; - - private INetworkService? _networkService; - - public AppContainer AppContainer { get; init; } - public LoginContainer LoginContainer { get; init; } - public TestAppContainer TestApplicationContainer { get; init; } - - public DockerComposeFixture2() - { - _dockerService = GetDockerComposeServices(); - _dockerService.Start(); - - TestApplicationContainer = new TestAppContainer(DockerHost); - AppContainer = new AppContainer(_dockerService, TestApplicationContainer.IsTestRunningInContainer); - LoginContainer = new LoginContainer(_dockerService, TestApplicationContainer.IsTestRunningInContainer); - - AttachDockerNetworksIfRunningInContainer(); - } - - public IHostService DockerHost - { - get - { - var hosts = new Hosts().Discover(); - _host = hosts.FirstOrDefault(x => x.IsNative) ?? - hosts.FirstOrDefault(x => x.Name == "default") ?? - hosts.FirstOrDefault(); - - if (_host is null) throw new InvalidOperationException("No docker host found"); - - return _host; - } - } - - public void Dispose() - { - _networkService?.Dispose(); - - TestApplicationContainer.Dispose(); - AppContainer.Dispose(); - LoginContainer.Dispose(); - - // Kill container because otherwise the _dockerService.Dispose() takes much longer - KillDockerComposeServices(); - - _dockerService.Dispose(); - - _host?.Dispose(); - } - - private ICompositeService GetDockerComposeServices() - { - var services = new Builder() - .UseContainer() - .UseCompose() - .AssumeComposeVersion(ComposeVersion.V2) - .FromFile((TemplateString)ComposeFilePath) - .ForceBuild() - .RemoveOrphans() - .Wait("app", WaitForApplicationToListenToRequests) - .Build(); - - return services; - } - - private int WaitForApplicationToListenToRequests(IContainerService container, int iteration) - { - const int maxTryCount = 15; - ArgumentOutOfRangeException.ThrowIfGreaterThan(iteration, maxTryCount); - - var isStarted = container.Logs().ReadToEnd().Reverse().Any(x => x.Contains("Now listening on:")); - return isStarted ? 0 : 500; - } - - private void AttachDockerNetworksIfRunningInContainer() - { - if (!TestApplicationContainer.IsTestRunningInContainer) return; - - var randomNetworkName = Guid.NewGuid().ToString("N"); - _networkService = DockerHost.CreateNetwork(randomNetworkName, removeOnDispose: true); - - _networkService.Attach(AppContainer.Container!, true, AppContainer.ServiceName); - _networkService.Attach(TestApplicationContainer.Container, true); - } - - private void KillDockerComposeServices() - { - foreach (var container in _dockerService.Containers) container.Remove(true); - } -} \ No newline at end of file diff --git a/tests/WebApi.Tests.System/Dockerfile.keycloak b/tests/WebApi.Tests.System/Dockerfile.keycloak deleted file mode 100644 index c71c02f..0000000 --- a/tests/WebApi.Tests.System/Dockerfile.keycloak +++ /dev/null @@ -1,8 +0,0 @@ -FROM registry.access.redhat.com/ubi9 AS ubi-micro-build -RUN mkdir -p /mnt/rootfs -RUN dnf install --installroot /mnt/rootfs curl --releasever 9 --setopt install_weak_deps=false --nodocs -y && \ - dnf --installroot /mnt/rootfs clean all && \ - rpm --root /mnt/rootfs -e --nodeps setup - -FROM quay.io/keycloak/keycloak -COPY --from=ubi-micro-build /mnt/rootfs / \ No newline at end of file diff --git a/tests/WebApi.Tests.System/SharedTestCollection.cs b/tests/WebApi.Tests.System/SharedTestCollection.cs deleted file mode 100644 index 94787b7..0000000 --- a/tests/WebApi.Tests.System/SharedTestCollection.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace WebApi.Tests.System; - -[CollectionDefinition(Name)] -public class SharedTestCollection : ICollectionFixture -{ - public const string Name = nameof(SharedTestCollection); -} diff --git a/tests/WebApi.Tests.System/SharedTestContext.cs b/tests/WebApi.Tests.System/SharedTestContext.cs deleted file mode 100644 index aca0b6d..0000000 --- a/tests/WebApi.Tests.System/SharedTestContext.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace WebApi.Tests.System; - -public sealed class SharedTestContext : IDisposable -{ - public DockerComposeFixture2 DockerComposeFixture { get; set; } = new(); - - public void Dispose() - { - DockerComposeFixture.Dispose(); - } -} diff --git a/tests/WebApi.Tests.System/Test.cs b/tests/WebApi.Tests.System/Test.cs deleted file mode 100644 index 38aaf15..0000000 --- a/tests/WebApi.Tests.System/Test.cs +++ /dev/null @@ -1,57 +0,0 @@ -using System.Net.Http.Headers; -using System.Text; -using System.Text.Json; - -namespace WebApi.Tests.System; - -[Collection(SharedTestCollection.Name)] -public class Test -{ - private readonly SharedTestContext _context; - - public Test(SharedTestContext context) - { - _context = context; - } - - //[Fact] - public async Task Test1() - { - var loginUrl = _context.DockerComposeFixture.LoginContainer.GetServiceUrl(); - var baseUrl = new Uri(loginUrl!, UriKind.Absolute); - var relativeUrl = new Uri($"/realms/{Constants.Login.Realm}/protocol/openid-connect/token", UriKind.Relative); - var uri = new Uri(baseUrl, relativeUrl); - var request = new HttpRequestMessage(HttpMethod.Post, uri); - - var data = new Dictionary - { - { "grant_type", "password" }, - { "audience", Constants.Login.ClientId }, - { "username", Constants.Login.Username }, - { "password", Constants.Login.Password } - }; - request.Content = new FormUrlEncodedContent(data); - - request.Headers.Authorization = new AuthenticationHeaderValue("Basic", - Convert.ToBase64String(Encoding.UTF8.GetBytes($"{Constants.Login.ClientId}:{Constants.Login.ClientSecret}"))); - - using var client = new HttpClient(); - using var response = await client.SendAsync(request); - - var content = await response.Content.ReadAsStringAsync(); - var tokenResponse = JsonSerializer.Deserialize(content); - - var appUrl = _context.DockerComposeFixture.AppContainer.GetServiceUrl(); - baseUrl = new Uri(appUrl!, UriKind.Absolute); - relativeUrl = new Uri("/v1/cars", UriKind.Relative); - uri = new Uri(baseUrl, relativeUrl); - - request = new HttpRequestMessage(HttpMethod.Get, uri); - request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", tokenResponse!.AccessToken); - - using var response2 = await client.SendAsync(request); - - var content2 = await response2.Content.ReadAsStringAsync(); - - } -} \ No newline at end of file diff --git a/tests/WebApi.Tests.System/TokenResponse.cs b/tests/WebApi.Tests.System/TokenResponse.cs deleted file mode 100644 index 58b157a..0000000 --- a/tests/WebApi.Tests.System/TokenResponse.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System.Text.Json.Serialization; - -namespace WebApi.Tests.System; - -public class TokenResponse -{ - [JsonPropertyName("access_token")] - public required string AccessToken { get; init; } -} \ No newline at end of file diff --git a/tests/WebApi.Tests.System/WebApi.Tests.System.csproj b/tests/WebApi.Tests.System/WebApi.Tests.System.csproj deleted file mode 100644 index a49cc70..0000000 --- a/tests/WebApi.Tests.System/WebApi.Tests.System.csproj +++ /dev/null @@ -1,34 +0,0 @@ - - - - net9.0 - enable - enable - - false - true - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - - - - - diff --git a/tests/WebApi.Tests.System/compose.system.yaml b/tests/WebApi.Tests.System/compose.system.yaml deleted file mode 100644 index 9c15fa0..0000000 --- a/tests/WebApi.Tests.System/compose.system.yaml +++ /dev/null @@ -1,72 +0,0 @@ -services: - app: - build: ../../src/WebApi - environment: - Vegasco_ConnectionStrings__Default: "Host=db;Port=5432;Database=postgres;Username=postgres;Password=postgres" - Vegasco_JWT__MetadataUrl: http://login:8080/realms/development/.well-known/openid-configuration - Vegasco_JWT__ValidAudience: vegasco - Vegasco_JWT__NameClaimType: name - Vegasco_JWT__AllowHttpMetadataUrl: "true" - ports: - - "8080" - depends_on: - db: - condition: service_healthy - login: - condition: service_healthy - - db: - image: postgres:16.3-alpine - environment: - POSTGRES_USER: postgres - POSTGRES_PASSWORD: postgres - healthcheck: - test: pg_isready -d postgres - interval: 5s - timeout: 2s - retries: 3 - start_period: 5s - - login: - build: - context: . - dockerfile: Dockerfile.keycloak - command: start --import-realm - environment: - KC_DB: postgres - KC_DB_URL_HOST: login-db - KC_DB_URL_PORT: 5432 - KC_DB_URL_DATABASE: keycloak - KC_DB_USERNAME: keycloak - KC_DB_PASSWORD: keycloak - KEYCLOAK_ADMIN: admin - KEYCLOAK_ADMIN_PASSWORD: admin1! - KC_HOSTNAME_STRICT: false - KC_HEALTH_ENABLED: true - KC_METRICS_ENABLED: true - KC_HTTP_ENABLED: true - ports: - - "8080" - volumes: - - ./test-realm.json:/opt/keycloak/data/import/test-realm.json:ro - depends_on: - login-db: - condition: service_healthy - healthcheck: - test: curl --head -fsS http://localhost:9000/health/ready || exit 1 - interval: 5s - timeout: 2s - retries: 6 - start_period: 5s - - login-db: - image: postgres:16-alpine - environment: - POSTGRES_USER: keycloak - POSTGRES_PASSWORD: keycloak - healthcheck: - test: pg_isready -d keycloak - interval: 5s - timeout: 2s - retries: 3 - start_period: 5s diff --git a/tests/WebApi.Tests.System/test-realm.json b/tests/WebApi.Tests.System/test-realm.json deleted file mode 100644 index 46481f5..0000000 --- a/tests/WebApi.Tests.System/test-realm.json +++ /dev/null @@ -1,1960 +0,0 @@ -{ - "id" : "59058b68-b3dd-408a-a0cc-8be9ec080347", - "realm" : "development", - "notBefore" : 0, - "defaultSignatureAlgorithm" : "RS256", - "revokeRefreshToken" : false, - "refreshTokenMaxReuse" : 0, - "accessTokenLifespan" : 300, - "accessTokenLifespanForImplicitFlow" : 900, - "ssoSessionIdleTimeout" : 1800, - "ssoSessionMaxLifespan" : 36000, - "ssoSessionIdleTimeoutRememberMe" : 0, - "ssoSessionMaxLifespanRememberMe" : 0, - "offlineSessionIdleTimeout" : 2592000, - "offlineSessionMaxLifespanEnabled" : false, - "offlineSessionMaxLifespan" : 5184000, - "clientSessionIdleTimeout" : 0, - "clientSessionMaxLifespan" : 0, - "clientOfflineSessionIdleTimeout" : 0, - "clientOfflineSessionMaxLifespan" : 0, - "accessCodeLifespan" : 60, - "accessCodeLifespanUserAction" : 300, - "accessCodeLifespanLogin" : 1800, - "actionTokenGeneratedByAdminLifespan" : 43200, - "actionTokenGeneratedByUserLifespan" : 300, - "oauth2DeviceCodeLifespan" : 600, - "oauth2DevicePollingInterval" : 5, - "enabled" : true, - "sslRequired" : "external", - "registrationAllowed" : false, - "registrationEmailAsUsername" : false, - "rememberMe" : false, - "verifyEmail" : false, - "loginWithEmailAllowed" : true, - "duplicateEmailsAllowed" : false, - "resetPasswordAllowed" : false, - "editUsernameAllowed" : false, - "bruteForceProtected" : false, - "permanentLockout" : false, - "maxTemporaryLockouts" : 0, - "maxFailureWaitSeconds" : 900, - "minimumQuickLoginWaitSeconds" : 60, - "waitIncrementSeconds" : 60, - "quickLoginCheckMilliSeconds" : 1000, - "maxDeltaTimeSeconds" : 43200, - "failureFactor" : 30, - "roles" : { - "realm" : [ { - "id" : "99223865-08d1-446f-986d-2fb8cff0730b", - "name" : "offline_access", - "description" : "${role_offline-access}", - "composite" : false, - "clientRole" : false, - "containerId" : "59058b68-b3dd-408a-a0cc-8be9ec080347", - "attributes" : { } - }, { - "id" : "f9f1c2d3-dd92-4527-82d1-5d4a9b2ced66", - "name" : "default-roles-development", - "description" : "${role_default-roles}", - "composite" : true, - "composites" : { - "realm" : [ "offline_access", "uma_authorization" ], - "client" : { - "account" : [ "view-profile", "manage-account" ] - } - }, - "clientRole" : false, - "containerId" : "59058b68-b3dd-408a-a0cc-8be9ec080347", - "attributes" : { } - }, { - "id" : "8986fd0e-4c10-4fb7-a8f6-83e408c29e95", - "name" : "uma_authorization", - "description" : "${role_uma_authorization}", - "composite" : false, - "clientRole" : false, - "containerId" : "59058b68-b3dd-408a-a0cc-8be9ec080347", - "attributes" : { } - } ], - "client" : { - "realm-management" : [ { - "id" : "5964f7e7-3702-4499-b3f6-7aa1d3e80f11", - "name" : "create-client", - "description" : "${role_create-client}", - "composite" : false, - "clientRole" : true, - "containerId" : "beea0490-5673-465b-8bd9-2bb7dd546429", - "attributes" : { } - }, { - "id" : "4f2daa75-e42b-41bb-aa10-22aa64936a93", - "name" : "realm-admin", - "description" : "${role_realm-admin}", - "composite" : true, - "composites" : { - "client" : { - "realm-management" : [ "create-client", "manage-authorization", "manage-users", "view-authorization", "view-users", "manage-identity-providers", "impersonation", "manage-realm", "view-realm", "query-users", "manage-events", "query-clients", "query-groups", "manage-clients", "view-clients", "view-identity-providers", "query-realms", "view-events" ] - } - }, - "clientRole" : true, - "containerId" : "beea0490-5673-465b-8bd9-2bb7dd546429", - "attributes" : { } - }, { - "id" : "f64e7de4-fc10-491c-8f7f-817b70c53cbc", - "name" : "manage-authorization", - "description" : "${role_manage-authorization}", - "composite" : false, - "clientRole" : true, - "containerId" : "beea0490-5673-465b-8bd9-2bb7dd546429", - "attributes" : { } - }, { - "id" : "64bdb656-58fc-4059-83f5-6af88e0d2d94", - "name" : "manage-users", - "description" : "${role_manage-users}", - "composite" : false, - "clientRole" : true, - "containerId" : "beea0490-5673-465b-8bd9-2bb7dd546429", - "attributes" : { } - }, { - "id" : "9acf79b8-6026-426a-b788-078833c96046", - "name" : "view-authorization", - "description" : "${role_view-authorization}", - "composite" : false, - "clientRole" : true, - "containerId" : "beea0490-5673-465b-8bd9-2bb7dd546429", - "attributes" : { } - }, { - "id" : "00172343-72d7-46f8-b1bb-30c98d062335", - "name" : "view-users", - "description" : "${role_view-users}", - "composite" : true, - "composites" : { - "client" : { - "realm-management" : [ "query-users", "query-groups" ] - } - }, - "clientRole" : true, - "containerId" : "beea0490-5673-465b-8bd9-2bb7dd546429", - "attributes" : { } - }, { - "id" : "aaf57855-d18e-4ebf-a89f-8479d6584c78", - "name" : "manage-identity-providers", - "description" : "${role_manage-identity-providers}", - "composite" : false, - "clientRole" : true, - "containerId" : "beea0490-5673-465b-8bd9-2bb7dd546429", - "attributes" : { } - }, { - "id" : "843a9a47-a4d6-46b7-bd15-56134419df36", - "name" : "impersonation", - "description" : "${role_impersonation}", - "composite" : false, - "clientRole" : true, - "containerId" : "beea0490-5673-465b-8bd9-2bb7dd546429", - "attributes" : { } - }, { - "id" : "83d6dabe-adf4-4921-b84f-0cb6d67c8524", - "name" : "manage-realm", - "description" : "${role_manage-realm}", - "composite" : false, - "clientRole" : true, - "containerId" : "beea0490-5673-465b-8bd9-2bb7dd546429", - "attributes" : { } - }, { - "id" : "4f8fbeb9-2150-48d3-9ff0-fadb9f952dec", - "name" : "view-realm", - "description" : "${role_view-realm}", - "composite" : false, - "clientRole" : true, - "containerId" : "beea0490-5673-465b-8bd9-2bb7dd546429", - "attributes" : { } - }, { - "id" : "da835590-2ff2-47a3-8eda-9ddd27f1f55e", - "name" : "query-users", - "description" : "${role_query-users}", - "composite" : false, - "clientRole" : true, - "containerId" : "beea0490-5673-465b-8bd9-2bb7dd546429", - "attributes" : { } - }, { - "id" : "9dd8eac9-f0b8-47eb-aa16-fdbcb716ffa8", - "name" : "manage-events", - "description" : "${role_manage-events}", - "composite" : false, - "clientRole" : true, - "containerId" : "beea0490-5673-465b-8bd9-2bb7dd546429", - "attributes" : { } - }, { - "id" : "7fdafa52-5875-4f1c-bc2f-bcfe56214329", - "name" : "query-clients", - "description" : "${role_query-clients}", - "composite" : false, - "clientRole" : true, - "containerId" : "beea0490-5673-465b-8bd9-2bb7dd546429", - "attributes" : { } - }, { - "id" : "9d4ecec1-6b73-42dc-a7ec-fc9b89e35cec", - "name" : "query-groups", - "description" : "${role_query-groups}", - "composite" : false, - "clientRole" : true, - "containerId" : "beea0490-5673-465b-8bd9-2bb7dd546429", - "attributes" : { } - }, { - "id" : "125ca24f-fde8-4340-9c59-ff8b605a89e6", - "name" : "manage-clients", - "description" : "${role_manage-clients}", - "composite" : false, - "clientRole" : true, - "containerId" : "beea0490-5673-465b-8bd9-2bb7dd546429", - "attributes" : { } - }, { - "id" : "7a45ba95-b3e3-4b84-a1d4-1b725a182667", - "name" : "view-clients", - "description" : "${role_view-clients}", - "composite" : true, - "composites" : { - "client" : { - "realm-management" : [ "query-clients" ] - } - }, - "clientRole" : true, - "containerId" : "beea0490-5673-465b-8bd9-2bb7dd546429", - "attributes" : { } - }, { - "id" : "ecf9933f-de72-4917-8553-7e18332d217d", - "name" : "view-identity-providers", - "description" : "${role_view-identity-providers}", - "composite" : false, - "clientRole" : true, - "containerId" : "beea0490-5673-465b-8bd9-2bb7dd546429", - "attributes" : { } - }, { - "id" : "c51ed824-8455-4584-883e-135d9af5ee4b", - "name" : "query-realms", - "description" : "${role_query-realms}", - "composite" : false, - "clientRole" : true, - "containerId" : "beea0490-5673-465b-8bd9-2bb7dd546429", - "attributes" : { } - }, { - "id" : "5c72a2e9-bc45-4ae0-a5cf-d09e70c1b61c", - "name" : "view-events", - "description" : "${role_view-events}", - "composite" : false, - "clientRole" : true, - "containerId" : "beea0490-5673-465b-8bd9-2bb7dd546429", - "attributes" : { } - } ], - "vegasco" : [ ], - "security-admin-console" : [ ], - "admin-cli" : [ ], - "account-console" : [ ], - "broker" : [ { - "id" : "386764da-c0c3-46c8-ae18-518eff6b6b84", - "name" : "read-token", - "description" : "${role_read-token}", - "composite" : false, - "clientRole" : true, - "containerId" : "1f8df246-a2f8-4f21-8c20-eda7dcdae2b6", - "attributes" : { } - } ], - "account" : [ { - "id" : "c6e146aa-1a5c-4fcc-9a65-7033c5ec1c95", - "name" : "manage-account-links", - "description" : "${role_manage-account-links}", - "composite" : false, - "clientRole" : true, - "containerId" : "cc404b9b-7c8d-49f9-a299-f1bd4477193f", - "attributes" : { } - }, { - "id" : "3141a4ac-31b6-4eb4-9b13-29ea1317b721", - "name" : "manage-consent", - "description" : "${role_manage-consent}", - "composite" : true, - "composites" : { - "client" : { - "account" : [ "view-consent" ] - } - }, - "clientRole" : true, - "containerId" : "cc404b9b-7c8d-49f9-a299-f1bd4477193f", - "attributes" : { } - }, { - "id" : "7f7e8345-2e96-40af-94c8-f1b4e3d0314a", - "name" : "view-profile", - "description" : "${role_view-profile}", - "composite" : false, - "clientRole" : true, - "containerId" : "cc404b9b-7c8d-49f9-a299-f1bd4477193f", - "attributes" : { } - }, { - "id" : "18e3cd14-4705-4f5d-ab70-c368cab6434e", - "name" : "delete-account", - "description" : "${role_delete-account}", - "composite" : false, - "clientRole" : true, - "containerId" : "cc404b9b-7c8d-49f9-a299-f1bd4477193f", - "attributes" : { } - }, { - "id" : "68a0330a-0c0a-480c-80b4-2d7a11905741", - "name" : "view-groups", - "description" : "${role_view-groups}", - "composite" : false, - "clientRole" : true, - "containerId" : "cc404b9b-7c8d-49f9-a299-f1bd4477193f", - "attributes" : { } - }, { - "id" : "7ee101f9-fab5-4cf2-ab0c-f8d8b2eea394", - "name" : "manage-account", - "description" : "${role_manage-account}", - "composite" : true, - "composites" : { - "client" : { - "account" : [ "manage-account-links" ] - } - }, - "clientRole" : true, - "containerId" : "cc404b9b-7c8d-49f9-a299-f1bd4477193f", - "attributes" : { } - }, { - "id" : "c0b24a71-4f3c-4ed1-9eee-84e3cbba9adb", - "name" : "view-consent", - "description" : "${role_view-consent}", - "composite" : false, - "clientRole" : true, - "containerId" : "cc404b9b-7c8d-49f9-a299-f1bd4477193f", - "attributes" : { } - }, { - "id" : "e06cb945-b1d9-4013-ba54-c5e72ad08d65", - "name" : "view-applications", - "description" : "${role_view-applications}", - "composite" : false, - "clientRole" : true, - "containerId" : "cc404b9b-7c8d-49f9-a299-f1bd4477193f", - "attributes" : { } - } ] - } - }, - "groups" : [ ], - "defaultRole" : { - "id" : "f9f1c2d3-dd92-4527-82d1-5d4a9b2ced66", - "name" : "default-roles-development", - "description" : "${role_default-roles}", - "composite" : true, - "clientRole" : false, - "containerId" : "59058b68-b3dd-408a-a0cc-8be9ec080347" - }, - "requiredCredentials" : [ "password" ], - "otpPolicyType" : "totp", - "otpPolicyAlgorithm" : "HmacSHA1", - "otpPolicyInitialCounter" : 0, - "otpPolicyDigits" : 6, - "otpPolicyLookAheadWindow" : 1, - "otpPolicyPeriod" : 30, - "otpPolicyCodeReusable" : false, - "otpSupportedApplications" : [ "totpAppFreeOTPName", "totpAppGoogleName", "totpAppMicrosoftAuthenticatorName" ], - "localizationTexts" : { }, - "webAuthnPolicyRpEntityName" : "keycloak", - "webAuthnPolicySignatureAlgorithms" : [ "ES256" ], - "webAuthnPolicyRpId" : "", - "webAuthnPolicyAttestationConveyancePreference" : "not specified", - "webAuthnPolicyAuthenticatorAttachment" : "not specified", - "webAuthnPolicyRequireResidentKey" : "not specified", - "webAuthnPolicyUserVerificationRequirement" : "not specified", - "webAuthnPolicyCreateTimeout" : 0, - "webAuthnPolicyAvoidSameAuthenticatorRegister" : false, - "webAuthnPolicyAcceptableAaguids" : [ ], - "webAuthnPolicyExtraOrigins" : [ ], - "webAuthnPolicyPasswordlessRpEntityName" : "keycloak", - "webAuthnPolicyPasswordlessSignatureAlgorithms" : [ "ES256" ], - "webAuthnPolicyPasswordlessRpId" : "", - "webAuthnPolicyPasswordlessAttestationConveyancePreference" : "not specified", - "webAuthnPolicyPasswordlessAuthenticatorAttachment" : "not specified", - "webAuthnPolicyPasswordlessRequireResidentKey" : "not specified", - "webAuthnPolicyPasswordlessUserVerificationRequirement" : "not specified", - "webAuthnPolicyPasswordlessCreateTimeout" : 0, - "webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister" : false, - "webAuthnPolicyPasswordlessAcceptableAaguids" : [ ], - "webAuthnPolicyPasswordlessExtraOrigins" : [ ], - "users" : [ { - "id" : "c5404b32-c20e-4af1-859b-18e2df6998a2", - "username" : "test.user", - "firstName" : "test", - "lastName" : "user", - "email" : "test.user@example.com", - "emailVerified" : true, - "createdTimestamp" : 1722885095042, - "enabled" : true, - "totp" : false, - "credentials" : [ { - "id" : "55a67bcf-b7df-4e10-840c-8cedc2e263af", - "type" : "password", - "createdDate" : 1722885095911, - "secretData" : "{\"value\":\"A9/c6FWaGkk7fC9qQmiiH3FlFFpWBjg9ZSvgnJIkd68=\",\"salt\":\"ec93soiRD3MWjohp8XWxfw==\",\"additionalParameters\":{}}", - "credentialData" : "{\"hashIterations\":5,\"algorithm\":\"argon2\",\"additionalParameters\":{\"hashLength\":[\"32\"],\"memory\":[\"7168\"],\"type\":[\"id\"],\"version\":[\"1.3\"],\"parallelism\":[\"1\"]}}" - } ], - "disableableCredentialTypes" : [ ], - "requiredActions" : [ ], - "realmRoles" : [ "default-roles-development" ], - "notBefore" : 0, - "groups" : [ ] - } ], - "scopeMappings" : [ { - "clientScope" : "offline_access", - "roles" : [ "offline_access" ] - } ], - "clientScopeMappings" : { - "account" : [ { - "client" : "account-console", - "roles" : [ "manage-account", "view-groups" ] - } ] - }, - "clients" : [ { - "id" : "cc404b9b-7c8d-49f9-a299-f1bd4477193f", - "clientId" : "account", - "name" : "${client_account}", - "rootUrl" : "${authBaseUrl}", - "baseUrl" : "/realms/development/account/", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "redirectUris" : [ "/realms/development/account/*" ], - "webOrigins" : [ ], - "notBefore" : 0, - "bearerOnly" : false, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : false, - "serviceAccountsEnabled" : false, - "publicClient" : true, - "frontchannelLogout" : false, - "protocol" : "openid-connect", - "attributes" : { - "post.logout.redirect.uris" : "+" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "protocolMappers" : [ { - "id" : "422b7172-a668-43e2-a00b-3f153793e4a1", - "name" : "docker-v2-allow-all-mapper", - "protocol" : "docker-v2", - "protocolMapper" : "docker-v2-allow-all-mapper", - "consentRequired" : false, - "config" : { } - } ], - "defaultClientScopes" : [ "web-origins", "acr", "roles", "profile", "basic", "email" ], - "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] - }, { - "id" : "7c4aaabb-f092-4ace-9bc8-6f728336cf26", - "clientId" : "account-console", - "name" : "${client_account-console}", - "rootUrl" : "${authBaseUrl}", - "baseUrl" : "/realms/development/account/", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "redirectUris" : [ "/realms/development/account/*" ], - "webOrigins" : [ ], - "notBefore" : 0, - "bearerOnly" : false, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : false, - "serviceAccountsEnabled" : false, - "publicClient" : true, - "frontchannelLogout" : false, - "protocol" : "openid-connect", - "attributes" : { - "post.logout.redirect.uris" : "+", - "pkce.code.challenge.method" : "S256" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "protocolMappers" : [ { - "id" : "a6215df7-0c5e-4347-ba79-4df4fb588b06", - "name" : "docker-v2-allow-all-mapper", - "protocol" : "docker-v2", - "protocolMapper" : "docker-v2-allow-all-mapper", - "consentRequired" : false, - "config" : { } - }, { - "id" : "5a0023ed-d354-4c0d-b8c6-a3eeada27299", - "name" : "audience resolve", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-audience-resolve-mapper", - "consentRequired" : false, - "config" : { } - } ], - "defaultClientScopes" : [ "web-origins", "acr", "roles", "profile", "basic", "email" ], - "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] - }, { - "id" : "2cbd4c50-560a-4a30-8dd8-ce69000ad431", - "clientId" : "admin-cli", - "name" : "${client_admin-cli}", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "redirectUris" : [ ], - "webOrigins" : [ ], - "notBefore" : 0, - "bearerOnly" : false, - "consentRequired" : false, - "standardFlowEnabled" : false, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : true, - "serviceAccountsEnabled" : false, - "publicClient" : true, - "frontchannelLogout" : false, - "protocol" : "openid-connect", - "attributes" : { - "post.logout.redirect.uris" : "+" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "protocolMappers" : [ { - "id" : "a3476370-00d3-44f5-882f-6bf8cdcf64c5", - "name" : "docker-v2-allow-all-mapper", - "protocol" : "docker-v2", - "protocolMapper" : "docker-v2-allow-all-mapper", - "consentRequired" : false, - "config" : { } - } ], - "defaultClientScopes" : [ "web-origins", "acr", "roles", "profile", "basic", "email" ], - "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] - }, { - "id" : "1f8df246-a2f8-4f21-8c20-eda7dcdae2b6", - "clientId" : "broker", - "name" : "${client_broker}", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "redirectUris" : [ ], - "webOrigins" : [ ], - "notBefore" : 0, - "bearerOnly" : true, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : false, - "serviceAccountsEnabled" : false, - "publicClient" : false, - "frontchannelLogout" : false, - "protocol" : "openid-connect", - "attributes" : { - "post.logout.redirect.uris" : "+" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "protocolMappers" : [ { - "id" : "ad293b7e-096d-48a0-9ac9-27e357f50bdb", - "name" : "docker-v2-allow-all-mapper", - "protocol" : "docker-v2", - "protocolMapper" : "docker-v2-allow-all-mapper", - "consentRequired" : false, - "config" : { } - } ], - "defaultClientScopes" : [ "web-origins", "acr", "roles", "profile", "basic", "email" ], - "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] - }, { - "id" : "beea0490-5673-465b-8bd9-2bb7dd546429", - "clientId" : "realm-management", - "name" : "${client_realm-management}", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "redirectUris" : [ ], - "webOrigins" : [ ], - "notBefore" : 0, - "bearerOnly" : true, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : false, - "serviceAccountsEnabled" : false, - "publicClient" : false, - "frontchannelLogout" : false, - "protocol" : "openid-connect", - "attributes" : { - "post.logout.redirect.uris" : "+" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "protocolMappers" : [ { - "id" : "de0cbd5d-29f7-49e8-8f72-dccbea133782", - "name" : "docker-v2-allow-all-mapper", - "protocol" : "docker-v2", - "protocolMapper" : "docker-v2-allow-all-mapper", - "consentRequired" : false, - "config" : { } - } ], - "defaultClientScopes" : [ "web-origins", "acr", "roles", "profile", "basic", "email" ], - "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] - }, { - "id" : "c8e21e7a-7616-4309-9061-793ffda8936a", - "clientId" : "security-admin-console", - "name" : "${client_security-admin-console}", - "rootUrl" : "${authAdminUrl}", - "baseUrl" : "/admin/development/console/", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "redirectUris" : [ "/admin/development/console/*" ], - "webOrigins" : [ "+" ], - "notBefore" : 0, - "bearerOnly" : false, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : false, - "serviceAccountsEnabled" : false, - "publicClient" : true, - "frontchannelLogout" : false, - "protocol" : "openid-connect", - "attributes" : { - "post.logout.redirect.uris" : "+", - "pkce.code.challenge.method" : "S256" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "protocolMappers" : [ { - "id" : "f2f24f2c-7f00-4c1b-862c-a1d821965330", - "name" : "locale", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "locale", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "locale", - "jsonType.label" : "String" - } - }, { - "id" : "14db6a94-fd3f-40b2-95a2-139e329e51cf", - "name" : "docker-v2-allow-all-mapper", - "protocol" : "docker-v2", - "protocolMapper" : "docker-v2-allow-all-mapper", - "consentRequired" : false, - "config" : { } - } ], - "defaultClientScopes" : [ "web-origins", "acr", "roles", "profile", "basic", "email" ], - "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] - }, { - "id" : "d6877a14-f114-453c-a88c-dbe2472e4ed8", - "clientId" : "vegasco", - "name" : "Vegasco", - "description" : "", - "rootUrl" : "http://localhost/", - "adminUrl" : "", - "baseUrl" : "", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "secret" : "siIgnkijkkIxeQ9BDNwnGGUb60S53QZh", - "redirectUris" : [ "*" ], - "webOrigins" : [ ], - "notBefore" : 0, - "bearerOnly" : false, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : true, - "serviceAccountsEnabled" : false, - "publicClient" : false, - "frontchannelLogout" : true, - "protocol" : "openid-connect", - "attributes" : { - "oidc.ciba.grant.enabled" : "false", - "client.secret.creation.time" : "1723219692", - "backchannel.logout.session.required" : "true", - "post.logout.redirect.uris" : "*", - "display.on.consent.screen" : "false", - "oauth2.device.authorization.grant.enabled" : "false", - "backchannel.logout.revoke.offline.tokens" : "false" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : -1, - "protocolMappers" : [ { - "id" : "514219d4-0807-44c2-90e8-310634357c0e", - "name" : "Vegasco_Audience_Mapper", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-audience-mapper", - "consentRequired" : false, - "config" : { - "included.client.audience" : "vegasco", - "id.token.claim" : "false", - "lightweight.claim" : "false", - "introspection.token.claim" : "true", - "access.token.claim" : "true", - "userinfo.token.claim" : "false" - } - }, { - "id" : "de5204df-ee72-4105-9640-cc01ddf08b18", - "name" : "docker-v2-allow-all-mapper", - "protocol" : "docker-v2", - "protocolMapper" : "docker-v2-allow-all-mapper", - "consentRequired" : false, - "config" : { } - } ], - "defaultClientScopes" : [ "web-origins", "acr", "roles", "profile", "basic", "email" ], - "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] - } ], - "clientScopes" : [ { - "id" : "029c8cc4-a0b9-4c90-9f5f-63a408c7ee49", - "name" : "offline_access", - "description" : "OpenID Connect built-in scope: offline_access", - "protocol" : "openid-connect", - "attributes" : { - "consent.screen.text" : "${offlineAccessScopeConsentText}", - "display.on.consent.screen" : "true" - } - }, { - "id" : "daf886da-43dc-424d-a089-bb564085b128", - "name" : "roles", - "description" : "OpenID Connect scope for add user roles to the access token", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "false", - "consent.screen.text" : "${rolesScopeConsentText}", - "display.on.consent.screen" : "true" - }, - "protocolMappers" : [ { - "id" : "485ebff8-7f64-444a-aa59-446ab3e02c20", - "name" : "audience resolve", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-audience-resolve-mapper", - "consentRequired" : false, - "config" : { - "access.token.claim" : "true", - "introspection.token.claim" : "true" - } - }, { - "id" : "7e276de2-892a-457e-8437-0fa8d9029549", - "name" : "client roles", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-client-role-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "foo", - "introspection.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "resource_access.${client_id}.roles", - "jsonType.label" : "String", - "multivalued" : "true" - } - }, { - "id" : "35b0b4fb-9f6d-4695-9cf6-c2fc99581d4c", - "name" : "realm roles", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-realm-role-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "foo", - "introspection.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "realm_access.roles", - "jsonType.label" : "String", - "multivalued" : "true" - } - } ] - }, { - "id" : "167dfb37-d340-4fe9-ae50-6e7cbaac4f31", - "name" : "acr", - "description" : "OpenID Connect scope for add acr (authentication context class reference) to the token", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "false", - "display.on.consent.screen" : "false" - }, - "protocolMappers" : [ { - "id" : "09fc2f1e-8c67-44f8-b9fd-a837db569332", - "name" : "acr loa level", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-acr-mapper", - "consentRequired" : false, - "config" : { - "id.token.claim" : "true", - "access.token.claim" : "true", - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true" - } - } ] - }, { - "id" : "c79fc776-2b2d-43d6-b12c-f57262311b6a", - "name" : "profile", - "description" : "OpenID Connect built-in scope: profile", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "consent.screen.text" : "${profileScopeConsentText}", - "display.on.consent.screen" : "true" - }, - "protocolMappers" : [ { - "id" : "2cd6cd74-4a6a-4221-adc6-804b7227e1e5", - "name" : "birthdate", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "birthdate", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "birthdate", - "jsonType.label" : "String" - } - }, { - "id" : "0f7d36bb-7540-4063-8dcc-26c6408f6d94", - "name" : "nickname", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "nickname", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "nickname", - "jsonType.label" : "String" - } - }, { - "id" : "ce756133-7f49-43e9-8b32-ca358eddf877", - "name" : "profile", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "profile", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "profile", - "jsonType.label" : "String" - } - }, { - "id" : "1729b872-9632-4f52-8726-8d5a8e77d2ca", - "name" : "middle name", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "middleName", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "middle_name", - "jsonType.label" : "String" - } - }, { - "id" : "4db87e96-0bfd-4f05-91d1-ca675db6f74e", - "name" : "website", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "website", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "website", - "jsonType.label" : "String" - } - }, { - "id" : "0c589f3d-02ae-4584-b5d2-95c18c2c93be", - "name" : "gender", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "gender", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "gender", - "jsonType.label" : "String" - } - }, { - "id" : "985d5281-c952-47df-8ed4-6e34ba87e518", - "name" : "picture", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "picture", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "picture", - "jsonType.label" : "String" - } - }, { - "id" : "cd7d78c6-7eaa-4b92-8d70-d077d4bcee6c", - "name" : "family name", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "lastName", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "family_name", - "jsonType.label" : "String" - } - }, { - "id" : "5a0fd3a1-ab3a-4428-bb7c-de529a1021dc", - "name" : "updated at", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "updatedAt", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "updated_at", - "jsonType.label" : "long" - } - }, { - "id" : "7303fd26-77bc-45d6-8810-27e22706d3ff", - "name" : "given name", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "firstName", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "given_name", - "jsonType.label" : "String" - } - }, { - "id" : "1b9ef4aa-bd49-444c-9ba0-aa2178237beb", - "name" : "full name", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-full-name-mapper", - "consentRequired" : false, - "config" : { - "id.token.claim" : "true", - "introspection.token.claim" : "true", - "access.token.claim" : "true", - "userinfo.token.claim" : "true" - } - }, { - "id" : "aba2eec9-c04b-453a-95b7-001700e91eed", - "name" : "username", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "username", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "preferred_username", - "jsonType.label" : "String" - } - }, { - "id" : "cd17207d-9f14-4c36-991d-55eb4ef2825e", - "name" : "zoneinfo", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "zoneinfo", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "zoneinfo", - "jsonType.label" : "String" - } - }, { - "id" : "4aa38a97-aaaf-49bc-9f50-4b6c85bf8051", - "name" : "locale", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "locale", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "locale", - "jsonType.label" : "String" - } - } ] - }, { - "id" : "90531319-c512-4266-9a2c-39ca2d6c4d19", - "name" : "email", - "description" : "OpenID Connect built-in scope: email", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "consent.screen.text" : "${emailScopeConsentText}", - "display.on.consent.screen" : "true" - }, - "protocolMappers" : [ { - "id" : "3e138a1b-7dbf-4ac2-a8b4-300a0951ccb3", - "name" : "email verified", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "emailVerified", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "email_verified", - "jsonType.label" : "boolean" - } - }, { - "id" : "e50753c5-bfc5-400f-87b8-be7be8c23a87", - "name" : "email", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "email", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "email", - "jsonType.label" : "String" - } - } ] - }, { - "id" : "26fc7ca8-3561-4b0f-a79e-e983ffac13c0", - "name" : "phone", - "description" : "OpenID Connect built-in scope: phone", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "consent.screen.text" : "${phoneScopeConsentText}", - "display.on.consent.screen" : "true" - }, - "protocolMappers" : [ { - "id" : "5afe3ea6-523f-4619-bafa-02c8516af419", - "name" : "phone number verified", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "phoneNumberVerified", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "phone_number_verified", - "jsonType.label" : "boolean" - } - }, { - "id" : "7ce91fbe-4392-4126-a0df-18a6fb19c461", - "name" : "phone number", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "phoneNumber", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "phone_number", - "jsonType.label" : "String" - } - } ] - }, { - "id" : "bfc650b4-2065-47df-807d-bd0efdb59a84", - "name" : "web-origins", - "description" : "OpenID Connect scope for add allowed web origins to the access token", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "false", - "consent.screen.text" : "", - "display.on.consent.screen" : "false" - }, - "protocolMappers" : [ { - "id" : "ebafee7b-5762-45ff-8054-fad86428a70e", - "name" : "allowed web origins", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-allowed-origins-mapper", - "consentRequired" : false, - "config" : { - "access.token.claim" : "true", - "introspection.token.claim" : "true" - } - } ] - }, { - "id" : "1ef07288-a201-466e-ad80-a1160ec4d84c", - "name" : "basic", - "description" : "OpenID Connect scope for add all basic claims to the token", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "false", - "display.on.consent.screen" : "false" - }, - "protocolMappers" : [ { - "id" : "264e35b8-e5c6-4607-a412-a4b021ade86d", - "name" : "auth_time", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usersessionmodel-note-mapper", - "consentRequired" : false, - "config" : { - "user.session.note" : "AUTH_TIME", - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "auth_time", - "jsonType.label" : "long" - } - }, { - "id" : "e2d85430-984e-4933-ab8a-095018599676", - "name" : "sub", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-sub-mapper", - "consentRequired" : false, - "config" : { - "access.token.claim" : "true", - "introspection.token.claim" : "true" - } - } ] - }, { - "id" : "c2825d61-d98b-4200-9b7c-699635e4822e", - "name" : "microprofile-jwt", - "description" : "Microprofile - JWT built-in scope", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "display.on.consent.screen" : "false" - }, - "protocolMappers" : [ { - "id" : "02aef283-5cf6-4a5b-8879-0973efd8dd01", - "name" : "groups", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-realm-role-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "multivalued" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "foo", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "groups", - "jsonType.label" : "String" - } - }, { - "id" : "8938588f-e269-49c2-ad52-afe54224cdaf", - "name" : "upn", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "username", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "upn", - "jsonType.label" : "String" - } - } ] - }, { - "id" : "bfee5f0c-7b97-4569-bf06-942e6865e14c", - "name" : "role_list", - "description" : "SAML role list", - "protocol" : "saml", - "attributes" : { - "consent.screen.text" : "${samlRoleListScopeConsentText}", - "display.on.consent.screen" : "true" - }, - "protocolMappers" : [ { - "id" : "09dddeb4-9b2f-45b4-8c60-3c1d62e64d75", - "name" : "role list", - "protocol" : "saml", - "protocolMapper" : "saml-role-list-mapper", - "consentRequired" : false, - "config" : { - "single" : "false", - "attribute.nameformat" : "Basic", - "attribute.name" : "Role" - } - } ] - }, { - "id" : "773e90cb-bad8-438b-98c5-0174c799a37a", - "name" : "address", - "description" : "OpenID Connect built-in scope: address", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "consent.screen.text" : "${addressScopeConsentText}", - "display.on.consent.screen" : "true" - }, - "protocolMappers" : [ { - "id" : "94842824-7c55-4576-ab27-e03079620f39", - "name" : "address", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-address-mapper", - "consentRequired" : false, - "config" : { - "user.attribute.formatted" : "formatted", - "user.attribute.country" : "country", - "introspection.token.claim" : "true", - "user.attribute.postal_code" : "postal_code", - "userinfo.token.claim" : "true", - "user.attribute.street" : "street", - "id.token.claim" : "true", - "user.attribute.region" : "region", - "access.token.claim" : "true", - "user.attribute.locality" : "locality" - } - } ] - } ], - "defaultDefaultClientScopes" : [ "role_list", "profile", "email", "roles", "web-origins", "acr", "basic" ], - "defaultOptionalClientScopes" : [ "offline_access", "address", "phone", "microprofile-jwt" ], - "browserSecurityHeaders" : { - "contentSecurityPolicyReportOnly" : "", - "xContentTypeOptions" : "nosniff", - "referrerPolicy" : "no-referrer", - "xRobotsTag" : "none", - "xFrameOptions" : "SAMEORIGIN", - "contentSecurityPolicy" : "frame-src 'self'; frame-ancestors 'self'; object-src 'none';", - "xXSSProtection" : "1; mode=block", - "strictTransportSecurity" : "max-age=31536000; includeSubDomains" - }, - "smtpServer" : { }, - "eventsEnabled" : false, - "eventsListeners" : [ "jboss-logging" ], - "enabledEventTypes" : [ ], - "adminEventsEnabled" : false, - "adminEventsDetailsEnabled" : false, - "identityProviders" : [ ], - "identityProviderMappers" : [ ], - "components" : { - "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy" : [ { - "id" : "87c77663-33a5-41fa-805e-ad6e16ac693a", - "name" : "Allowed Client Scopes", - "providerId" : "allowed-client-templates", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { - "allow-default-scopes" : [ "true" ] - } - }, { - "id" : "93b727d6-92be-4ae7-9436-cd8a67e13576", - "name" : "Allowed Protocol Mapper Types", - "providerId" : "allowed-protocol-mappers", - "subType" : "authenticated", - "subComponents" : { }, - "config" : { - "allowed-protocol-mapper-types" : [ "oidc-usermodel-attribute-mapper", "oidc-full-name-mapper", "oidc-address-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-usermodel-property-mapper", "saml-user-attribute-mapper", "saml-role-list-mapper", "saml-user-property-mapper" ] - } - }, { - "id" : "b099d087-5954-460d-902f-def7799cb005", - "name" : "Allowed Client Scopes", - "providerId" : "allowed-client-templates", - "subType" : "authenticated", - "subComponents" : { }, - "config" : { - "allow-default-scopes" : [ "true" ] - } - }, { - "id" : "16f67ef8-1431-4241-a7a3-0849513dd422", - "name" : "Allowed Protocol Mapper Types", - "providerId" : "allowed-protocol-mappers", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { - "allowed-protocol-mapper-types" : [ "oidc-sha256-pairwise-sub-mapper", "oidc-address-mapper", "saml-user-property-mapper", "saml-role-list-mapper", "oidc-usermodel-property-mapper", "oidc-full-name-mapper", "oidc-usermodel-attribute-mapper", "saml-user-attribute-mapper" ] - } - }, { - "id" : "e86226d6-0944-4c08-b809-d72e6c7991c4", - "name" : "Max Clients Limit", - "providerId" : "max-clients", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { - "max-clients" : [ "200" ] - } - }, { - "id" : "c796a096-9c20-4983-b7bc-cb282936040f", - "name" : "Consent Required", - "providerId" : "consent-required", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { } - }, { - "id" : "76051f4c-b020-449d-a40f-664f918d0082", - "name" : "Trusted Hosts", - "providerId" : "trusted-hosts", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { - "host-sending-registration-request-must-match" : [ "true" ], - "client-uris-must-match" : [ "true" ] - } - }, { - "id" : "055d0fd2-9546-466d-b945-914f5ce84272", - "name" : "Full Scope Disabled", - "providerId" : "scope", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { } - } ], - "org.keycloak.keys.KeyProvider" : [ { - "id" : "bb2e382d-8ed7-41ab-b545-defd7cf035dd", - "name" : "rsa-enc-generated", - "providerId" : "rsa-enc-generated", - "subComponents" : { }, - "config" : { - "privateKey" : [ "MIIEowIBAAKCAQEAp+k3VByvA2qSCFXXxzJpeEUlzZiqHhWbNYy2dbd/VIBNOsaFr97fSpL1bOdEqJ20Q2xfcrI/u+Ep3CbZoHswGpfJfNU4d+yvbIFDFFavBNmtAeTxw6NiIIIvJGwnxfzed6AD7VRLDDUTLseawSesnwVWtJcF/NNiKED+CZzaXhmQBqwOrwVDlQMRUwmOhoOQWoKxnqWcvO0Gg/DFZCMT9GMwfnMRKRJE2aABix6b90aDK9AoIGtAILALOiprd2qcm5NMh9ztdSP3RpTWpvO1WqkDuxkTAL7lsc2/CymH3IQtCrQkI6f+aLZ7Xk4U9EOeq4V5HLDbHB/0fwAfyytoxwIDAQABAoIBAACllioTr0AHVsSiXzi467uH0IA+8867lLHcscPNZ3UlLNKBrjDCBzZgHEVmtNQ5Di43HEdq7mgKkzqGqKq3+aVS0cO99kpD+eMFniH0Q8VVgyv2b7dDwcyiD0VZybWD9f8wp269HWinsJDjRFEMNRkWNDK4+X4R+iZxWNnRTxYed0pdOTfWFX+iyQRefhOzReZjyxoM8xUmehiMpl4X/wYo6QxOW28ZKAtgZKDfiBymXmG1hMbk75Ktm5z5iy1vceZn19CfK56kTA4Y3OtOFwHaBu5Oq+4fgByS+EVv4dVAcR5mtKJV3z34L8xjg/J4dnosn7ZXMmCC5UWxb944Zu0CgYEA2q0zGuBaAwjjwE7AUtd+lpKJrEtm/3FzUXCSxpcgr6yGMcOaZlQKPNp+QnFOHo59O0CQqsDU7t/TRyNDKhtc4r1KYR+n8KHnW/l/bA3GIZtydFW+OcUL4lQGm1ZyVo3UsFaTCRa59TeFpDIX5gWS+/CeqgGuUdBNLlbg5D4LItsCgYEAxJHg4yhEDNpHf8oH7IlUB1NYwMX1pv0xgK9RYksCB2Z+Dec8JI9bheeb6S0pb0rkbLrwjVyNbV4/dZn6oYfLzI5gdu5/qKDxy5g+tg3C2VkLyT3ONM4IPKoCt86ZokFdzqItPPVWYZ0DUr78yzpJDjgnB84Y6HbOGx95IneT94UCgYAkIucFE/oL8lYgm2Lwzaefnkud6z/0Cn1yAdZfdu3x2eK7KoXDTzP55mli9XJhXk6Xkg3WCdOmPdqeMNeSh78LwRgfgKmx/C9NZaeG5afOOe/qBZlP1p4mIpiM5vYyE3IISeY2ZEkKmsg84AJPArDNbW/qzChQYMnAVJ8JWK9ibQKBgHBqnRpMJN7U1p8Wg4Ga6BtoZxGYJOzjUDQwD3MPQpHI474/x/2Anu7tjhTEZzXmtswX/QpbK+aoR9KRxOwsJTlPE4vwycE+ignNf8/N/ukeK8djOVKpobxP3k4QMXzBtUw/I3ABPu2ERipEX346Tx16r5efHk+T4jtQvI4hpNWhAoGBAK493H9KZQdjlMcoMvHS2wH26vLRIOA1/urC5KKMSHqcTdFneXFdz55u78uuCCRC9Qmv89RvWyfp7asadymtaFYKQGZnGUvNpNOm+c/nPy2bywrCHcUWU8OYUyrJM3m2AQuSwQVyKjWCJrAtclomd2fLvpJ1KF26l0fq1BNF23DS" ], - "certificate" : [ "MIICpTCCAY0CBgGRI/HPRTANBgkqhkiG9w0BAQsFADAWMRQwEgYDVQQDDAtkZXZlbG9wbWVudDAeFw0yNDA4MDUxOTA3MTVaFw0zNDA4MDUxOTA4NTVaMBYxFDASBgNVBAMMC2RldmVsb3BtZW50MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp+k3VByvA2qSCFXXxzJpeEUlzZiqHhWbNYy2dbd/VIBNOsaFr97fSpL1bOdEqJ20Q2xfcrI/u+Ep3CbZoHswGpfJfNU4d+yvbIFDFFavBNmtAeTxw6NiIIIvJGwnxfzed6AD7VRLDDUTLseawSesnwVWtJcF/NNiKED+CZzaXhmQBqwOrwVDlQMRUwmOhoOQWoKxnqWcvO0Gg/DFZCMT9GMwfnMRKRJE2aABix6b90aDK9AoIGtAILALOiprd2qcm5NMh9ztdSP3RpTWpvO1WqkDuxkTAL7lsc2/CymH3IQtCrQkI6f+aLZ7Xk4U9EOeq4V5HLDbHB/0fwAfyytoxwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQCUtjMYZWBiildDYkd2iI8b8G1n6qvZ1q+x/JIYUNVbFWUfC7lfiCIua6YwgJluI4RcZ5hFpHWWxzW/Cz8RTymsM7oCwGa3Nv5cUZLGOB4B6FC3nDNdJm1WP2ICqsu9HpS6BReS8WCTQ+r+zgE/hO9SCtffuEAmib+ICKOE7KhYkqveN835la9rlfVbgbKl7aHdtJz+JqFEdgAM+kdpuT+csINuoXQpn5MWBs1wvdQNu7tA7m01vCaJg00a43FxSXJjq/lxUGXLdRoAqe0SFqkMnpdqfV8XZClA9Kgs6FBFG6xKikJLeD5M61UA/P8WXHEgPbWcy1chFYQyeimmxEzl" ], - "priority" : [ "100" ], - "algorithm" : [ "RSA-OAEP" ] - } - }, { - "id" : "ca7e3c60-4007-4fbd-bb58-80989d4ef95f", - "name" : "aes-generated", - "providerId" : "aes-generated", - "subComponents" : { }, - "config" : { - "kid" : [ "40b90151-b1ef-4e82-a179-7dbc45ed2db3" ], - "secret" : [ "o1R5W3Ez-r_9PK6xtUJfFg" ], - "priority" : [ "100" ] - } - }, { - "id" : "5ddf1462-4890-492a-919d-5a4cf34d8e74", - "name" : "rsa-generated", - "providerId" : "rsa-generated", - "subComponents" : { }, - "config" : { - "privateKey" : [ "MIIEowIBAAKCAQEAuPtq+FpY5j7YFdxxNRcpNooCMqYcU7h2s2DZs3fpBURAR3WTQ/kq9KuNnlub8GSGuoKKZGL6dE6cQmfGyB+7OAHuwc19R/mVfTFC8SFLQHbdPfPtZJai2PR0OuW7zM6XY/lItaUN0+b8qSzQ1ymSakC6vY8//A+ZGpta55vveJCdx3gTI7BowvOE1HBRM/2cl1I6MwQ9Wb7AJHIcoaDUcv5PX7iW3gP7CcMbyLR6fkIvPZ85IldSjJu/k4uSKH5Xpv0sDen9YJjvWubjnisAoLVjNmky78KWcZ7xxPXIHRuZv6OsHl2KrkQEOJHL2EU2S7GlgNFCGMfo9wQrvPwyiQIDAQABAoIBAFqdjsEqQPJJRsEuw6YmOmIlKP52sNmyOzOT9hEcZGHYFUTsK7/Yh1pjz3QLnFAeboFfATw74ESpXZKKE65lHOlKyRLW/tALS1eQkiJdFOf3UlnO7DOiNxPgbC+N6nlhmne23g9dU3DCbnLRKVy9WKQEIXZKfiWT3oRSJi3fDWgZWc3Ds72D/T4Oy8go1zMbHIe5kpzhScoL72YwaefsqwNFtY0sqts0uQF2mVXXeFfq2lvgcrob9sfiDx+NW5m3In8Qa0+VL/oeYvgbUPi3oi2LxH6xDHbQUKq4DUKBlPMuaSW18E1xXV6qUu4DxMA8+eqo4KLAVDyudSmPQj3gsCECgYEA68Seb4NUvfGRfSMGouEfAJfYf2MoEW5VdIbgVoVYlJ9mI3zjdLsHsfmXmrMnvQWBx9YGL+XRjcpTsPzH0DAD2+JjFzIukv7l6osG67JA3i5GHYXuFL3Ml0MHCWvbSgrHdDAm2/HroifZEbPBjFsq8Kb1wFQ0AR7ClMdgxrDMJOcCgYEAyNsgkIrtB11gKlc8pf/LByWjfsueXfhhHk5G0RSCyZ6DXlK1C55te9tJ+Y2Z5VjUaqsRbIqNKVRL1CRZQzjSzYAxYPaFYvy6gXmTukQB5/i8D/TSjXNfxOpEBTnKX4psas51TS4ncJg35oXoh+zahqawczYs7Ein254n3J4vjw8CgYBn1Jlpxs7FL+PA1nIPvVDn8/d2cnas5ohf3x5hPCx8l45lxpRtTgjfimoHySqRBiHXnhvvcCjPZvFgmpJszxiD97ln98OnHPaoSj3sAv6qWnqqedcV71hwrSYmMgfLHeAk/Se/6VS6fw4Ly7xLUcMhZIYKA4s7iw5qczvdhPMCtQKBgQCbLCc5ZAsA4JO1wlW5jSeGKv7nq1l7EbO+HQ065BSyvQKSsWTrSAcfY+f/ovTdKcZZbjX03Al4f4Zhq39GnrTFTJ9ZYLrmIYfZFVsa0QWD+DcaQLMV0qePUskgHGiLbT6bOUuIR/ryUrcFIjjmIgcldcvmBlmoZe1AjywOlir54wKBgAuPjALJsstfSbI7ER+acyTNTTlVxVn9CqKWv5UTeLNpIBBjSi36jYVAGmpCY2rgHVZE5EZCejiCn18mdMVQS3+G5Dmb9vAldoxaRim5oMSbnyJt3btszf29iM2nFzw/aGKzHVKDWI473SA8krDtvvHsBEDEEKHNPlF4TE+aowUV" ], - "certificate" : [ "MIICpTCCAY0CBgGRI/HPwjANBgkqhkiG9w0BAQsFADAWMRQwEgYDVQQDDAtkZXZlbG9wbWVudDAeFw0yNDA4MDUxOTA3MTVaFw0zNDA4MDUxOTA4NTVaMBYxFDASBgNVBAMMC2RldmVsb3BtZW50MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuPtq+FpY5j7YFdxxNRcpNooCMqYcU7h2s2DZs3fpBURAR3WTQ/kq9KuNnlub8GSGuoKKZGL6dE6cQmfGyB+7OAHuwc19R/mVfTFC8SFLQHbdPfPtZJai2PR0OuW7zM6XY/lItaUN0+b8qSzQ1ymSakC6vY8//A+ZGpta55vveJCdx3gTI7BowvOE1HBRM/2cl1I6MwQ9Wb7AJHIcoaDUcv5PX7iW3gP7CcMbyLR6fkIvPZ85IldSjJu/k4uSKH5Xpv0sDen9YJjvWubjnisAoLVjNmky78KWcZ7xxPXIHRuZv6OsHl2KrkQEOJHL2EU2S7GlgNFCGMfo9wQrvPwyiQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBqMz0QkjIrMnmF3VrYqdfHsgZptyI6jj1GQ0MR4qJu4Dl5ojhGXFukbAu8xBjnVhv1uc6IWjfWT7YJbUc6n752uQH3//bK46K/vXhbGMP+lCpyc5CT69FOJtutT+/A7R6/8WS6M91BwYF9pX3XHQ1109ylAzhW+qV1LqdJMipy4FB7yYDImLsf6Z8JtmSveopwMQ8A/GJTG5LEPnoYqJ8BY85yG/GszgXcn63f6iTT/7BceKOu7kp0l+Np6qooMddniV4917P+aCU/T7dkz+afj0JURf1fnsITXu02iyi+aHmHihOuYzqobeXDJU0FqGg0qQGJU9QLye5jbZqFM2yf" ], - "priority" : [ "100" ] - } - }, { - "id" : "64782b75-6f52-4f1d-af06-09ad6bfcdfb9", - "name" : "hmac-generated-hs512", - "providerId" : "hmac-generated", - "subComponents" : { }, - "config" : { - "kid" : [ "1c986f4a-6e05-43e1-97a8-d756aed963ff" ], - "secret" : [ "EWGJDe4oUzHqg-arMOUMeEIqb1k0l8O_RpYsmhHl0oiTDqVFnlHB3cBAyhPQYdEkkeFoVnjBA5t46zxj4sOLAMZ9McOgifAe_WBe4_RrxQDhMFMLMNyWnCnFP_jDAFj98P0xyv8atwZCG5xPRFDrO9pJKxO472kG6ws0CZ-CpdY" ], - "priority" : [ "100" ], - "algorithm" : [ "HS512" ] - } - } ] - }, - "internationalizationEnabled" : false, - "supportedLocales" : [ ], - "authenticationFlows" : [ { - "id" : "17180a8f-635e-42e3-9870-88b7b61fb915", - "alias" : "Account verification options", - "description" : "Method with which to verity the existing account", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "idp-email-verification", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "ALTERNATIVE", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "Verify Existing Account by Re-authentication", - "userSetupAllowed" : false - } ] - }, { - "id" : "c416b7a7-45c8-4f68-99b9-0fd7d817fe18", - "alias" : "Browser - Conditional OTP", - "description" : "Flow to determine if the OTP is required for the authentication", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "conditional-user-configured", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "auth-otp-form", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "7d9a6e6e-6a2e-4453-aac4-fd2e0f158f4b", - "alias" : "Direct Grant - Conditional OTP", - "description" : "Flow to determine if the OTP is required for the authentication", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "conditional-user-configured", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "direct-grant-validate-otp", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "5a9053a6-432c-4380-b267-96f86cfac2a7", - "alias" : "First broker login - Conditional OTP", - "description" : "Flow to determine if the OTP is required for the authentication", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "conditional-user-configured", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "auth-otp-form", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "f12fa4ea-704b-4f25-8a50-2b6c011d0249", - "alias" : "Handle Existing Account", - "description" : "Handle what to do if there is existing account with same email/username like authenticated identity provider", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "idp-confirm-link", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "Account verification options", - "userSetupAllowed" : false - } ] - }, { - "id" : "1fe6bf4e-f2f8-4631-b024-6e8a5bd8c42e", - "alias" : "Reset - Conditional OTP", - "description" : "Flow to determine if the OTP should be reset or not. Set to REQUIRED to force.", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "conditional-user-configured", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "reset-otp", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "6246dbfb-a619-4635-ab3e-b394f0ed4af3", - "alias" : "User creation or linking", - "description" : "Flow for the existing/non-existing user alternatives", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticatorConfig" : "create unique user config", - "authenticator" : "idp-create-user-if-unique", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "ALTERNATIVE", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "Handle Existing Account", - "userSetupAllowed" : false - } ] - }, { - "id" : "efa63a87-ea5c-4519-a323-11099438f81e", - "alias" : "Verify Existing Account by Re-authentication", - "description" : "Reauthentication of existing account", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "idp-username-password-form", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "CONDITIONAL", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "First broker login - Conditional OTP", - "userSetupAllowed" : false - } ] - }, { - "id" : "2cd74a88-7aff-42ad-a94e-776089c0aaca", - "alias" : "browser", - "description" : "browser based authentication", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "auth-cookie", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "auth-spnego", - "authenticatorFlow" : false, - "requirement" : "DISABLED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "identity-provider-redirector", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 25, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "ALTERNATIVE", - "priority" : 30, - "autheticatorFlow" : true, - "flowAlias" : "forms", - "userSetupAllowed" : false - } ] - }, { - "id" : "f14b6e2e-bf4f-4dc3-906e-8e417cb8a96b", - "alias" : "clients", - "description" : "Base authentication for clients", - "providerId" : "client-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "client-secret", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "client-jwt", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "client-secret-jwt", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 30, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "client-x509", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 40, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "704eac4a-0f3f-42b1-8326-ed8193f7c5e0", - "alias" : "direct grant", - "description" : "OpenID Connect Resource Owner Grant", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "direct-grant-validate-username", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "direct-grant-validate-password", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "CONDITIONAL", - "priority" : 30, - "autheticatorFlow" : true, - "flowAlias" : "Direct Grant - Conditional OTP", - "userSetupAllowed" : false - } ] - }, { - "id" : "ea358460-4bdb-4926-8bdb-9ae28b76a73a", - "alias" : "docker auth", - "description" : "Used by Docker clients to authenticate against the IDP", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "docker-http-basic-authenticator", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "064b83a9-eff4-47c0-a885-5a2552a390b7", - "alias" : "first broker login", - "description" : "Actions taken after first broker login with identity provider account, which is not yet linked to any Keycloak account", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticatorConfig" : "review profile config", - "authenticator" : "idp-review-profile", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "User creation or linking", - "userSetupAllowed" : false - } ] - }, { - "id" : "224e3374-9c81-437a-9abb-557eba90dcea", - "alias" : "forms", - "description" : "Username, password, otp and other auth forms.", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "auth-username-password-form", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "CONDITIONAL", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "Browser - Conditional OTP", - "userSetupAllowed" : false - } ] - }, { - "id" : "ccfe54ac-0522-45a5-8cf5-a3bd89396ea8", - "alias" : "registration", - "description" : "registration flow", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "registration-page-form", - "authenticatorFlow" : true, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : true, - "flowAlias" : "registration form", - "userSetupAllowed" : false - } ] - }, { - "id" : "09319bf1-dc33-4d5a-9866-20ef01e3364e", - "alias" : "registration form", - "description" : "registration form", - "providerId" : "form-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "registration-user-creation", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "registration-password-action", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 50, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "registration-recaptcha-action", - "authenticatorFlow" : false, - "requirement" : "DISABLED", - "priority" : 60, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "registration-terms-and-conditions", - "authenticatorFlow" : false, - "requirement" : "DISABLED", - "priority" : 70, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "e55eed94-e227-4edc-af34-5d8595fb2379", - "alias" : "reset credentials", - "description" : "Reset credentials for a user if they forgot their password or something", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "reset-credentials-choose-user", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "reset-credential-email", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "reset-password", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 30, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "CONDITIONAL", - "priority" : 40, - "autheticatorFlow" : true, - "flowAlias" : "Reset - Conditional OTP", - "userSetupAllowed" : false - } ] - }, { - "id" : "4ce089cb-31f2-4c4c-99a8-fd7f2c6b458e", - "alias" : "saml ecp", - "description" : "SAML ECP Profile Authentication Flow", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "http-basic-authenticator", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - } ], - "authenticatorConfig" : [ { - "id" : "ca32fd2e-b807-49d6-aa2a-ece90de7c6d1", - "alias" : "create unique user config", - "config" : { - "require.password.update.after.registration" : "false" - } - }, { - "id" : "87fbbfb1-9fad-4954-85be-84d15d6f8bc6", - "alias" : "review profile config", - "config" : { - "update.profile.on.first.login" : "missing" - } - } ], - "requiredActions" : [ { - "alias" : "CONFIGURE_TOTP", - "name" : "Configure OTP", - "providerId" : "CONFIGURE_TOTP", - "enabled" : true, - "defaultAction" : false, - "priority" : 10, - "config" : { } - }, { - "alias" : "TERMS_AND_CONDITIONS", - "name" : "Terms and Conditions", - "providerId" : "TERMS_AND_CONDITIONS", - "enabled" : false, - "defaultAction" : false, - "priority" : 20, - "config" : { } - }, { - "alias" : "UPDATE_PASSWORD", - "name" : "Update Password", - "providerId" : "UPDATE_PASSWORD", - "enabled" : true, - "defaultAction" : false, - "priority" : 30, - "config" : { } - }, { - "alias" : "UPDATE_PROFILE", - "name" : "Update Profile", - "providerId" : "UPDATE_PROFILE", - "enabled" : true, - "defaultAction" : false, - "priority" : 40, - "config" : { } - }, { - "alias" : "VERIFY_EMAIL", - "name" : "Verify Email", - "providerId" : "VERIFY_EMAIL", - "enabled" : true, - "defaultAction" : false, - "priority" : 50, - "config" : { } - }, { - "alias" : "delete_account", - "name" : "Delete Account", - "providerId" : "delete_account", - "enabled" : false, - "defaultAction" : false, - "priority" : 60, - "config" : { } - }, { - "alias" : "webauthn-register", - "name" : "Webauthn Register", - "providerId" : "webauthn-register", - "enabled" : true, - "defaultAction" : false, - "priority" : 70, - "config" : { } - }, { - "alias" : "webauthn-register-passwordless", - "name" : "Webauthn Register Passwordless", - "providerId" : "webauthn-register-passwordless", - "enabled" : true, - "defaultAction" : false, - "priority" : 80, - "config" : { } - }, { - "alias" : "VERIFY_PROFILE", - "name" : "Verify Profile", - "providerId" : "VERIFY_PROFILE", - "enabled" : true, - "defaultAction" : false, - "priority" : 90, - "config" : { } - }, { - "alias" : "delete_credential", - "name" : "Delete Credential", - "providerId" : "delete_credential", - "enabled" : true, - "defaultAction" : false, - "priority" : 100, - "config" : { } - }, { - "alias" : "update_user_locale", - "name" : "Update User Locale", - "providerId" : "update_user_locale", - "enabled" : true, - "defaultAction" : false, - "priority" : 1000, - "config" : { } - } ], - "browserFlow" : "browser", - "registrationFlow" : "registration", - "directGrantFlow" : "direct grant", - "resetCredentialsFlow" : "reset credentials", - "clientAuthenticationFlow" : "clients", - "dockerAuthenticationFlow" : "docker auth", - "firstBrokerLoginFlow" : "first broker login", - "attributes" : { - "cibaBackchannelTokenDeliveryMode" : "poll", - "cibaAuthRequestedUserHint" : "login_hint", - "clientOfflineSessionMaxLifespan" : "0", - "oauth2DevicePollingInterval" : "5", - "clientSessionIdleTimeout" : "0", - "clientOfflineSessionIdleTimeout" : "0", - "cibaInterval" : "5", - "realmReusableOtpCode" : "false", - "cibaExpiresIn" : "120", - "oauth2DeviceCodeLifespan" : "600", - "parRequestUriLifespan" : "60", - "clientSessionMaxLifespan" : "0", - "organizationsEnabled" : "false" - }, - "keycloakVersion" : "25.0.2", - "userManagedAccessAllowed" : false, - "organizationsEnabled" : false, - "clientProfiles" : { - "profiles" : [ ] - }, - "clientPolicies" : { - "policies" : [ ] - } -} \ No newline at end of file diff --git a/vegasco-server.slnx b/vegasco-server.slnx index 3aaf43d..ce8d932 100644 --- a/vegasco-server.slnx +++ b/vegasco-server.slnx @@ -10,7 +10,6 @@ -