AzureAD / microsoft-identity-web

Helps creating protected web apps and web APIs with Microsoft identity platform and Azure AD B2C
MIT License
684 stars 217 forks source link

Ensure Singleton registration for TokenAcquisition Services when TokenAcquirerFactory is null #3155

Open sruke opened 4 days ago

sruke commented 4 days ago

Why? This PR ensures TokenAcquisition services are registered only as singletons if the isTokenAcquisitionSingleton flag is true and removes any previously added scoped TokenAcquisition services when TokenAcquirerFactory is not used.  

{PR title}

Summary of the changes (Less than 80 chars)

Description

{Detail}

Fixes #{bug number} (in this specific format)

github-actions[bot] commented 4 days ago

Summary

Summary ||| |:---|:---| | Generated on: | 11/28/2024 - 1:49:06 AM | | Coverage date: | 11/28/2024 - 1:47:54 AM - 11/28/2024 - 1:48:55 AM | | Parser: | MultiReport (2x Cobertura) | | Assemblies: | 9 | | Classes: | 160 | | Files: | 167 | | **Line coverage:** | 50.8% (3291 of 6472) | | Covered lines: | 3291 | | Uncovered lines: | 3181 | | Coverable lines: | 6472 | | Total lines: | 20527 | | **Branch coverage:** | 46.4% (1191 of 2564) | | Covered branches: | 1191 | | Total branches: | 2564 | | **Method coverage:** | [Feature is only available for sponsors](https://reportgenerator.io/pro) |

Coverage

Microsoft.Identity.Web - 66.8% |**Name**|**Line**|**Branch**| |:---|---:|---:| |**Microsoft.Identity.Web**|**66.8%**|**61%**| |Microsoft.Identity.Web.AadIssuerValidatorOptions|100%|| |Microsoft.Identity.Web.AccountExtensions|100%|100%| |Microsoft.Identity.Web.AppContextSwitches|100%|100%| |Microsoft.Identity.Web.AppServicesAuthenticationBuilderExtensions|100%|| |Microsoft.Identity.Web.AppServicesAuthenticationHandler|0%|0%| |Microsoft.Identity.Web.AppServicesAuthenticationInformation|78.8%|59%| |Microsoft.Identity.Web.AppServicesAuthenticationTokenAcquisition|0%|0%| |Microsoft.Identity.Web.AuthorityHelpers|100%|92.3%| |Microsoft.Identity.Web.AuthorizeForScopesAttribute|8.3%|7.1%| |Microsoft.Identity.Web.AzureADB2COpenIDConnectEventHandlers|97.5%|87.5%| |Microsoft.Identity.Web.AzureFunctionsAuthenticationHttpContextExtension|0%|0%| |Microsoft.Identity.Web.ClaimsPrincipalFactory|81.2%|100%| |Microsoft.Identity.Web.CookiePolicyOptionsExtensions|95.8%|90%| |Microsoft.Identity.Web.DefaultMicrosoftIdentityAuthenticationDelegatingHand
lerFactory|100%|| |Microsoft.Identity.Web.DownstreamWebApi|10.8%|0%| |Microsoft.Identity.Web.DownstreamWebApiExtensions|100%|| |Microsoft.Identity.Web.DownstreamWebApiGenericExtensions|0%|0%| |Microsoft.Identity.Web.DownstreamWebApiOptions|94.7%|50%| |Microsoft.Identity.Web.Extensions|100%|100%| |Microsoft.Identity.Web.IDownstreamWebApi|0%|| |Microsoft.Identity.Web.IncrementalConsentAndConditionalAccessHelper|95.8%|87.5%| |Microsoft.Identity.Web.MergedOptionsValidation|100%|100%| |Microsoft.Identity.Web.MicrosoftIdentityAppAuthenticationMessageHandler|100%|100%| |Microsoft.Identity.Web.MicrosoftIdentityAppCallsWebApiAuthenticationBuilder
Extension|0%|0%| |Microsoft.Identity.Web.MicrosoftIdentityAuthenticationBaseMessageHandler|96%|62.5%| |Microsoft.Identity.Web.MicrosoftIdentityAuthenticationBaseOptions|100%|50%| |Microsoft.Identity.Web.MicrosoftIdentityAuthenticationMessageHandlerHttpCli
entBuilderExtensions|91.3%|| |Microsoft.Identity.Web.MicrosoftIdentityAuthenticationMessageHandlerOptions|90%|| |Microsoft.Identity.Web.MicrosoftIdentityBlazorServiceCollectionExtensions|100%|| |Microsoft.Identity.Web.MicrosoftIdentityConsentAndConditionalAccessHandler|4.9%|0%| |Microsoft.Identity.Web.MicrosoftIdentityServiceHandler|0%|| |Microsoft.Identity.Web.MicrosoftIdentityUserAuthenticationMessageHandler|100%|66.6%| |Microsoft.Identity.Web.MicrosoftIdentityWebApiAuthenticationBuilder|100%|50%| |Microsoft.Identity.Web.MicrosoftIdentityWebApiAuthenticationBuilderExtensio
ns|95.5%|88.8%| |Microsoft.Identity.Web.MicrosoftIdentityWebApiAuthenticationBuilderWithConf
iguration|100%|| |Microsoft.Identity.Web.MicrosoftIdentityWebApiServiceCollectionExtensions|100%|| |Microsoft.Identity.Web.MicrosoftIdentityWebAppAuthenticationBuilder|94.6%|83.3%| |Microsoft.Identity.Web.MicrosoftIdentityWebAppAuthenticationBuilderExtensio
ns|96.8%|87.8%| |Microsoft.Identity.Web.MicrosoftIdentityWebAppAuthenticationBuilderWithConf
iguration|81.2%|| |Microsoft.Identity.Web.MicrosoftIdentityWebAppServiceCollectionExtensions|100%|| |Microsoft.Identity.Web.PolicyBuilderExtensions|100%|| |Microsoft.Identity.Web.RequiredScopeExtensions|40%|| |Microsoft.Identity.Web.RequiredScopeOrAppPermissionExtensions|33.3%|| |Microsoft.Identity.Web.RequireScopeOptions|100%|50%| |Microsoft.Identity.Web.RequireScopeOrAppPermissionOptions|100%|50%| |Microsoft.Identity.Web.Resource.JwtBearerMiddlewareDiagnostics|100%|100%| |Microsoft.Identity.Web.Resource.MicrosoftIdentityIssuerValidatorFactory|90%|62.5%| |Microsoft.Identity.Web.Resource.OpenIdConnectMiddlewareDiagnostics|100%|83.3%| |Microsoft.Identity.Web.Resource.RegisterValidAudience|95.6%|90%| |Microsoft.Identity.Web.Resource.RequiredScopeAttribute|0%|| |Microsoft.Identity.Web.Resource.RequiredScopeOrAppPermissionAttribute|0%|| |Microsoft.Identity.Web.Resource.RolesRequiredHttpContextExtensions|100%|100%| |Microsoft.Identity.Web.Resource.ScopesRequiredHttpContextExtensions|100%|100%| |Microsoft.Identity.Web.ScopeAuthorizationHandler|90.3%|73%| |Microsoft.Identity.Web.ScopeAuthorizationRequirement|100%|50%| |Microsoft.Identity.Web.ScopeOrAppPermissionAuthorizationHandler|90.2%|72.9%| |Microsoft.Identity.Web.ScopeOrAppPermissionAuthorizationRequirement|78.9%|60%| |Microsoft.Identity.Web.TempDataLoginErrorAccessor|15%|25%| |Microsoft.Identity.Web.TokenAcquisitionAppTokenCredential|0%|| |Microsoft.Identity.Web.TokenAcquisitionTokenCredential|0%|| |Microsoft.Identity.Web.TokenCacheProviders.Session.MsalSessionTokenCachePro
vider|0%|0%| |Microsoft.Identity.Web.TokenCacheProviders.Session.SessionTokenCacheProvide
rExtension|0%|0%|
Microsoft.Identity.Web.Certificate - 42.3% |**Name**|**Line**|**Branch**| |:---|---:|---:| |**Microsoft.Identity.Web.Certificate**|**42.3%**|**26.5%**| |Microsoft.Identity.Web.Base64EncodedCertificateLoader|90.9%|66.6%| |Microsoft.Identity.Web.CertificateDescription|87.9%|| |Microsoft.Identity.Web.CertificateLoaderHelper|29.1%|20%| |Microsoft.Identity.Web.DefaultCertificateLoader|50%|31.8%| |Microsoft.Identity.Web.DefaultCredentialsLoader|54.7%|50%| |Microsoft.Identity.Web.FromPathCertificateLoader|0%|| |Microsoft.Identity.Web.KeyVaultCertificateLoader|1.6%|0%| |Microsoft.Identity.Web.SignedAssertionFilePathCredentialsLoader|93.7%|100%| |Microsoft.Identity.Web.SignedAssertionFromManagedIdentityCredentialLoader|15.7%|0%| |Microsoft.Identity.Web.StoreWithDistinguishedNameCertificateLoader|0%|| |Microsoft.Identity.Web.StoreWithThumbprintCertificateLoader|0%||
Microsoft.Identity.Web.Certificateless - 40.1% |**Name**|**Line**|**Branch**| |:---|---:|---:| |**Microsoft.Identity.Web.Certificateless**|**40.1%**|**43.2%**| |Microsoft.Identity.Web.AzureIdentityForKubernetesClientAssertion|58.1%|63.1%| |Microsoft.Identity.Web.CertificatelessOptions|100%|| |Microsoft.Identity.Web.ClientAssertion|100%|| |Microsoft.Identity.Web.ClientAssertionProviderBase|100%|80%| |Microsoft.Identity.Web.ManagedIdentityClientAssertion|0%|0%|
Microsoft.Identity.Web.Diagnostics - 10.2% |**Name**|**Line**|**Branch**| |:---|---:|---:| |**Microsoft.Identity.Web.Diagnostics**|**10.2%**|**7.1%**| |Microsoft.Identity.Web.Diagnostics.OsHelper|33.3%|| |Microsoft.Identity.Web.Throws|8.6%|7.1%|
Microsoft.Identity.Web.DownstreamApi - 12% |**Name**|**Line**|**Branch**| |:---|---:|---:| |**Microsoft.Identity.Web.DownstreamApi**|**12%**|**10.8%**| |Microsoft.Extensions.Configuration.Binder.SourceGeneration|0%|0%| |Microsoft.Extensions.Configuration.Binder.SourceGeneration|0%|0%| |Microsoft.Identity.Web.DownstreamApi|15.4%|21.6%| |Microsoft.Identity.Web.DownstreamApiExtensions|51.4%|80%| |Microsoft.Identity.Web.DownstreamApiLoggingEventId|100%|| |System.Runtime.CompilerServices|0%|| |System.Runtime.CompilerServices|0%||
Microsoft.Identity.Web.MicrosoftGraph - 42% |**Name**|**Line**|**Branch**| |:---|---:|---:| |**Microsoft.Identity.Web.MicrosoftGraph**|**42%**|**4.5%**| |Microsoft.Identity.Web.BaseRequestExtensions|0%|0%| |Microsoft.Identity.Web.GraphServiceCollectionExtensions|82.7%|50%| |Microsoft.Identity.Web.MicrosoftGraphExtensions|67.7%|| |Microsoft.Identity.Web.MicrosoftGraphOptions|100%|| |Microsoft.Identity.Web.TokenAcquisitionAuthenticationProvider|13.5%|0%| |Microsoft.Identity.Web.TokenAcquisitionAuthenticationProviderOption|16.6%||
Microsoft.Identity.Web.Test.Common - 70.9% |**Name**|**Line**|**Branch**| |:---|---:|---:| |**Microsoft.Identity.Web.Test.Common**|**70.9%**|**66.6%**| |Microsoft.Identity.Web.Test.Common.Asserts|100%|| |Microsoft.Identity.Web.Test.Common.Mocks.LoggerMock`1|50%|100%| |Microsoft.Identity.Web.Test.Common.Mocks.MockHttpClientFactory|100%|33.3%| |Microsoft.Identity.Web.Test.Common.Mocks.MockHttpContextAccessor|100%|| |Microsoft.Identity.Web.Test.Common.Mocks.MockHttpCreator|68.9%|| |Microsoft.Identity.Web.Test.Common.Mocks.MockHttpMessageHandler|80.4%|81.2%| |Microsoft.Identity.Web.Test.Common.Mocks.QueryStringParser|86.8%|85.7%| |Microsoft.Identity.Web.Test.Common.Mocks.QueueHttpMessageHandler|57.1%|37.5%| |Microsoft.Identity.Web.Test.Common.TestConstants|100%|| |Microsoft.Identity.Web.Test.Common.TestHelpers.ExternalApp|0%|0%| |Microsoft.Identity.Web.Test.Common.TestHelpers.HttpContextUtilities|100%|| |Microsoft.Identity.Web.Test.Common.TestHelpers.InMemoryTokenCache|0%|0%| |Microsoft.Identity.Web.Test.Common.TestHelpers.MsalTestTokenCacheProvider|26.6%|| |Microsoft.Identity.Web.Test.Common.TestHelpers.TestMsalDistributedTokenCach
eAdapter|100%|| |Microsoft.Identity.Web.Test.Common.TestHelpers.TestOptionsMonitor`1|50%|0%|
Microsoft.Identity.Web.TokenAcquisition - 53.1% |**Name**|**Line**|**Branch**| |:---|---:|---:| |**Microsoft.Identity.Web.TokenAcquisition**|**53.1%**|**55.9%**| |Microsoft.Identity.Web.ApplicationBuilderExtensions|0%|| |Microsoft.Identity.Web.AuthCodeRedemptionParameters|100%|| |Microsoft.Identity.Web.CiamAuthorityHelper|100%|92.8%| |Microsoft.Identity.Web.ClientInfo|100%|87.5%| |Microsoft.Identity.Web.ConfidentialClientApplicationBuilderExtension|79%|60.5%| |Microsoft.Identity.Web.ConfidentialClientApplicationOptionsMerger|100%|50%| |Microsoft.Identity.Web.DefaultAuthorizationHeaderProvider|54.9%|26.6%| |Microsoft.Identity.Web.DefaultTokenAcquirerFactoryImplementation|1.6%|0%| |Microsoft.Identity.Web.Experimental.CertificateChangeEventArg|0%|| |Microsoft.Identity.Web.Extensibility.BaseAuthorizationHeaderProvider|45.4%|| |Microsoft.Identity.Web.Hosts.DefaultTokenAcquisitionHost|38.4%|0%| |Microsoft.Identity.Web.HttpContextExtensions|100%|| |Microsoft.Identity.Web.IdHelper|95.8%|50%| |Microsoft.Identity.Web.Internal.WebApiBuilders|100%|100%| |Microsoft.Identity.Web.ITokenAcquisition|0%|| |Microsoft.Identity.Web.JwtBearerOptionsMerger|0%|0%| |Microsoft.Identity.Web.LoggingEventId|100%|| |Microsoft.Identity.Web.LoggingOptions|100%|| |Microsoft.Identity.Web.MergedOptions|93.1%|91.8%| |Microsoft.Identity.Web.MergedOptionsStore|100%|| |Microsoft.Identity.Web.MicrosoftIdentityAppCallsWebApiAuthenticationBuilder|83.3%|100%| |Microsoft.Identity.Web.MicrosoftIdentityApplicationOptionsMerger|60%|0%| |Microsoft.Identity.Web.MicrosoftIdentityBaseAuthenticationBuilder|85.1%|78.5%| |Microsoft.Identity.Web.MicrosoftIdentityOptions|100%|75%| |Microsoft.Identity.Web.MicrosoftIdentityOptionsMerger|100%|50%| |Microsoft.Identity.Web.MicrosoftIdentityWebChallengeUserException|0%|| |Microsoft.Identity.Web.MsalAspNetCoreHttpClientFactory|50%|| |Microsoft.Identity.Web.MsAuth10AtPop|100%|100%| |Microsoft.Identity.Web.PrincipalExtensionsForSecurityTokens|100%|70%| |Microsoft.Identity.Web.ServiceCollectionExtensions|93.8%|92.8%| |Microsoft.Identity.Web.TokenAcquirer|0%|0%| |Microsoft.Identity.Web.TokenAcquirerFactory|55.4%|50%| |Microsoft.Identity.Web.TokenAcquisition|22.4%|20.2%| |Microsoft.Identity.Web.TokenAcquisitionAspNetCore|4.6%|0%| |Microsoft.Identity.Web.TokenAcquisitionAspnetCoreHost|40.4%|23.6%| |Microsoft.Identity.Web.TokenAcquisitionExtensionOptions|100%|75%| |Microsoft.Identity.Web.TokenAcquisitionOptions|100%|| |Microsoft.Identity.Web.Util.Base64UrlHelpers|93.4%|81.4%|
Microsoft.Identity.Web.TokenCache - 80.8% |**Name**|**Line**|**Branch**| |:---|---:|---:| |**Microsoft.Identity.Web.TokenCache**|**80.8%**|**82.6%**| |Microsoft.Identity.Web.ClaimsPrincipalExtensions|96.7%|100%| |Microsoft.Identity.Web.LoggingEventId|100%|| |Microsoft.Identity.Web.TokenCacheExtensions|100%|| |Microsoft.Identity.Web.TokenCacheProviders.CacheSerializerHints|100%|| |Microsoft.Identity.Web.TokenCacheProviders.Distributed.DistributedTokenCach
eAdapterExtension|100%|| |Microsoft.Identity.Web.TokenCacheProviders.Distributed.MsalDistributedToken
CacheAdapter|83%|83.3%| |Microsoft.Identity.Web.TokenCacheProviders.Distributed.MsalDistributedToken
CacheAdapterOptions|88.8%|| |Microsoft.Identity.Web.TokenCacheProviders.InMemory.InMemoryTokenCacheProvi
derExtension|100%|| |Microsoft.Identity.Web.TokenCacheProviders.InMemory.MsalMemoryTokenCacheOpt
ions|100%|| |Microsoft.Identity.Web.TokenCacheProviders.InMemory.MsalMemoryTokenCachePro
vider|83.8%|81.8%| |Microsoft.Identity.Web.TokenCacheProviders.MeasureDurationResult|100%|| |Microsoft.Identity.Web.TokenCacheProviders.MeasureDurationResult`1|0%|| |Microsoft.Identity.Web.TokenCacheProviders.MsalAbstractTokenCacheProvider|50.7%|66.6%| |Microsoft.Identity.Web.TokenCacheProviders.Utility|54.5%||