Skip to content

Commit 9365ca2

Browse files
authored
Merge pull request #246 from bdovaz/allow-port-override
Allow port override
2 parents 728a994 + ae0ee62 commit 9365ca2

File tree

3 files changed

+39
-7
lines changed

3 files changed

+39
-7
lines changed

SSO-Auth/Api/SSOController.cs

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public async Task<ActionResult> OidPost(
106106
Authority = config.OidEndpoint?.Trim(),
107107
ClientId = config.OidClientId?.Trim(),
108108
ClientSecret = config.OidSecret?.Trim(),
109-
RedirectUri = GetRequestBase(config.SchemeOverride) + $"/sso/OID/{(Request.Path.Value.Contains("/start/", StringComparison.InvariantCultureIgnoreCase) ? "redirect" : "r")}/" + provider,
109+
RedirectUri = GetRequestBase(config.SchemeOverride, config.PortOverride) + $"/sso/OID/{(Request.Path.Value.Contains("/start/", StringComparison.InvariantCultureIgnoreCase) ? "redirect" : "r")}/" + provider,
110110
Scope = string.Join(" ", scopes.Prepend("openid profile")),
111111
DisablePushedAuthorization = config.DisablePushedAuthorization,
112112
};
@@ -276,7 +276,7 @@ public async Task<ActionResult> OidPost(
276276
if (StateManager[state].Valid)
277277
{
278278
_logger.LogInformation($"Is request linking: {isLinking}");
279-
return Content(WebResponse.Generator(data: state, provider: provider, baseUrl: GetRequestBase(config.SchemeOverride), mode: "OID", isLinking: isLinking), MediaTypeNames.Text.Html);
279+
return Content(WebResponse.Generator(data: state, provider: provider, baseUrl: GetRequestBase(config.SchemeOverride, config.PortOverride), mode: "OID", isLinking: isLinking), MediaTypeNames.Text.Html);
280280
}
281281
else
282282
{
@@ -324,7 +324,7 @@ public async Task<ActionResult> OidChallenge(string provider, [FromQuery] bool i
324324
config.NewPath = newPath;
325325
}
326326

327-
string redirectUri = GetRequestBase(config.SchemeOverride) + $"/sso/OID/{(newPath ? "redirect" : "r")}/" + provider;
327+
string redirectUri = GetRequestBase(config.SchemeOverride, config.PortOverride) + $"/sso/OID/{(newPath ? "redirect" : "r")}/" + provider;
328328

329329
var options = new OidcClientOptions
330330
{
@@ -524,7 +524,7 @@ public ActionResult SamlPost(string provider, [FromQuery] string relayState = nu
524524
WebResponse.Generator(
525525
data: Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(samlResponse.Xml)),
526526
provider: provider,
527-
baseUrl: GetRequestBase(config.SchemeOverride),
527+
baseUrl: GetRequestBase(config.SchemeOverride, config.PortOverride),
528528
mode: "SAML",
529529
isLinking: isLinking),
530530
MediaTypeNames.Text.Html);
@@ -570,7 +570,7 @@ public RedirectResult SamlChallenge(string provider, [FromQuery] bool isLinking
570570
config.NewPath = newPath;
571571
}
572572

573-
string redirectUri = GetRequestBase(config.SchemeOverride) + $"/sso/SAML/{(newPath ? "post" : "p")}/" + provider;
573+
string redirectUri = GetRequestBase(config.SchemeOverride, config.PortOverride) + $"/sso/SAML/{(newPath ? "post" : "p")}/" + provider;
574574
string relayState = null;
575575
if (isLinking)
576576
{
@@ -1148,9 +1148,19 @@ private void Invalidate()
11481148
}
11491149
}
11501150

1151-
private string GetRequestBase(string schemeOverride = null)
1151+
private string GetRequestBase(string schemeOverride = null, int? portOverride = null)
1152+
{
1153+
int requestPort;
1154+
1155+
if (portOverride != null)
1156+
{
1157+
requestPort = portOverride.Value;
1158+
}
1159+
else
11521160
{
1153-
int requestPort = Request.Host.Port ?? -1;
1161+
requestPort = Request.Host.Port ?? -1;
1162+
}
1163+
11541164
if ((requestPort == 80 && string.Equals(Request.Scheme, "http", StringComparison.OrdinalIgnoreCase)) || (requestPort == 443 && string.Equals(Request.Scheme, "https", StringComparison.OrdinalIgnoreCase)))
11551165
{
11561166
requestPort = -1;

SSO-Auth/Config/PluginConfiguration.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,11 @@ public class SamlConfig
131131
/// </summary>
132132
public string SchemeOverride { get; set; }
133133

134+
/// <summary>
135+
/// Gets or sets the redirect port override.
136+
/// </summary>
137+
public int? PortOverride { get; set; }
138+
134139
/// <summary>
135140
/// Gets or sets a value indicating whether the new, more descriptive paths are to be used.
136141
/// </summary>
@@ -265,6 +270,11 @@ public class OidConfig
265270
/// </summary>
266271
public string SchemeOverride { get; set; }
267272

273+
/// <summary>
274+
/// Gets or sets the redirect port override.
275+
/// </summary>
276+
public int? PortOverride { get; set; }
277+
268278
/// <summary>
269279
/// Gets or sets a value indicating whether the new, more descriptive paths are to be used.
270280
/// </summary>

SSO-Auth/Config/configPage.html

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -651,6 +651,18 @@ <h2 class="sectionTitle">SSO Settings:</h2>
651651
</div>
652652
</div>
653653

654+
<div class="inputContainer">
655+
<label class="inputLabel inputLabelUnfocused" for="RoleClaim">Port Override</label>
656+
<input is="emby-input"
657+
id="PortOverride"
658+
type="text"
659+
class="sso-text" />
660+
<div class="fieldDescription">
661+
If the plugin is redirecting to an incorrect port, set this to
662+
the appropiate port
663+
</div>
664+
</div>
665+
654666
<button
655667
id="SaveProvider"
656668
is="emby-button"

0 commit comments

Comments
 (0)