From 925307154692c85aef45db595db1b3df1f7ded3d Mon Sep 17 00:00:00 2001 From: vbornand Date: Tue, 27 Aug 2019 18:39:41 +0200 Subject: [PATCH 1/2] Skip getting AzureAdOptions for not AzureADUi Cookies scheme #13311 (#13327) --- .../src/AzureADCookieOptionsConfiguration.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Azure/AzureAD/Authentication.AzureAD.UI/src/AzureADCookieOptionsConfiguration.cs b/src/Azure/AzureAD/Authentication.AzureAD.UI/src/AzureADCookieOptionsConfiguration.cs index 7f4f87c8bd1b..6d0116921e9e 100644 --- a/src/Azure/AzureAD/Authentication.AzureAD.UI/src/AzureADCookieOptionsConfiguration.cs +++ b/src/Azure/AzureAD/Authentication.AzureAD.UI/src/AzureADCookieOptionsConfiguration.cs @@ -21,6 +21,11 @@ public AzureADCookieOptionsConfiguration(IOptions schemeOp public void Configure(string name, CookieAuthenticationOptions options) { var AzureADScheme = GetAzureADScheme(name); + if (AzureADScheme is null) + { + return; + } + var AzureADOptions = _AzureADOptions.Get(AzureADScheme); if (name != AzureADOptions.CookieSchemeName) { From 5bb20469619ba6452d6c57370b310f3a24d8fc84 Mon Sep 17 00:00:00 2001 From: Chris R Date: Tue, 27 Aug 2019 10:46:36 -0700 Subject: [PATCH 2/2] Also check Azure Jwt options for #13311 --- .../AzureADJwtBearerOptionsConfiguration.cs | 5 +++ ...eADAuthenticationBuilderExtensionsTests.cs | 32 +++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/src/Azure/AzureAD/Authentication.AzureAD.UI/src/AzureADJwtBearerOptionsConfiguration.cs b/src/Azure/AzureAD/Authentication.AzureAD.UI/src/AzureADJwtBearerOptionsConfiguration.cs index fbf398888dfe..75337b2cc400 100644 --- a/src/Azure/AzureAD/Authentication.AzureAD.UI/src/AzureADJwtBearerOptionsConfiguration.cs +++ b/src/Azure/AzureAD/Authentication.AzureAD.UI/src/AzureADJwtBearerOptionsConfiguration.cs @@ -24,6 +24,11 @@ public AzureADJwtBearerOptionsConfiguration( public void Configure(string name, JwtBearerOptions options) { var azureADScheme = GetAzureADScheme(name); + if (azureADScheme is null) + { + return; + } + var azureADOptions = _azureADOptions.Get(azureADScheme); if (name != azureADOptions.JwtBearerSchemeName) { diff --git a/src/Azure/AzureAD/Authentication.AzureAD.UI/test/AzureADAuthenticationBuilderExtensionsTests.cs b/src/Azure/AzureAD/Authentication.AzureAD.UI/test/AzureADAuthenticationBuilderExtensionsTests.cs index db937ca62e2f..07c0583c32b7 100644 --- a/src/Azure/AzureAD/Authentication.AzureAD.UI/test/AzureADAuthenticationBuilderExtensionsTests.cs +++ b/src/Azure/AzureAD/Authentication.AzureAD.UI/test/AzureADAuthenticationBuilderExtensionsTests.cs @@ -268,6 +268,22 @@ public void AddAzureAD_ThrowsWhenInstanceIsNotSet() Assert.Contains(expectedMessage, exception.Failures); } + [Fact] + public void AddAzureAD_SkipsOptionsValidationForNonAzureCookies() + { + var services = new ServiceCollection(); + services.AddSingleton(new NullLoggerFactory()); + + services.AddAuthentication() + .AddAzureAD(o => { }) + .AddCookie("other"); + + var provider = services.BuildServiceProvider(); + var cookieAuthOptions = provider.GetService>(); + + Assert.NotNull(cookieAuthOptions.Get("other")); + } + [Fact] public void AddAzureADBearer_AddsAllAuthenticationHandlers() { @@ -453,5 +469,21 @@ public void AddAzureADBearer_ThrowsWhenInstanceIsNotSet() Assert.Contains(expectedMessage, exception.Failures); } + + [Fact] + public void AddAzureADBearer_SkipsOptionsValidationForNonAzureCookies() + { + var services = new ServiceCollection(); + services.AddSingleton(new NullLoggerFactory()); + + services.AddAuthentication() + .AddAzureADBearer(o => { }) + .AddJwtBearer("other", o => { }); + + var provider = services.BuildServiceProvider(); + var jwtOptions = provider.GetService>(); + + Assert.NotNull(jwtOptions.Get("other")); + } } }