Skip to content

Commit ff1ba22

Browse files
committed
Strip to bare minimum reverse proxy config.
1 parent d82f636 commit ff1ba22

File tree

2 files changed

+7
-57
lines changed

2 files changed

+7
-57
lines changed

src/Aspire.Hosting.Keycloak/KeycloakResourceBuilderExtensions.cs

+4-9
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,11 @@ public static class KeycloakResourceBuilderExtensions
1515
private const string AdminEnvVarName = "KC_BOOTSTRAP_ADMIN_USERNAME";
1616
private const string AdminPasswordEnvVarName = "KC_BOOTSTRAP_ADMIN_PASSWORD";
1717
private const string HealthCheckEnvVarName = "KC_HEALTH_ENABLED"; // As per https://www.keycloak.org/observability/health
18-
private const string ProxyEdgeEnvVarName = "KC_PROXY";
19-
private const string HttpPortEnvVarName = "KC_HTTP_PORT";
2018
private const string HttpEnabledEnvVarName = "KC_HTTP_ENABLED";
21-
private const string HostNamePortEnvVarName = "KC_HOSTNAME_PORT";
22-
private const string HostNameStrictBackchannelEnvVarName = "KC_HOSTNAME_STRICT_BACKCHANNEL";
2319
private const string ProxyHeadersEnvVarName = "KC_PROXY_HEADERS";
2420
private const string HostNameStrictEnvVarName = "KC_HOSTNAME_STRICT";
25-
private const string HostNameStrictHttpsEnvVarName = "KC_HOSTNAME_STRICT_HTTPS";
2621

2722
private const int DefaultContainerPort = 8080;
28-
private const int HttpsContainerPort = 8443;
2923
private const int ManagementInterfaceContainerPort = 9000; // As per https://www.keycloak.org/server/management-interface
3024
private const string ManagementEndpointName = "management";
3125
private const string RealmImportDirectory = "/opt/keycloak/data/import";
@@ -66,21 +60,22 @@ public static IResourceBuilder<KeycloakResource> AddKeycloak(
6660

6761
var resource = new KeycloakResource(name, adminUsername?.Resource, passwordParameter);
6862

69-
var targetPort = port == HttpsContainerPort ? HttpsContainerPort : DefaultContainerPort;
70-
7163
var keycloak = builder
7264
.AddResource(resource)
7365
.WithImage(KeycloakContainerImageTags.Image)
7466
.WithImageRegistry(KeycloakContainerImageTags.Registry)
7567
.WithImageTag(KeycloakContainerImageTags.Tag)
76-
.WithHttpEndpoint(port: port, targetPort: targetPort)
68+
.WithHttpEndpoint(port: port, targetPort: DefaultContainerPort)
7769
.WithHttpEndpoint(targetPort: ManagementInterfaceContainerPort, name: ManagementEndpointName)
7870
.WithHttpHealthCheck(endpointName: ManagementEndpointName, path: "/health/ready")
7971
.WithEnvironment(context =>
8072
{
8173
context.EnvironmentVariables[AdminEnvVarName] = resource.AdminReference;
8274
context.EnvironmentVariables[AdminPasswordEnvVarName] = resource.AdminPasswordParameter;
8375
context.EnvironmentVariables[HealthCheckEnvVarName] = "true";
76+
context.EnvironmentVariables[HttpEnabledEnvVarName] = "true";
77+
context.EnvironmentVariables[ProxyHeadersEnvVarName] = "xforwarded";
78+
context.EnvironmentVariables[HostNameStrictEnvVarName] = "false";
8479
})
8580
.WithUrlForEndpoint(ManagementEndpointName, u => u.DisplayLocation = UrlDisplayLocation.DetailsOnly);
8681

tests/Aspire.Hosting.Keycloak.Tests/KeycloakResourceBuilderTests.cs

+3-48
Original file line numberDiff line numberDiff line change
@@ -107,53 +107,13 @@ public void AddAddKeycloakDoesNotAddGeneratedPasswordParameterWithUserSecretsPar
107107
}
108108

109109
[Fact]
110-
public async Task VerifyManifestForHttp()
110+
public async Task VerifyManifest()
111111
{
112112
using var builder = TestDistributedApplicationBuilder.Create();
113113
var keycloak = builder.AddKeycloak("keycloak");
114114

115115
var manifest = await ManifestUtils.GetManifest(keycloak.Resource);
116116

117-
var expectedManifest = $$"""
118-
{
119-
"type": "container.v0",
120-
"image": "{{KeycloakContainerImageTags.Registry}}/{{KeycloakContainerImageTags.Image}}:{{KeycloakContainerImageTags.Tag}}",
121-
"args": [
122-
"start-dev",
123-
"--import-realm"
124-
],
125-
"env": {
126-
"KC_BOOTSTRAP_ADMIN_USERNAME": "admin",
127-
"KC_BOOTSTRAP_ADMIN_PASSWORD": "{keycloak-password.value}",
128-
"KC_HEALTH_ENABLED": "true"
129-
},
130-
"bindings": {
131-
"http": {
132-
"scheme": "http",
133-
"protocol": "tcp",
134-
"transport": "http",
135-
"targetPort": 8080
136-
},
137-
"management": {
138-
"scheme": "http",
139-
"protocol": "tcp",
140-
"transport": "http",
141-
"targetPort": 9000
142-
}
143-
}
144-
}
145-
""";
146-
Assert.Equal(expectedManifest, manifest.ToString());
147-
}
148-
149-
[Fact]
150-
public async Task VerifyManifestForHttps()
151-
{
152-
using var builder = TestDistributedApplicationBuilder.Create();
153-
var keycloak = builder.AddKeycloak("keycloak", 8443);
154-
155-
var manifest = await ManifestUtils.GetManifest(keycloak.Resource);
156-
157117
var expectedManifest = $$"""
158118
{
159119
"type": "container.v0",
@@ -166,21 +126,16 @@ public async Task VerifyManifestForHttps()
166126
"KC_BOOTSTRAP_ADMIN_USERNAME": "admin",
167127
"KC_BOOTSTRAP_ADMIN_PASSWORD": "{keycloak-password.value}",
168128
"KC_HEALTH_ENABLED": "true",
169-
"KC_PROXY": "edge",
170-
"KC_HTTP_PORT": "8443",
171129
"KC_HTTP_ENABLED": "true",
172-
"KC_HOSTNAME_PORT": "8443",
173-
"KC_HOSTNAME_STRICT_BACKCHANNEL": "false",
174130
"KC_PROXY_HEADERS": "xforwarded",
175-
"KC_HOSTNAME_STRICT": "false",
176-
"KC_HOSTNAME_STRICT_HTTPS": "false"
131+
"KC_HOSTNAME_STRICT": "false"
177132
},
178133
"bindings": {
179134
"http": {
180135
"scheme": "http",
181136
"protocol": "tcp",
182137
"transport": "http",
183-
"targetPort": 8443
138+
"targetPort": 8080
184139
},
185140
"management": {
186141
"scheme": "http",

0 commit comments

Comments
 (0)