diff --git a/Directory.Build.props b/Directory.Build.props index 44ff91ef0..775a376ef 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,6 +1,6 @@ - 4.0.7 + 4.0.8 SimpleIdServer SimpleIdServer diff --git a/appveyor.yml b/appveyor.yml index 77c7fb439..5aeec62cd 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -25,10 +25,12 @@ deploy: secure: kSru0/Mz8HMao/s+D3eNoTjOdwYRKMESn144kSw8tWrIKZGNCWDKL5Zh57ca9LwP on: branch: master + appveyor_repo_tag: true - provider: GitHub auth_token: secure: FJAvb5bFQzM98phfQ2/dLL7I10Hvof/fdHorRLuDId8PyjAxcdkfWYf5fZ0/0g+e artifact: /.*\.zip/ on: branch: master + appveyor_repo_tag: true \ No newline at end of file diff --git a/src/IdServer/SimpleIdServer.IdServer.Website/Shared/AddClientDialog.razor b/src/IdServer/SimpleIdServer.IdServer.Website/Shared/AddClientDialog.razor index c5bbd4ad9..9b0f5317d 100644 --- a/src/IdServer/SimpleIdServer.IdServer.Website/Shared/AddClientDialog.razor +++ b/src/IdServer/SimpleIdServer.IdServer.Website/Shared/AddClientDialog.razor @@ -284,7 +284,7 @@ @((MarkupString)(@Global.SelectProofOfPossessionHelper))

- @if (highlySecuredWebsiteApplication.ProofOfPossession == MTLs.Name) + @if (highlySecuredWebsiteApplication.ProofOfPossession == MtlsName) { @((MarkupString)(@Global.SelectMtlsProofOfPossessionHelper)) @@ -297,7 +297,7 @@

} - else if (highlySecuredWebsiteApplication.ProofOfPossession == DPoP.Name) + else if (highlySecuredWebsiteApplication.ProofOfPossession == DpopName) { @((MarkupString)(@Global.SelectDpopProofOfPossessionHelper)) @@ -352,7 +352,7 @@ @((MarkupString)(@Global.SelectProofOfPossessionHelper))

- @if (highlySecuredWebApplicationWithGrantMgtSupport.ProofOfPossession == MTLs.Name) + @if (highlySecuredWebApplicationWithGrantMgtSupport.ProofOfPossession == MtlsName) { @((MarkupString)(@Global.SelectMtlsProofOfPossessionHelper)) @@ -365,7 +365,7 @@

} - else if (highlySecuredWebApplicationWithGrantMgtSupport.ProofOfPossession == DPoP.Name) + else if (highlySecuredWebApplicationWithGrantMgtSupport.ProofOfPossession == DpopName) { @((MarkupString)(@Global.SelectDpopProofOfPossessionHelper)) @@ -441,8 +441,8 @@ @code { - static ProofOfPossession DPoP = new ProofOfPossession { Name = "DPoP", Description = "DPoP" }; - static ProofOfPossession MTLs = new ProofOfPossession { Name = "MTLS", Description = Global.Mtls }; + static string DpopName = "DPoP"; + static string MtlsName = "MTLS"; record ApplicationType { @@ -476,7 +476,7 @@ public string ClientSecret { get; set; } = null!; public string RedirectionUris { get; set; } = null!; public string SubjectName { get; set; } = null!; - public string ProofOfPossession { get; set; } = MTLs.Name; + public string ProofOfPossession { get; set; } = MtlsName; } record HighlySecuredWebApplicationWithGrantMgtSupport @@ -486,7 +486,7 @@ public string ClientSecret { get; set; } = null!; public string RedirectionUris { get; set; } = null!; public string SubjectName { get; set; } = null!; - public string ProofOfPossession { get; set; } = MTLs.Name; + public string ProofOfPossession { get; set; } = MtlsName; public string? AuthDataTypes { get; set; } = null; } @@ -565,8 +565,8 @@ CredentialIssuerApplication credentialIssuerApplication = new CredentialIssuerApplication(); ICollection ProofOfPossessions { get; set; } = new List { - DPoP, - MTLs + new ProofOfPossession { Name = DpopName, Description = "DPoP" }, + new ProofOfPossession { Name = MtlsName, Description = Global.Mtls } }; enum ClientTemplateTypes { @@ -657,12 +657,12 @@ void AddHighlySecuredWebsiteApplication(HighlySecuredWebApplication websiteApplication) { - dispatcher.Dispatch(new AddHighlySecuredWebsiteApplicationAction { ClientId = websiteApplication.ClientIdentifier, ClientName = websiteApplication.ClientName, ClientSecret = websiteApplication.ClientSecret, IsDPoP = websiteApplication.ProofOfPossession == DPoP.Name, RedirectionUrls = websiteApplication.RedirectionUris.Split(';'), SubjectName = websiteApplication.SubjectName }); + dispatcher.Dispatch(new AddHighlySecuredWebsiteApplicationAction { ClientId = websiteApplication.ClientIdentifier, ClientName = websiteApplication.ClientName, ClientSecret = websiteApplication.ClientSecret, IsDPoP = websiteApplication.ProofOfPossession == DpopName, RedirectionUrls = websiteApplication.RedirectionUris.Split(';'), SubjectName = websiteApplication.SubjectName }); } void AddHighlySecuredWebsiteApplicationWithGrantMgtSupport(HighlySecuredWebApplicationWithGrantMgtSupport websiteApplication) { - dispatcher.Dispatch(new AddHighlySecuredWebsiteApplicationWithGrantMgtSupportAction { ClientId = websiteApplication.ClientIdentifier, ClientName = websiteApplication.ClientName, ClientSecret = websiteApplication.ClientSecret, IsDPoP = websiteApplication.ProofOfPossession == DPoP.Name, RedirectionUrls = websiteApplication.RedirectionUris.Split(';'), SubjectName = websiteApplication.SubjectName, AuthDataTypes = websiteApplication.AuthDataTypes }); + dispatcher.Dispatch(new AddHighlySecuredWebsiteApplicationWithGrantMgtSupportAction { ClientId = websiteApplication.ClientIdentifier, ClientName = websiteApplication.ClientName, ClientSecret = websiteApplication.ClientSecret, IsDPoP = websiteApplication.ProofOfPossession == DpopName, RedirectionUrls = websiteApplication.RedirectionUris.Split(';'), SubjectName = websiteApplication.SubjectName, AuthDataTypes = websiteApplication.AuthDataTypes }); } void AddMobileApplication(MobileApplication mobileApplication) diff --git a/src/IdServer/SimpleIdServer.IdServer.Website/Stores/ClientStore/ClientEffects.cs b/src/IdServer/SimpleIdServer.IdServer.Website/Stores/ClientStore/ClientEffects.cs index 5e9d03cec..897076484 100644 --- a/src/IdServer/SimpleIdServer.IdServer.Website/Stores/ClientStore/ClientEffects.cs +++ b/src/IdServer/SimpleIdServer.IdServer.Website/Stores/ClientStore/ClientEffects.cs @@ -12,6 +12,7 @@ using SimpleIdServer.IdServer.Saml.Idp.Extensions; using SimpleIdServer.IdServer.Store; using SimpleIdServer.IdServer.WsFederation; +using System.Globalization; using System.IdentityModel.Tokens.Jwt; using System.Linq.Dynamic.Core; using System.Text; @@ -80,7 +81,7 @@ public async Task Handle(AddSpaClientAction action, IDispatcher dispatcher) var newClientBuilder = ClientBuilder.BuildUserAgentClient(action.ClientId, Guid.NewGuid().ToString(), null, action.RedirectionUrls.ToArray()) .AddScope(new Domains.Scope { Name = Constants.StandardScopes.OpenIdScope.Name }, new Domains.Scope { Name = Constants.StandardScopes.Profile.Name }); if (!string.IsNullOrWhiteSpace(action.ClientName)) - newClientBuilder.SetClientName(action.ClientName); + newClientBuilder.SetClientName(action.ClientName, CultureInfo.CurrentCulture.TwoLetterISOLanguageName); var newClient = newClientBuilder.Build(); await CreateClient(newClient, dispatcher, ClientTypes.SPA); } @@ -90,7 +91,7 @@ public async Task Handle(AddMachineClientApplicationAction action, IDispatcher d { var newClientBuilder = ClientBuilder.BuildApiClient(action.ClientId, action.ClientSecret, null); if (!string.IsNullOrWhiteSpace(action.ClientName)) - newClientBuilder.SetClientName(action.ClientName); + newClientBuilder.SetClientName(action.ClientName, CultureInfo.CurrentCulture.TwoLetterISOLanguageName); var newClient = newClientBuilder.Build(); await CreateClient(newClient, dispatcher, ClientTypes.MACHINE); } @@ -101,7 +102,7 @@ public async Task Handle(AddWebsiteApplicationAction action, IDispatcher dispatc var newClientBuilder = ClientBuilder.BuildTraditionalWebsiteClient(action.ClientId, action.ClientSecret, null, action.RedirectionUrls.ToArray()) .AddScope(new Domains.Scope { Name = Constants.StandardScopes.OpenIdScope.Name }, new Domains.Scope { Name = Constants.StandardScopes.Profile.Name }); if (!string.IsNullOrWhiteSpace(action.ClientName)) - newClientBuilder.SetClientName(action.ClientName); + newClientBuilder.SetClientName(action.ClientName, CultureInfo.CurrentCulture.TwoLetterISOLanguageName); var newClient = newClientBuilder.Build(); await CreateClient(newClient, dispatcher, ClientTypes.WEBSITE); } @@ -112,7 +113,7 @@ public async Task Handle(AddHighlySecuredWebsiteApplicationAction action, IDispa var newClientBuilder = ClientBuilder.BuildTraditionalWebsiteClient(action.ClientId, action.ClientSecret, null, action.RedirectionUrls.ToArray()) .AddScope(new Domains.Scope { Name = Constants.StandardScopes.OpenIdScope.Name }, new Domains.Scope { Name = Constants.StandardScopes.Profile.Name }); if (!string.IsNullOrWhiteSpace(action.ClientName)) - newClientBuilder.SetClientName(action.ClientName); + newClientBuilder.SetClientName(action.ClientName, CultureInfo.CurrentCulture.TwoLetterISOLanguageName); // FAPI2.0 newClientBuilder.SetSigAuthorizationResponse(SecurityAlgorithms.EcdsaSha256); @@ -141,7 +142,7 @@ public async Task Handle(AddHighlySecuredWebsiteApplicationWithGrantMgtSupportAc var newClientBuilder = ClientBuilder.BuildTraditionalWebsiteClient(action.ClientId, action.ClientSecret, null, action.RedirectionUrls.ToArray()) .AddScope(new Domains.Scope { Name = Constants.StandardScopes.OpenIdScope.Name }, new Domains.Scope { Name = Constants.StandardScopes.Profile.Name }); if (!string.IsNullOrWhiteSpace(action.ClientName)) - newClientBuilder.SetClientName(action.ClientName); + newClientBuilder.SetClientName(action.ClientName, CultureInfo.CurrentCulture.TwoLetterISOLanguageName); // FAPI2.0 newClientBuilder.SetSigAuthorizationResponse(SecurityAlgorithms.EcdsaSha256); @@ -176,7 +177,7 @@ public async Task Handle(AddMobileApplicationAction action, IDispatcher dispatch var newClientBuilder = ClientBuilder.BuildMobileApplication(action.ClientId, Guid.NewGuid().ToString(), null, action.RedirectionUrls.ToArray()) .AddScope(new Domains.Scope { Name = Constants.StandardScopes.OpenIdScope.Name }, new Domains.Scope { Name = Constants.StandardScopes.Profile.Name }); if (!string.IsNullOrWhiteSpace(action.ClientName)) - newClientBuilder.SetClientName(action.ClientName); + newClientBuilder.SetClientName(action.ClientName, CultureInfo.CurrentCulture.TwoLetterISOLanguageName); var newClient = newClientBuilder.Build(); await CreateClient(newClient, dispatcher, ClientTypes.MOBILE); } @@ -187,7 +188,7 @@ public async Task Handle(AddExternalDeviceApplicationAction action, IDispatcher var newClientBuilder = ClientBuilder.BuildExternalAuthDeviceClient(action.ClientId, action.SubjectName, null) .AddScope(new Domains.Scope { Name = Constants.StandardScopes.OpenIdScope.Name }, new Domains.Scope { Name = Constants.StandardScopes.Profile.Name }); if (!string.IsNullOrWhiteSpace(action.ClientName)) - newClientBuilder.SetClientName(action.ClientName); + newClientBuilder.SetClientName(action.ClientName, CultureInfo.CurrentCulture.TwoLetterISOLanguageName); var newClient = newClientBuilder.Build(); await CreateClient(newClient, dispatcher, ClientTypes.EXTERNAL); } @@ -198,7 +199,7 @@ public async Task Handle(AddDeviceApplicationAction action, IDispatcher dispatch var newClientBuilder = ClientBuilder.BuildDeviceClient(action.ClientId, action.ClientSecret, null) .AddScope(new Domains.Scope { Name = Constants.StandardScopes.OpenIdScope.Name }, new Domains.Scope { Name = Constants.StandardScopes.Profile.Name }); if (!string.IsNullOrWhiteSpace(action.ClientName)) - newClientBuilder.SetClientName(action.ClientName); + newClientBuilder.SetClientName(action.ClientName, CultureInfo.CurrentCulture.TwoLetterISOLanguageName); var newClient = newClientBuilder.Build(); await CreateClient(newClient, dispatcher, ClientTypes.DEVICE); } @@ -209,7 +210,7 @@ public async Task Handle(AddCredentialIssuerApplicationAction action, IDispatche var newClientBuilder = ClientBuilder.BuildCredentialIssuer(action.ClientId, action.ClientSecret, null, action.RedirectionUrls.ToArray()) .AddScope(new Domains.Scope { Name = Constants.StandardScopes.OpenIdScope.Name }, new Domains.Scope { Name = Constants.StandardScopes.Profile.Name }); if (!string.IsNullOrWhiteSpace(action.ClientName)) - newClientBuilder.SetClientName(action.ClientName); + newClientBuilder.SetClientName(action.ClientName, CultureInfo.CurrentCulture.TwoLetterISOLanguageName); var newClient = newClientBuilder.Build(); await CreateClient(newClient, dispatcher, ClientTypes.CREDENTIAL_ISSUER); } @@ -219,7 +220,7 @@ public async Task Handle(AddWsFederationApplicationAction action, IDispatcher di { var newClientBuilder = WsClientBuilder.BuildWsFederationClient(action.ClientId, null); if (!string.IsNullOrWhiteSpace(action.ClientName)) - newClientBuilder.SetClientName(action.ClientName); + newClientBuilder.SetClientName(action.ClientName, CultureInfo.CurrentCulture.TwoLetterISOLanguageName); var newClient = newClientBuilder.Build(); await CreateClient(newClient, dispatcher, WsFederationConstants.CLIENT_TYPE); } @@ -231,7 +232,7 @@ public async Task Handle(AddSamlSpApplicationAction action, IDispatcher dispatch var securityKey = new X509SecurityKey(certificate, Guid.NewGuid().ToString()); var newClientBuilder = SamlSpClientBuilder.BuildSamlSpClient(action.ClientIdentifier, action.MetadataUrl, certificate, null); if (!string.IsNullOrWhiteSpace(action.ClientName)) - newClientBuilder.SetClientName(action.ClientName); + newClientBuilder.SetClientName(action.ClientName, CultureInfo.CurrentCulture.TwoLetterISOLanguageName); newClientBuilder.SetUseAcsArtifact(action.UseAcs); var newClient = newClientBuilder.Build(); var pemResult = PemConverter.ConvertFromSecurityKey(securityKey);