From 919fb5012f33a6517f3217f10c6f4c4b3364d514 Mon Sep 17 00:00:00 2001 From: Ben Date: Tue, 26 Aug 2025 18:13:09 +0800 Subject: [PATCH] Fix #5532: add require nonce setting. --- Oqtane.Client/Modules/Admin/Users/Index.razor | 15 +++++++++++++++ .../Resources/Modules/Admin/Users/Index.resx | 6 ++++++ .../OqtaneSiteAuthenticationBuilderExtensions.cs | 1 + 3 files changed, 22 insertions(+) diff --git a/Oqtane.Client/Modules/Admin/Users/Index.razor b/Oqtane.Client/Modules/Admin/Users/Index.razor index 53218b3c..97bbdebe 100644 --- a/Oqtane.Client/Modules/Admin/Users/Index.razor +++ b/Oqtane.Client/Modules/Admin/Users/Index.razor @@ -413,6 +413,18 @@ else + @if (_providertype == AuthenticationProviderTypes.OpenIDConnect) + { +
+ +
+ +
+
+ }
@@ -557,6 +569,7 @@ else private string _synchronizeroles; private string _profileclaimtypes; private string _savetokens; + private string _requirenonce; private string _domainfilter; private string _createusers; private string _verifyusers; @@ -643,6 +656,7 @@ else _synchronizeroles = SettingService.GetSetting(settings, "ExternalLogin:SynchronizeRoles", "false"); _profileclaimtypes = SettingService.GetSetting(settings, "ExternalLogin:ProfileClaimTypes", ""); _savetokens = SettingService.GetSetting(settings, "ExternalLogin:SaveTokens", "false"); + _requirenonce = SettingService.GetSetting(settings, "ExternalLogin:RequireNonce", "false"); _domainfilter = SettingService.GetSetting(settings, "ExternalLogin:DomainFilter", ""); _createusers = SettingService.GetSetting(settings, "ExternalLogin:CreateUsers", "true"); _verifyusers = SettingService.GetSetting(settings, "ExternalLogin:VerifyUsers", "true"); @@ -762,6 +776,7 @@ else settings = SettingService.SetSetting(settings, "ExternalLogin:SynchronizeRoles", _synchronizeroles, true); settings = SettingService.SetSetting(settings, "ExternalLogin:ProfileClaimTypes", _profileclaimtypes, true); settings = SettingService.SetSetting(settings, "ExternalLogin:SaveTokens", _savetokens, true); + settings = SettingService.SetSetting(settings, "ExternalLogin:RequireNonce", _requirenonce, true); settings = SettingService.SetSetting(settings, "ExternalLogin:DomainFilter", _domainfilter, true); settings = SettingService.SetSetting(settings, "ExternalLogin:CreateUsers", _createusers, true); settings = SettingService.SetSetting(settings, "ExternalLogin:VerifyUsers", _verifyusers, true); diff --git a/Oqtane.Client/Resources/Modules/Admin/Users/Index.resx b/Oqtane.Client/Resources/Modules/Admin/Users/Index.resx index 16e0d40e..e6d07a27 100644 --- a/Oqtane.Client/Resources/Modules/Admin/Users/Index.resx +++ b/Oqtane.Client/Resources/Modules/Admin/Users/Index.resx @@ -513,6 +513,12 @@ OpenID Connect (OIDC) + + Require Nonce? + + + Specify the RequireNonce property for OpenID Connect Authentication. + Save Tokens? diff --git a/Oqtane.Server/Extensions/OqtaneSiteAuthenticationBuilderExtensions.cs b/Oqtane.Server/Extensions/OqtaneSiteAuthenticationBuilderExtensions.cs index f142c602..6f6651e3 100644 --- a/Oqtane.Server/Extensions/OqtaneSiteAuthenticationBuilderExtensions.cs +++ b/Oqtane.Server/Extensions/OqtaneSiteAuthenticationBuilderExtensions.cs @@ -63,6 +63,7 @@ namespace Oqtane.Extensions options.ResponseType = sitesettings.GetValue("ExternalLogin:AuthResponseType", "code"); // default is authorization code flow options.UsePkce = bool.Parse(sitesettings.GetValue("ExternalLogin:PKCE", "false")); options.SaveTokens = bool.Parse(sitesettings.GetValue("ExternalLogin:SaveTokens", "false")); + options.ProtocolValidator.RequireNonce = bool.Parse(sitesettings.GetValue("ExternalLogin:RequireNonce", "false")); ; if (!string.IsNullOrEmpty(sitesettings.GetValue("ExternalLogin:RoleClaimType", ""))) { options.TokenValidationParameters.RoleClaimType = sitesettings.GetValue("ExternalLogin:RoleClaimType", "");