diff --git a/src/Tgstation.Server.Host/Security/TokenFactory.cs b/src/Tgstation.Server.Host/Security/TokenFactory.cs
index 6081aeb42f..dcbf3cdc38 100644
--- a/src/Tgstation.Server.Host/Security/TokenFactory.cs
+++ b/src/Tgstation.Server.Host/Security/TokenFactory.cs
@@ -39,9 +39,9 @@ namespace Tgstation.Server.Host.Security
}
///
- /// The for the .
+ /// The of for the .
///
- readonly SecurityConfiguration securityConfiguration;
+ readonly IOptions securityConfigurationOptions;
///
/// The used to generate s.
@@ -63,7 +63,7 @@ namespace Tgstation.Server.Host.Security
///
/// The used for generating the .
/// The used to generate the issuer name.
- /// The containing the value of .
+ /// The containing the value of .
public TokenFactory(
ICryptographySuite cryptographySuite,
IAssemblyInformationProvider assemblyInformationProvider,
@@ -72,11 +72,11 @@ namespace Tgstation.Server.Host.Security
ArgumentNullException.ThrowIfNull(cryptographySuite);
ArgumentNullException.ThrowIfNull(assemblyInformationProvider);
- securityConfiguration = securityConfigurationOptions?.Value ?? throw new ArgumentNullException(nameof(securityConfigurationOptions));
+ this.securityConfigurationOptions = securityConfigurationOptions ?? throw new ArgumentNullException(nameof(securityConfigurationOptions));
- SigningKeyBytes = String.IsNullOrWhiteSpace(securityConfiguration.CustomTokenSigningKeyBase64)
- ? cryptographySuite.GetSecureBytes(securityConfiguration.TokenSigningKeyByteCount)
- : Convert.FromBase64String(securityConfiguration.CustomTokenSigningKeyBase64);
+ SigningKeyBytes = string.IsNullOrWhiteSpace(securityConfigurationOptions.Value.CustomTokenSigningKeyBase64)
+ ? cryptographySuite.GetSecureBytes(securityConfigurationOptions.Value.TokenSigningKeyByteCount)
+ : Convert.FromBase64String(securityConfigurationOptions.Value.CustomTokenSigningKeyBase64);
ValidationParameters = new TokenValidationParameters
{
@@ -90,7 +90,7 @@ namespace Tgstation.Server.Host.Security
ValidateAudience = true,
ValidAudience = typeof(TokenResponse).Assembly.GetName().Name,
- ClockSkew = TimeSpan.FromMinutes(securityConfiguration.TokenClockSkewMinutes),
+ ClockSkew = TimeSpan.FromMinutes(securityConfigurationOptions.Value.TokenClockSkewMinutes),
RequireSignedTokens = true,
@@ -122,8 +122,8 @@ namespace Tgstation.Server.Host.Security
notBefore = now;
var expiry = now.AddMinutes(serviceLogin
- ? securityConfiguration.OAuthTokenExpiryMinutes
- : securityConfiguration.TokenExpiryMinutes);
+ ? securityConfigurationOptions.Value.OAuthTokenExpiryMinutes
+ : securityConfigurationOptions.Value.TokenExpiryMinutes);
var securityToken = new JwtSecurityToken(
tokenHeader,
diff --git a/src/Tgstation.Server.Host/Server.cs b/src/Tgstation.Server.Host/Server.cs
index 6f4a10c7d4..73249c3d87 100644
--- a/src/Tgstation.Server.Host/Server.cs
+++ b/src/Tgstation.Server.Host/Server.cs
@@ -68,16 +68,16 @@ namespace Tgstation.Server.Host
///
readonly object restartLock;
+ ///
+ /// The of for the .
+ ///
+ IOptionsMonitor? generalConfigurationOptions;
+
///
/// The for the .
///
ILogger? logger;
- ///
- /// The for the .
- ///
- GeneralConfiguration? generalConfiguration;
-
///
/// The for the .
///
@@ -151,8 +151,7 @@ namespace Tgstation.Server.Host
if (await DumpGraphQLSchemaIfRequested(Host.Services, cancellationToken))
return;
- var generalConfigurationOptions = Host.Services.GetRequiredService>();
- generalConfiguration = generalConfigurationOptions.Value;
+ generalConfigurationOptions = Host.Services.GetRequiredService>();
await Host.RunAsync(cancellationTokenSource.Token);
}
@@ -389,8 +388,8 @@ namespace Tgstation.Server.Host
using var cts = new CancellationTokenSource(
TimeSpan.FromMinutes(
giveHandlersTimeToWaitAround
- ? generalConfiguration!.ShutdownTimeoutMinutes
- : generalConfiguration!.RestartTimeoutMinutes));
+ ? generalConfigurationOptions!.CurrentValue.ShutdownTimeoutMinutes
+ : generalConfigurationOptions!.CurrentValue.RestartTimeoutMinutes));
var cancellationToken = cts.Token;
try
{