From 84f64f87546210df57aebdb2ddb2d94f746155f8 Mon Sep 17 00:00:00 2001 From: Michael Noonan Date: Tue, 1 Nov 2016 13:56:55 +1000 Subject: [PATCH 1/3] Use RNGCryptoServiceProvider for nonce. Best practices FTW. --- .../Infrastructure/Nonce.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/source/Octopus.Server.Extensibility.Authentication.OpenIDConnect/Infrastructure/Nonce.cs b/source/Octopus.Server.Extensibility.Authentication.OpenIDConnect/Infrastructure/Nonce.cs index c5ce825..17806b6 100644 --- a/source/Octopus.Server.Extensibility.Authentication.OpenIDConnect/Infrastructure/Nonce.cs +++ b/source/Octopus.Server.Extensibility.Authentication.OpenIDConnect/Infrastructure/Nonce.cs @@ -6,9 +6,13 @@ namespace Octopus.Server.Extensibility.Authentication.OpenIDConnect.Infrastructu { public static class Nonce { + static readonly RNGCryptoServiceProvider Rng = new RNGCryptoServiceProvider(); + public static string Generate() { - var nonce = Guid.NewGuid().ToString("N"); + var data = new byte[16]; + Rng.GetNonZeroBytes(data); + var nonce = Convert.ToBase64String(data); return nonce; } From a7a3ebdf20b490072b95515ceb03ba1f64e93f14 Mon Sep 17 00:00:00 2001 From: Michael Noonan Date: Tue, 1 Nov 2016 14:13:33 +1000 Subject: [PATCH 2/3] Enable ValidateActor and ValidateIssuerSigningKey --- .../Tokens/OpenIDConnectAuthTokenHandler.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/Octopus.Server.Extensibility.Authentication.OpenIDConnect/Tokens/OpenIDConnectAuthTokenHandler.cs b/source/Octopus.Server.Extensibility.Authentication.OpenIDConnect/Tokens/OpenIDConnectAuthTokenHandler.cs index fac4cc9..842bbe7 100644 --- a/source/Octopus.Server.Extensibility.Authentication.OpenIDConnect/Tokens/OpenIDConnectAuthTokenHandler.cs +++ b/source/Octopus.Server.Extensibility.Authentication.OpenIDConnect/Tokens/OpenIDConnectAuthTokenHandler.cs @@ -64,6 +64,8 @@ async Task GetPrincipalFromToken(string accessToken, s var validationParameters = new TokenValidationParameters { + ValidateActor = true, + ValidateIssuerSigningKey = true, ValidAudience = issuer + "/resources", ValidIssuer = issuerConfig.Issuer, IssuerSigningKeyResolver = (s, securityToken, identifier, parameters) => !certificates.ContainsKey(identifier) ? null : new [] { new X509SecurityKey(certificates[identifier]) } From 4791374381eb95e160dbba5abd4c377717d31da3 Mon Sep 17 00:00:00 2001 From: Michael Noonan Date: Tue, 1 Nov 2016 14:14:00 +1000 Subject: [PATCH 3/3] POST Build copy into extensions folder. Makes development time experience better. --- ...Octopus.Server.Extensibility.Authentication.AzureAD.csproj | 3 +++ ...opus.Server.Extensibility.Authentication.GoogleApps.csproj | 3 +++ ...s.Server.Extensibility.Authentication.OpenIdConnect.csproj | 4 ++++ 3 files changed, 10 insertions(+) diff --git a/source/Octopus.Server.Extensibility.Authentication.AzureAD/Octopus.Server.Extensibility.Authentication.AzureAD.csproj b/source/Octopus.Server.Extensibility.Authentication.AzureAD/Octopus.Server.Extensibility.Authentication.AzureAD.csproj index cfe8abc..d272f6d 100644 --- a/source/Octopus.Server.Extensibility.Authentication.AzureAD/Octopus.Server.Extensibility.Authentication.AzureAD.csproj +++ b/source/Octopus.Server.Extensibility.Authentication.AzureAD/Octopus.Server.Extensibility.Authentication.AzureAD.csproj @@ -152,6 +152,9 @@ + + xcopy "$(TargetDir)Octopus.Server.Extensibility.Authentication.AzureAD.*" "C:\ProgramData\Octopus\CustomExtensions" /S /Y /I /D +