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) { 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")); + } } }