Files
tgstation-server/_security_configuration_8cs_source.html

183 lines
32 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>tgstation-server: src/Tgstation.Server.Host/Configuration/SecurityConfiguration.cs Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">tgstation-server<span id="projectnumber">&#160;6.19.3</span>
</div>
<div id="projectbrief">The /tg/station 13 server suite</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_codefold(0); });
/* @license-end */
</script>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_34761767c1c3cd212f9d2f80ea0828a8.html">Tgstation.Server.Host</a></li><li class="navelem"><a class="el" href="dir_08963d262fa9e27215dce7b7c6e97f1b.html">Configuration</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">SecurityConfiguration.cs</div></div>
</div><!--header-->
<div class="contents">
<a href="_security_configuration_8cs.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="keyword">using </span>System;</div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="keyword">using </span>System.Collections.Generic;</div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="keyword">using </span>System.Linq;</div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span> </div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="keyword">using </span>Swashbuckle.AspNetCore.SwaggerGen;</div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span> </div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="keyword">using </span><a class="code hl_namespace" href="namespace_tgstation_1_1_server_1_1_api_1_1_models.html">Tgstation.Server.Api.Models</a>;</div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span> </div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespace_tgstation_1_1_server_1_1_host_1_1_configuration.html">Tgstation.Server.Host.Configuration</a></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span>{</div>
<div class="foldopen" id="foldopen00014" data-start="{" data-end="};">
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html"> 14</a></span> <span class="keyword">public</span> <span class="keyword">sealed</span> <span class="keyword">class </span><a class="code hl_class" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html">SecurityConfiguration</a></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> {</div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#a63e264392098db4e986d5dd638fe7fb5"> 19</a></span> <span class="keyword">public</span> <span class="keyword">const</span> <span class="keywordtype">string</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#a63e264392098db4e986d5dd638fe7fb5">Section</a> = <span class="stringliteral">&quot;Security&quot;</span>;</div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> </div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#af332c0d93d7388e590f0a61be193211c"> 24</a></span> <span class="keyword">const</span> uint <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#af332c0d93d7388e590f0a61be193211c">DefaultTokenExpiryMinutes</a> = 15;</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> </div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#ab82ad939c3c4ef374f2db6b7b335748f"> 29</a></span> <span class="keyword">const</span> uint <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#ab82ad939c3c4ef374f2db6b7b335748f">DefaultOAuthTokenExpiryMinutes</a> = 60 * 24; <span class="comment">// 1 day</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#aca00b4c5b85393830515491a8ec92144"> 34</a></span> <span class="keyword">const</span> uint <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#aca00b4c5b85393830515491a8ec92144">DefaultTokenClockSkewMinutes</a> = 1;</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> </div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#a643425150df8884182f4c165b14f27c0"> 39</a></span> <span class="keyword">const</span> uint <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#a643425150df8884182f4c165b14f27c0">DefaultTokenSigningKeyByteAmount</a> = 256;</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> </div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#aee22270ec4a1917739c2f99d9a5a6efd"> 44</a></span> <span class="keyword">public</span> uint <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#aee22270ec4a1917739c2f99d9a5a6efd">TokenExpiryMinutes</a> { <span class="keyword">get</span>; <span class="keyword">set</span>; } = <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#af332c0d93d7388e590f0a61be193211c">DefaultTokenExpiryMinutes</a>;</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> </div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#a5d8659fa382c1c18188b3d869fb17b1f"> 49</a></span> <span class="keyword">public</span> uint <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#a5d8659fa382c1c18188b3d869fb17b1f">TokenClockSkewMinutes</a> { <span class="keyword">get</span>; <span class="keyword">set</span>; } = <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#aca00b4c5b85393830515491a8ec92144">DefaultTokenClockSkewMinutes</a>;</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> </div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#a24760533fd28fd555b428d626ab46f9a"> 54</a></span> <span class="keyword">public</span> uint <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#a24760533fd28fd555b428d626ab46f9a">TokenSigningKeyByteCount</a> { <span class="keyword">get</span>; <span class="keyword">set</span>; } = <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#a643425150df8884182f4c165b14f27c0">DefaultTokenSigningKeyByteAmount</a>;</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> </div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#a750d322eb80cbcdd1b2827edb19237a9"> 59</a></span> <span class="keyword">public</span> uint <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#a750d322eb80cbcdd1b2827edb19237a9">OAuthTokenExpiryMinutes</a> { <span class="keyword">get</span>; <span class="keyword">set</span>; } = <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#ab82ad939c3c4ef374f2db6b7b335748f">DefaultOAuthTokenExpiryMinutes</a>;</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> </div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#a2cfc1425748061f56eb60303a3e5fde2"> 64</a></span> <span class="keyword">public</span> <span class="keywordtype">string</span>? <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#a2cfc1425748061f56eb60303a3e5fde2">CustomTokenSigningKeyBase64</a> { <span class="keyword">get</span>; <span class="keyword">set</span>; }</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> </div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#ac6d285ea65ae8415b090772ab0ffe6e2"> 69</a></span> <span class="keyword">public</span> <span class="keywordtype">bool</span> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#ac6d285ea65ae8415b090772ab0ffe6e2">OidcStrictMode</a> { <span class="keyword">get</span>; <span class="keyword">set</span>; }</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> </div>
<div class="foldopen" id="foldopen00074" data-start="{" data-end="};">
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#afbf3e2a4055381424aa6757cc722a785"> 74</a></span> <span class="keyword">public</span> IDictionary&lt;OAuthProvider, OAuthConfiguration&gt;? <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#afbf3e2a4055381424aa6757cc722a785">OAuth</a></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> {</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <span class="keyword">get</span> =&gt; <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#ad2ca571f109ff0ae0a08425c1776176f">oAuth</a>;</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="keyword">set</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> {</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// Workaround for https://github.com/dotnet/runtime/issues/89547</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> var publicProperties = typeof(<a class="code hl_class" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_o_auth_configuration.html">OAuthConfiguration</a>)</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> .GetProperties()</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> .Where(property =&gt; property.CanWrite &amp;&amp; property.SetMethod!.IsPublic)</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> .ToList();</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#ad2ca571f109ff0ae0a08425c1776176f">oAuth</a> = value</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> ?.Where(</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> kvp =&gt; !publicProperties.All(</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> prop =&gt; prop.GetValue(kvp.Value) == prop.PropertyType.GetDefaultValue()))</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> .ToDictionary(kvp =&gt; kvp.Key, kvp =&gt; kvp.Value);</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> }</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> }</div>
</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> </div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#ad2ca571f109ff0ae0a08425c1776176f"> 95</a></span> IDictionary&lt;OAuthProvider, OAuthConfiguration&gt;? <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#ad2ca571f109ff0ae0a08425c1776176f">oAuth</a>;</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> </div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#aa240b8af879a616d35b45a248a341822"> 100</a></span> <span class="keyword">public</span> IDictionary&lt;string, OidcConfiguration&gt;? <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#aa240b8af879a616d35b45a248a341822">OpenIDConnect</a> { <span class="keyword">get</span>; <span class="keyword">set</span>; }</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> </div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#abbfa3cc364b6ff5843218e69b779cf4f"> 106</a></span> <span class="keyword">public</span> IEnumerable&lt;OidcProviderInfo&gt; <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#abbfa3cc364b6ff5843218e69b779cf4f">OidcProviderInfos</a>()</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> =&gt; <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#aa240b8af879a616d35b45a248a341822">OpenIDConnect</a>?.Select(oidcConfig =&gt; <span class="keyword">new</span> <a class="code hl_class" href="class_tgstation_1_1_server_1_1_api_1_1_models_1_1_oidc_provider_info.html">OidcProviderInfo</a></div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> {</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> SchemeKey = oidcConfig.Key,</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> FriendlyName = oidcConfig.Value.FriendlyName ?? oidcConfig.Key,</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> ThemeColour = oidcConfig.Value.<a class="code hl_property" href="class_tgstation_1_1_server_1_1_api_1_1_models_1_1_oidc_provider_info.html#ac2fdeeadb682552b1a5a0e2bfe33da70">ThemeColour</a>,</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> ThemeIconUrl = oidcConfig.Value.ThemeIconUrl,</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> }) ?? Enumerable.Empty&lt;<a class="code hl_class" href="class_tgstation_1_1_server_1_1_api_1_1_models_1_1_oidc_provider_info.html">OidcProviderInfo</a>&gt;();</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> }</div>
</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span>}</div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_api_1_1_models_1_1_oidc_provider_info_html"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_api_1_1_models_1_1_oidc_provider_info.html">Tgstation.Server.Api.Models.OidcProviderInfo</a></div><div class="ttdoc">Represents a configured OIDC provider.</div><div class="ttdef"><b>Definition</b> <a href="_oidc_provider_info_8cs_source.html#l00008">OidcProviderInfo.cs:9</a></div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_api_1_1_models_1_1_oidc_provider_info_html_ac2fdeeadb682552b1a5a0e2bfe33da70"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_api_1_1_models_1_1_oidc_provider_info.html#ac2fdeeadb682552b1a5a0e2bfe33da70">Tgstation.Server.Api.Models.OidcProviderInfo.ThemeColour</a></div><div class="ttdeci">string? ThemeColour</div><div class="ttdoc">Colour that should be used to theme this OIDC provider.</div><div class="ttdef"><b>Definition</b> <a href="_oidc_provider_info_8cs_source.html#l00023">OidcProviderInfo.cs:23</a></div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_o_auth_configuration_html"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_o_auth_configuration.html">Tgstation.Server.Host.Configuration.OAuthConfiguration</a></div><div class="ttdoc">OAuth configuration options.</div><div class="ttdef"><b>Definition</b> <a href="_o_auth_configuration_8cs_source.html#l00008">OAuthConfiguration.cs:9</a></div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration_html"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html">Tgstation.Server.Host.Configuration.SecurityConfiguration</a></div><div class="ttdoc">Configuration options pertaining to user security.</div><div class="ttdef"><b>Definition</b> <a href="_security_configuration_8cs_source.html#l00014">SecurityConfiguration.cs:15</a></div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration_html_a24760533fd28fd555b428d626ab46f9a"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#a24760533fd28fd555b428d626ab46f9a">Tgstation.Server.Host.Configuration.SecurityConfiguration.TokenSigningKeyByteCount</a></div><div class="ttdeci">uint TokenSigningKeyByteCount</div><div class="ttdoc">Amount of bytes to use in the Microsoft.IdentityModel.Tokens.TokenValidationParameters....</div><div class="ttdef"><b>Definition</b> <a href="_security_configuration_8cs_source.html#l00054">SecurityConfiguration.cs:54</a></div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration_html_a2cfc1425748061f56eb60303a3e5fde2"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#a2cfc1425748061f56eb60303a3e5fde2">Tgstation.Server.Host.Configuration.SecurityConfiguration.CustomTokenSigningKeyBase64</a></div><div class="ttdeci">string? CustomTokenSigningKeyBase64</div><div class="ttdoc">A custom token signing key. Overrides TokenSigningKeyByteCount.</div><div class="ttdef"><b>Definition</b> <a href="_security_configuration_8cs_source.html#l00064">SecurityConfiguration.cs:64</a></div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration_html_a5d8659fa382c1c18188b3d869fb17b1f"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#a5d8659fa382c1c18188b3d869fb17b1f">Tgstation.Server.Host.Configuration.SecurityConfiguration.TokenClockSkewMinutes</a></div><div class="ttdeci">uint TokenClockSkewMinutes</div><div class="ttdoc">Amount of minutes to skew the clock for Api.Models.Response.TokenResponse validation.</div><div class="ttdef"><b>Definition</b> <a href="_security_configuration_8cs_source.html#l00049">SecurityConfiguration.cs:49</a></div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration_html_a63e264392098db4e986d5dd638fe7fb5"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#a63e264392098db4e986d5dd638fe7fb5">Tgstation.Server.Host.Configuration.SecurityConfiguration.Section</a></div><div class="ttdeci">const string Section</div><div class="ttdoc">The key for the Microsoft.Extensions.Configuration.IConfigurationSection the SecurityConfiguration re...</div><div class="ttdef"><b>Definition</b> <a href="_security_configuration_8cs_source.html#l00019">SecurityConfiguration.cs:19</a></div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration_html_a643425150df8884182f4c165b14f27c0"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#a643425150df8884182f4c165b14f27c0">Tgstation.Server.Host.Configuration.SecurityConfiguration.DefaultTokenSigningKeyByteAmount</a></div><div class="ttdeci">const uint DefaultTokenSigningKeyByteAmount</div><div class="ttdoc">Default value of TokenSigningKeyByteCount.</div><div class="ttdef"><b>Definition</b> <a href="_security_configuration_8cs_source.html#l00039">SecurityConfiguration.cs:39</a></div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration_html_a750d322eb80cbcdd1b2827edb19237a9"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#a750d322eb80cbcdd1b2827edb19237a9">Tgstation.Server.Host.Configuration.SecurityConfiguration.OAuthTokenExpiryMinutes</a></div><div class="ttdeci">uint OAuthTokenExpiryMinutes</div><div class="ttdoc">Amount of minutes until Api.Models.Response.TokenResponses generated from OAuth logins expire.</div><div class="ttdef"><b>Definition</b> <a href="_security_configuration_8cs_source.html#l00059">SecurityConfiguration.cs:59</a></div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration_html_aa240b8af879a616d35b45a248a341822"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#aa240b8af879a616d35b45a248a341822">Tgstation.Server.Host.Configuration.SecurityConfiguration.OpenIDConnect</a></div><div class="ttdeci">IDictionary&lt; string, OidcConfiguration &gt;? OpenIDConnect</div><div class="ttdoc">OIDC provider settings keyed by scheme name.</div><div class="ttdef"><b>Definition</b> <a href="_security_configuration_8cs_source.html#l00100">SecurityConfiguration.cs:100</a></div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration_html_ab82ad939c3c4ef374f2db6b7b335748f"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#ab82ad939c3c4ef374f2db6b7b335748f">Tgstation.Server.Host.Configuration.SecurityConfiguration.DefaultOAuthTokenExpiryMinutes</a></div><div class="ttdeci">const uint DefaultOAuthTokenExpiryMinutes</div><div class="ttdoc">Default value of OAuthTokenExpiryMinutes.</div><div class="ttdef"><b>Definition</b> <a href="_security_configuration_8cs_source.html#l00029">SecurityConfiguration.cs:29</a></div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration_html_abbfa3cc364b6ff5843218e69b779cf4f"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#abbfa3cc364b6ff5843218e69b779cf4f">Tgstation.Server.Host.Configuration.SecurityConfiguration.OidcProviderInfos</a></div><div class="ttdeci">IEnumerable&lt; OidcProviderInfo &gt; OidcProviderInfos()</div><div class="ttdoc">Get the OidcProviderInfos from the SecurityConfiguration.</div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration_html_ac6d285ea65ae8415b090772ab0ffe6e2"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#ac6d285ea65ae8415b090772ab0ffe6e2">Tgstation.Server.Host.Configuration.SecurityConfiguration.OidcStrictMode</a></div><div class="ttdeci">bool OidcStrictMode</div><div class="ttdoc">If OIDC strict mode should be enabled. This mode enforces the existence of at least one OpenIDConnect...</div><div class="ttdef"><b>Definition</b> <a href="_security_configuration_8cs_source.html#l00069">SecurityConfiguration.cs:69</a></div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration_html_aca00b4c5b85393830515491a8ec92144"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#aca00b4c5b85393830515491a8ec92144">Tgstation.Server.Host.Configuration.SecurityConfiguration.DefaultTokenClockSkewMinutes</a></div><div class="ttdeci">const uint DefaultTokenClockSkewMinutes</div><div class="ttdoc">Default value of TokenClockSkewMinutes.</div><div class="ttdef"><b>Definition</b> <a href="_security_configuration_8cs_source.html#l00034">SecurityConfiguration.cs:34</a></div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration_html_ad2ca571f109ff0ae0a08425c1776176f"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#ad2ca571f109ff0ae0a08425c1776176f">Tgstation.Server.Host.Configuration.SecurityConfiguration.oAuth</a></div><div class="ttdeci">IDictionary&lt; OAuthProvider, OAuthConfiguration &gt;? oAuth</div><div class="ttdoc">Backing field for OAuth.</div><div class="ttdef"><b>Definition</b> <a href="_security_configuration_8cs_source.html#l00095">SecurityConfiguration.cs:95</a></div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration_html_aee22270ec4a1917739c2f99d9a5a6efd"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#aee22270ec4a1917739c2f99d9a5a6efd">Tgstation.Server.Host.Configuration.SecurityConfiguration.TokenExpiryMinutes</a></div><div class="ttdeci">uint TokenExpiryMinutes</div><div class="ttdoc">Amount of minutes until Api.Models.Response.TokenResponses generated from passwords expire.</div><div class="ttdef"><b>Definition</b> <a href="_security_configuration_8cs_source.html#l00044">SecurityConfiguration.cs:44</a></div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration_html_af332c0d93d7388e590f0a61be193211c"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#af332c0d93d7388e590f0a61be193211c">Tgstation.Server.Host.Configuration.SecurityConfiguration.DefaultTokenExpiryMinutes</a></div><div class="ttdeci">const uint DefaultTokenExpiryMinutes</div><div class="ttdoc">Default value of TokenExpiryMinutes.</div><div class="ttdef"><b>Definition</b> <a href="_security_configuration_8cs_source.html#l00024">SecurityConfiguration.cs:24</a></div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration_html_afbf3e2a4055381424aa6757cc722a785"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_configuration_1_1_security_configuration.html#afbf3e2a4055381424aa6757cc722a785">Tgstation.Server.Host.Configuration.SecurityConfiguration.OAuth</a></div><div class="ttdeci">IDictionary&lt; OAuthProvider, OAuthConfiguration &gt;? OAuth</div><div class="ttdoc">OAuth provider settings.</div><div class="ttdef"><b>Definition</b> <a href="_security_configuration_8cs_source.html#l00074">SecurityConfiguration.cs:75</a></div></div>
<div class="ttc" id="anamespace_tgstation_1_1_server_1_1_api_1_1_models_html"><div class="ttname"><a href="namespace_tgstation_1_1_server_1_1_api_1_1_models.html">Tgstation.Server.Api.Models</a></div><div class="ttdef"><b>Definition</b> <a href="_tgstation_8_server_8_api_2_models_2_chat_channel_8cs_source.html#l00005">ChatChannel.cs:6</a></div></div>
<div class="ttc" id="anamespace_tgstation_1_1_server_1_1_host_1_1_configuration_html"><div class="ttname"><a href="namespace_tgstation_1_1_server_1_1_host_1_1_configuration.html">Tgstation.Server.Host.Configuration</a></div><div class="ttdef"><b>Definition</b> <a href="_control_panel_configuration_8cs_source.html#l00003">ControlPanelConfiguration.cs:4</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
</small></address>
</body>
</html>