diff --git a/src/Umbraco.Cms.Persistence.SqlServer/Services/SqlServerDatabaseProviderMetadata.cs b/src/Umbraco.Cms.Persistence.SqlServer/Services/SqlServerDatabaseProviderMetadata.cs index 89612b3603..63e058df6c 100644 --- a/src/Umbraco.Cms.Persistence.SqlServer/Services/SqlServerDatabaseProviderMetadata.cs +++ b/src/Umbraco.Cms.Persistence.SqlServer/Services/SqlServerDatabaseProviderMetadata.cs @@ -73,8 +73,37 @@ public class SqlServerDatabaseProviderMetadata : IDatabaseProviderMetadata } /// - public string GenerateConnectionString(DatabaseModel databaseModel) => - databaseModel.IntegratedAuth - ? $"Server={databaseModel.Server};Database={databaseModel.DatabaseName};Integrated Security=true" - : $"Server={databaseModel.Server};Database={databaseModel.DatabaseName};User Id={databaseModel.Login};Password={databaseModel.Password}"; + public string GenerateConnectionString(DatabaseModel databaseModel) + { + string connectionString = $"Server={databaseModel.Server};Database={databaseModel.DatabaseName};"; + connectionString = HandleIntegratedAuthentication(connectionString, databaseModel); + connectionString = HandleTrustServerCertificate(connectionString, databaseModel); + + return connectionString; + } + + private string HandleIntegratedAuthentication(string connectionString, DatabaseModel databaseModel) + { + if (databaseModel.IntegratedAuth) + { + connectionString += "Integrated Security=true"; + } + else + { + connectionString += $"User Id={databaseModel.Login};Password={databaseModel.Password}"; + } + + return connectionString; + } + + private string HandleTrustServerCertificate(string connectionString, DatabaseModel databaseModel) + { + if (databaseModel.TrustServerCertificate) + { + connectionString += ";TrustServerCertificate=true;"; + } + + return connectionString; + } + } diff --git a/src/Umbraco.Core/Install/Models/DatabaseModel.cs b/src/Umbraco.Core/Install/Models/DatabaseModel.cs index b52fc84fa9..1c632081ce 100644 --- a/src/Umbraco.Core/Install/Models/DatabaseModel.cs +++ b/src/Umbraco.Core/Install/Models/DatabaseModel.cs @@ -28,6 +28,9 @@ public class DatabaseModel [DataMember(Name = "integratedAuth")] public bool IntegratedAuth { get; set; } + [DataMember(Name = "trustServerCertificate")] + public bool TrustServerCertificate { get; set; } + [DataMember(Name = "connectionString")] public string? ConnectionString { get; set; } } diff --git a/src/Umbraco.Web.UI.Client/src/installer/steps/database.html b/src/Umbraco.Web.UI.Client/src/installer/steps/database.html index 4282770e75..f1617277e8 100644 --- a/src/Umbraco.Web.UI.Client/src/installer/steps/database.html +++ b/src/Umbraco.Web.UI.Client/src/installer/steps/database.html @@ -155,6 +155,16 @@ Use integrated authentication + +
+ +