3
3
4
4
using Aspire . Hosting . ApplicationModel ;
5
5
using Aspire . Hosting . Keycloak ;
6
+ using System . Globalization ;
6
7
7
8
namespace Aspire . Hosting ;
8
9
@@ -14,8 +15,17 @@ public static class KeycloakResourceBuilderExtensions
14
15
private const string AdminEnvVarName = "KC_BOOTSTRAP_ADMIN_USERNAME" ;
15
16
private const string AdminPasswordEnvVarName = "KC_BOOTSTRAP_ADMIN_PASSWORD" ;
16
17
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" ;
20
+ private const string HttpEnabledEnvVarName = "KC_HTTP_ENABLED" ;
21
+ private const string HostNamePortEnvVarName = "KC_HOSTNAME_PORT" ;
22
+ private const string HostNameStrictBackchannelEnvVarName = "KC_HOSTNAME_STRICT_BACKCHANNEL" ;
23
+ private const string ProxyHeadersEnvVarName = "KC_PROXY_HEADERS" ;
24
+ private const string HostNameStrictEnvVarName = "KC_HOSTNAME_STRICT" ;
25
+ private const string HostNameStrictHttpsEnvVarName = "KC_HOSTNAME_STRICT_HTTPS" ;
17
26
18
27
private const int DefaultContainerPort = 8080 ;
28
+ private const int HttpsContainerPort = 8443 ;
19
29
private const int ManagementInterfaceContainerPort = 9000 ; // As per https://www.keycloak.org/server/management-interface
20
30
private const string ManagementEndpointName = "management" ;
21
31
private const string RealmImportDirectory = "/opt/keycloak/data/import" ;
@@ -56,12 +66,14 @@ public static IResourceBuilder<KeycloakResource> AddKeycloak(
56
66
57
67
var resource = new KeycloakResource ( name , adminUsername ? . Resource , passwordParameter ) ;
58
68
69
+ var targetPort = port == HttpsContainerPort ? HttpsContainerPort : DefaultContainerPort ;
70
+
59
71
var keycloak = builder
60
72
. AddResource ( resource )
61
73
. WithImage ( KeycloakContainerImageTags . Image )
62
74
. WithImageRegistry ( KeycloakContainerImageTags . Registry )
63
75
. WithImageTag ( KeycloakContainerImageTags . Tag )
64
- . WithHttpEndpoint ( port : port , targetPort : DefaultContainerPort )
76
+ . WithHttpEndpoint ( port : port , targetPort : targetPort )
65
77
. WithHttpEndpoint ( targetPort : ManagementInterfaceContainerPort , name : ManagementEndpointName )
66
78
. WithHttpHealthCheck ( endpointName : ManagementEndpointName , path : "/health/ready" )
67
79
. WithEnvironment ( context =>
0 commit comments