tgstation-server 6.16.0
The /tg/station 13 server suite
Loading...
Searching...
No Matches
SecurityConfiguration.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3using System.Linq;
4
5using Swashbuckle.AspNetCore.SwaggerGen;
6
8
10{
14 public sealed class SecurityConfiguration
15 {
19 public const string Section = "Security";
20
25
29 const uint DefaultOAuthTokenExpiryMinutes = 60 * 24; // 1 day
30
35
40
44 public uint TokenExpiryMinutes { get; set; } = DefaultTokenExpiryMinutes;
45
50
55
60
64 public string? CustomTokenSigningKeyBase64 { get; set; }
65
69 public bool OidcStrictMode { get; set; }
70
74 public IDictionary<OAuthProvider, OAuthConfiguration>? OAuth
75 {
76 get => oAuth;
77 set
78 {
79 // Workaround for https://github.com/dotnet/runtime/issues/89547
80 var publicProperties = typeof(OAuthConfiguration)
81 .GetProperties()
82 .Where(property => property.CanWrite && property.SetMethod!.IsPublic)
83 .ToList();
84 oAuth = value
85 ?.Where(
86 kvp => !publicProperties.All(
87 prop => prop.GetValue(kvp.Value) == prop.PropertyType.GetDefaultValue()))
88 .ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
89 }
90 }
91
95 IDictionary<OAuthProvider, OAuthConfiguration>? oAuth;
96
100 public IDictionary<string, OidcConfiguration>? OpenIDConnect { get; set; }
101
106 public IEnumerable<OidcProviderInfo> OidcProviderInfos()
107 => OpenIDConnect?.Select(oidcConfig => new OidcProviderInfo
108 {
109 SchemeKey = oidcConfig.Key,
110 FriendlyName = oidcConfig.Value.FriendlyName ?? oidcConfig.Key,
111 ThemeColour = oidcConfig.Value.ThemeColour,
112 ThemeIconUrl = oidcConfig.Value.ThemeIconUrl,
113 }) ?? Enumerable.Empty<OidcProviderInfo>();
114 }
115}
Represents a configured OIDC provider.
string? ThemeColour
Colour that should be used to theme this OIDC provider.
Configuration options pertaining to user security.
uint TokenSigningKeyByteCount
Amount of bytes to use in the Microsoft.IdentityModel.Tokens.TokenValidationParameters....
string? CustomTokenSigningKeyBase64
A custom token signing key. Overrides TokenSigningKeyByteCount.
uint TokenClockSkewMinutes
Amount of minutes to skew the clock for Api.Models.Response.TokenResponse validation.
const string Section
The key for the Microsoft.Extensions.Configuration.IConfigurationSection the SecurityConfiguration re...
const uint DefaultTokenSigningKeyByteAmount
Default value of TokenSigningKeyByteCount.
uint OAuthTokenExpiryMinutes
Amount of minutes until Api.Models.Response.TokenResponses generated from OAuth logins expire.
IDictionary< string, OidcConfiguration >? OpenIDConnect
OIDC provider settings keyed by scheme name.
const uint DefaultOAuthTokenExpiryMinutes
Default value of OAuthTokenExpiryMinutes.
IEnumerable< OidcProviderInfo > OidcProviderInfos()
Get the OidcProviderInfos from the SecurityConfiguration.
bool OidcStrictMode
If OIDC strict mode should be enabled. This mode enforces the existence of at least one OpenIDConnect...
const uint DefaultTokenClockSkewMinutes
Default value of TokenClockSkewMinutes.
IDictionary< OAuthProvider, OAuthConfiguration >? oAuth
Backing field for OAuth.
uint TokenExpiryMinutes
Amount of minutes until Api.Models.Response.TokenResponses generated from passwords expire.
const uint DefaultTokenExpiryMinutes
Default value of TokenExpiryMinutes.
IDictionary< OAuthProvider, OAuthConfiguration >? OAuth
OAuth provider settings.