diff --git a/Directory.Build.props b/Directory.Build.props index 13c59d348..821031b72 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -29,6 +29,10 @@ true + + true + + true @@ -105,17 +109,17 @@ 5.0.12-* 5.0.12-* 5.0.0 - + 6.0.0 5.0.8 6.0.1 - + 5.0.0 6.0.0 - + - 6.0.0 + 6.0.0 2.1.0 diff --git a/src/Microsoft.Identity.Web.DownstreamApi/DownstreamApi.HttpMethods.cs b/src/Microsoft.Identity.Web.DownstreamApi/DownstreamApi.HttpMethods.cs index a4b50175f..16fbde98d 100644 --- a/src/Microsoft.Identity.Web.DownstreamApi/DownstreamApi.HttpMethods.cs +++ b/src/Microsoft.Identity.Web.DownstreamApi/DownstreamApi.HttpMethods.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. using System; +using System.Diagnostics.CodeAnalysis; using System.Net.Http; using System.Security.Claims; using System.Threading; @@ -14,6 +15,9 @@ namespace Microsoft.Identity.Web internal partial class DownstreamApi : IDownstreamApi { /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamApi.DeserializeOutput(response, effectiveOptions)")] +#endif public async Task GetForUserAsync( string? serviceName, Action? downstreamApiOptionsOverride = null, @@ -41,6 +45,9 @@ ex is InvalidOperationException } /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamApi.DeserializeOutput(response, effectiveOptions)")] +#endif public async Task GetForUserAsync( string? serviceName, TInput input, @@ -76,6 +83,9 @@ ex is InvalidOperationException } /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamApi.DeserializeOutput(response, effectiveOptions)")] +#endif public async Task GetForAppAsync( string? serviceName, Action? downstreamApiOptionsOverride = null, @@ -102,6 +112,9 @@ ex is InvalidOperationException } /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamApi.DeserializeOutput(response, effectiveOptions)")] +#endif public async Task GetForAppAsync( string? serviceName, TInput input, @@ -136,6 +149,9 @@ ex is InvalidOperationException } /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamApi.DeserializeOutput(response, effectiveOptions)")] +#endif public async Task PostForUserAsync( string? serviceName, TInput input, @@ -169,6 +185,9 @@ ex is InvalidOperationException } /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamApi.DeserializeOutput(response, effectiveOptions)")] +#endif public async Task PostForUserAsync( string? serviceName, TInput input, @@ -204,6 +223,9 @@ ex is InvalidOperationException } /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamApi.DeserializeOutput(response, effectiveOptions)")] +#endif public async Task PostForAppAsync( string? serviceName, TInput input, @@ -236,6 +258,9 @@ ex is InvalidOperationException } /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamApi.DeserializeOutput(response, effectiveOptions)")] +#endif public async Task PostForAppAsync( string? serviceName, TInput input, @@ -270,6 +295,9 @@ ex is InvalidOperationException } /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamApi.DeserializeOutput(response, effectiveOptions)")] +#endif public async Task PutForUserAsync( string? serviceName, TInput input, @@ -303,6 +331,9 @@ ex is InvalidOperationException } /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamApi.DeserializeOutput(response, effectiveOptions)")] +#endif public async Task PutForUserAsync( string? serviceName, TInput input, @@ -338,6 +369,9 @@ ex is InvalidOperationException } /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamApi.DeserializeOutput(response, effectiveOptions)")] +#endif public async Task PutForAppAsync( string? serviceName, TInput input, @@ -370,6 +404,9 @@ ex is InvalidOperationException } /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamApi.DeserializeOutput(response, effectiveOptions)")] +#endif public async Task PutForAppAsync( string? serviceName, TInput input, @@ -406,6 +443,9 @@ ex is InvalidOperationException #if !NETFRAMEWORK && !NETSTANDARD2_0 /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamApi.DeserializeOutput(response, effectiveOptions)")] +#endif public async Task PatchForUserAsync( string? serviceName, TInput input, @@ -439,6 +479,9 @@ ex is InvalidOperationException } /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamApi.DeserializeOutput(response, effectiveOptions)")] +#endif public async Task PatchForUserAsync( string? serviceName, TInput input, @@ -474,6 +517,9 @@ ex is InvalidOperationException } /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamApi.DeserializeOutput(response, effectiveOptions)")] +#endif public async Task PatchForAppAsync( string? serviceName, TInput input, @@ -506,6 +552,9 @@ ex is InvalidOperationException } /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamApi.DeserializeOutput(response, effectiveOptions)")] +#endif public async Task PatchForAppAsync( string? serviceName, TInput input, @@ -542,6 +591,9 @@ ex is InvalidOperationException #endif // !NETFRAMEWORK && !NETSTANDARD2_0 /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamApi.DeserializeOutput(response, effectiveOptions)")] +#endif public async Task DeleteForUserAsync( string? serviceName, TInput input, @@ -575,6 +627,9 @@ ex is InvalidOperationException } /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamApi.DeserializeOutput(response, effectiveOptions)")] +#endif public async Task DeleteForUserAsync( string? serviceName, TInput input, @@ -610,6 +665,9 @@ ex is InvalidOperationException } /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamApi.DeserializeOutput(response, effectiveOptions)")] +#endif public async Task DeleteForAppAsync( string? serviceName, TInput input, @@ -642,6 +700,9 @@ ex is InvalidOperationException } /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamApi.DeserializeOutput(response, effectiveOptions)")] +#endif public async Task DeleteForAppAsync( string? serviceName, TInput input, diff --git a/src/Microsoft.Identity.Web.DownstreamApi/DownstreamApi.HttpMethods.tt b/src/Microsoft.Identity.Web.DownstreamApi/DownstreamApi.HttpMethods.tt index 5207d97c0..053d7330a 100644 --- a/src/Microsoft.Identity.Web.DownstreamApi/DownstreamApi.HttpMethods.tt +++ b/src/Microsoft.Identity.Web.DownstreamApi/DownstreamApi.HttpMethods.tt @@ -8,6 +8,7 @@ // Licensed under the MIT License. using System; +using System.Diagnostics.CodeAnalysis; using System.Net.Http; using System.Security.Claims; using System.Threading; @@ -55,6 +56,9 @@ namespace Microsoft.Identity.Web firstMethod = false; #> /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamApi.DeserializeOutput(response, effectiveOptions)")] +#endif public async <#= returnType #> <#= httpMethod #>For<#= token #>Async<#= template #>( string? serviceName, <# if (hasInput){ #> diff --git a/src/Microsoft.Identity.Web.DownstreamApi/DownstreamApi.cs b/src/Microsoft.Identity.Web.DownstreamApi/DownstreamApi.cs index 24b680786..aeaac078c 100644 --- a/src/Microsoft.Identity.Web.DownstreamApi/DownstreamApi.cs +++ b/src/Microsoft.Identity.Web.DownstreamApi/DownstreamApi.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. using System; +using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Net.Http; using System.Runtime.CompilerServices; @@ -96,6 +97,9 @@ public Task CallApiForAppAsync( } /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamApi.SerializeInput(TInput, DownstreamApiOptions)")] +#endif public async Task CallApiForUserAsync( string? serviceName, TInput input, @@ -120,6 +124,9 @@ public Task CallApiForAppAsync( /// [MethodImpl(MethodImplOptions.AggressiveInlining)] +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamApi.SerializeInput(TInput, DownstreamApiOptions)")] +#endif public async Task CallApiForAppAsync( string? serviceName, TInput input, @@ -142,6 +149,9 @@ public Task CallApiForAppAsync( /// [MethodImpl(MethodImplOptions.AggressiveInlining)] +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamApi.DeserializeOutput(HttpResponseMessage, DownstreamApiOptions)")] +#endif public async Task CallApiForAppAsync(string serviceName, Action? downstreamApiOptionsOverride = null, CancellationToken cancellationToken = default) where TOutput : class @@ -154,6 +164,9 @@ public Task CallApiForAppAsync( } /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamApi.DeserializeOutput(HttpResponseMessage, DownstreamApiOptions)")] +#endif public async Task CallApiForUserAsync( string? serviceName, Action? downstreamApiOptionsOverride = null, @@ -217,6 +230,9 @@ public Task CallApiForAppAsync( return clonedOptions; } +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls System.Text.Json.JsonSerializer.Serialize(TValue, JsonSerializerOptions)")] +#endif private static HttpContent? SerializeInput(TInput input, DownstreamApiOptions effectiveOptions) { HttpContent? effectiveInput; @@ -238,6 +254,9 @@ public Task CallApiForAppAsync( return effectiveInput; } +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls System.Text.Json.JsonSerializer.Deserialize(String, JsonSerializerOptions)")] +#endif private static async Task DeserializeOutput(HttpResponseMessage response, DownstreamApiOptions effectiveOptions) where TOutput : class { diff --git a/src/Microsoft.Identity.Web.DownstreamApi/DownstreamApiExtensions.cs b/src/Microsoft.Identity.Web.DownstreamApi/DownstreamApiExtensions.cs index 21c45de48..ae5e08196 100644 --- a/src/Microsoft.Identity.Web.DownstreamApi/DownstreamApiExtensions.cs +++ b/src/Microsoft.Identity.Web.DownstreamApi/DownstreamApiExtensions.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. using System; +using System.Diagnostics.CodeAnalysis; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Identity.Abstractions; @@ -21,6 +22,9 @@ public static class DownstreamApiExtensions /// This is the name used when calling the service from controller/pages. /// Configuration. /// The builder for chaining. +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Microsoft.Extensions.DependencyInjection.OptionsConfigurationServiceCollectionExtensions.Configure(IServiceCollection, String, IConfiguration).")] +#endif public static IServiceCollection AddDownstreamApi( this IServiceCollection services, string serviceName, @@ -65,6 +69,9 @@ public static IServiceCollection AddDownstreamApi( /// This is the name used when calling the service from controller/pages. /// Configuration. /// The builder for chaining. +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Microsoft.Identity.Web.DownstreamApiExtensions.AddDownstreamApi(IServiceCollection, String, IConfiguration).")] +#endif public static MicrosoftIdentityAppCallsWebApiAuthenticationBuilder AddDownstreamApi( this MicrosoftIdentityAppCallsWebApiAuthenticationBuilder builder, string serviceName, diff --git a/src/Microsoft.Identity.Web.MicrosoftGraph/MicrosoftGraphExtensions.cs b/src/Microsoft.Identity.Web.MicrosoftGraph/MicrosoftGraphExtensions.cs index 3f407309b..77ef6a48d 100644 --- a/src/Microsoft.Identity.Web.MicrosoftGraph/MicrosoftGraphExtensions.cs +++ b/src/Microsoft.Identity.Web.MicrosoftGraph/MicrosoftGraphExtensions.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Linq; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -24,6 +25,9 @@ public static class MicrosoftGraphExtensions /// Builder. /// Configuration section. /// The builder to chain. +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Microsoft.Extensions.Configuration.ConfigurationBinder.Bind(IConfiguration, Object).")] +#endif public static MicrosoftIdentityAppCallsWebApiAuthenticationBuilder AddMicrosoftGraph( this MicrosoftIdentityAppCallsWebApiAuthenticationBuilder builder, IConfigurationSection configurationSection) diff --git a/src/Microsoft.Identity.Web.TokenAcquisition/AspNetCore/ApplicationBuilderExtensions.cs b/src/Microsoft.Identity.Web.TokenAcquisition/AspNetCore/ApplicationBuilderExtensions.cs index 105aa826d..bc6cf6145 100644 --- a/src/Microsoft.Identity.Web.TokenAcquisition/AspNetCore/ApplicationBuilderExtensions.cs +++ b/src/Microsoft.Identity.Web.TokenAcquisition/AspNetCore/ApplicationBuilderExtensions.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +using System.Diagnostics.CodeAnalysis; using Microsoft.AspNetCore.Builder; namespace Microsoft.Identity.Web @@ -9,6 +10,9 @@ namespace Microsoft.Identity.Web /// Extension class on IApplicationBuilder to initialize the service provider of /// the TokenAcquirerFactory in ASP.NET Core. /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Microsoft.Identity.Web.TokenAcquirerFactory.GetDefaultInstance(String).")] +#endif public static class ApplicationBuilderExtensions { /// diff --git a/src/Microsoft.Identity.Web.TokenAcquisition/AspNetCore/TokenAcquisition-AspnetCore.cs b/src/Microsoft.Identity.Web.TokenAcquisition/AspNetCore/TokenAcquisition-AspnetCore.cs index 1d665e66d..f23b107d5 100644 --- a/src/Microsoft.Identity.Web.TokenAcquisition/AspNetCore/TokenAcquisition-AspnetCore.cs +++ b/src/Microsoft.Identity.Web.TokenAcquisition/AspNetCore/TokenAcquisition-AspnetCore.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Net; using System.Net.Http; @@ -138,6 +139,9 @@ public void ReplyForbiddenWithWwwAuthenticateHeader( /// } /// /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.TokenAcquisition.AddAccountToCacheFromAuthorizationCodeAsync(AuthCodeRedemptionParameters)")] +#endif public async Task AddAccountToCacheFromAuthorizationCodeAsync( AuthorizationCodeReceivedContext context, IEnumerable scopes, diff --git a/src/Microsoft.Identity.Web.TokenAcquisition/ClientInfo.cs b/src/Microsoft.Identity.Web.TokenAcquisition/ClientInfo.cs index 5596b0773..72c52e76e 100644 --- a/src/Microsoft.Identity.Web.TokenAcquisition/ClientInfo.cs +++ b/src/Microsoft.Identity.Web.TokenAcquisition/ClientInfo.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. using System; +using System.Diagnostics.CodeAnalysis; using System.Text.Json; using System.Text.Json.Serialization; using Microsoft.Identity.Web.Util; @@ -16,6 +17,9 @@ internal class ClientInfo [JsonPropertyName(ClaimConstants.UniqueTenantIdentifier)] public string? UniqueTenantIdentifier { get; set; } = null; +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.ClientInfo.DeserializeFromJson(byte[]).")] +#endif public static ClientInfo? CreateFromJson(string? clientInfo) { if (string.IsNullOrEmpty(clientInfo)) @@ -27,6 +31,9 @@ internal class ClientInfo return bytes != null ? DeserializeFromJson(bytes) : null; } +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls System.Text.Json.JsonSerializer.Deserialize(ReadOnlySpan, JsonSerializerOptions).")] +#endif internal static ClientInfo? DeserializeFromJson(byte[]? jsonByteArray) { if (jsonByteArray == null || jsonByteArray.Length == 0) diff --git a/src/Microsoft.Identity.Web.TokenAcquisition/ITokenAcquisitionInternal.cs b/src/Microsoft.Identity.Web.TokenAcquisition/ITokenAcquisitionInternal.cs index a93234c55..f43b8ef28 100644 --- a/src/Microsoft.Identity.Web.TokenAcquisition/ITokenAcquisitionInternal.cs +++ b/src/Microsoft.Identity.Web.TokenAcquisition/ITokenAcquisitionInternal.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Security.Claims; using System.Threading.Tasks; #if !NETSTANDARD2_0 && !NET462 && !NET472 @@ -48,6 +49,9 @@ internal interface ITokenAcquisitionInternal : ITokenAcquisition /// } /// /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.TokenAcquisition.AddAccountToCacheFromAuthorizationCodeAsync(AuthCodeRedemptionParameters)")] +#endif Task AddAccountToCacheFromAuthorizationCodeAsync( AuthorizationCodeReceivedContext context, IEnumerable scopes, diff --git a/src/Microsoft.Identity.Web.TokenAcquisition/MicrosoftIdentityAppCallingWebApiAuthenticationBuilder.cs b/src/Microsoft.Identity.Web.TokenAcquisition/MicrosoftIdentityAppCallingWebApiAuthenticationBuilder.cs index ada5f856d..98b92d256 100644 --- a/src/Microsoft.Identity.Web.TokenAcquisition/MicrosoftIdentityAppCallingWebApiAuthenticationBuilder.cs +++ b/src/Microsoft.Identity.Web.TokenAcquisition/MicrosoftIdentityAppCallingWebApiAuthenticationBuilder.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. using System; +using System.Diagnostics.CodeAnalysis; using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -18,6 +19,9 @@ namespace Microsoft.Identity.Web /// public class MicrosoftIdentityAppCallsWebApiAuthenticationBuilder : MicrosoftIdentityBaseAuthenticationBuilder { +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.MicrosoftIdentityBaseAuthenticationBuilder.MicrosoftIdentityBaseAuthenticationBuilder(IServiceCollection, IConfigurationSection)")] +#endif internal MicrosoftIdentityAppCallsWebApiAuthenticationBuilder( IServiceCollection services, IConfigurationSection? configurationSection = null) diff --git a/src/Microsoft.Identity.Web.TokenAcquisition/MicrosoftIdentityBaseAuthenticationBuilder.cs b/src/Microsoft.Identity.Web.TokenAcquisition/MicrosoftIdentityBaseAuthenticationBuilder.cs index ed09a745d..da3819e20 100644 --- a/src/Microsoft.Identity.Web.TokenAcquisition/MicrosoftIdentityBaseAuthenticationBuilder.cs +++ b/src/Microsoft.Identity.Web.TokenAcquisition/MicrosoftIdentityBaseAuthenticationBuilder.cs @@ -8,6 +8,7 @@ using Microsoft.IdentityModel.Abstractions; using Microsoft.IdentityModel.LoggingExtensions; using Microsoft.IdentityModel.Logging; +using System.Diagnostics.CodeAnalysis; namespace Microsoft.Identity.Web { @@ -22,6 +23,9 @@ public class MicrosoftIdentityBaseAuthenticationBuilder /// /// The services being configured. /// Optional configuration section. +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Extensions.Configuration.ConfigurationBinder.Bind(IConfiguration, Object).")] +#endif protected MicrosoftIdentityBaseAuthenticationBuilder( IServiceCollection services, IConfigurationSection? configurationSection = null) diff --git a/src/Microsoft.Identity.Web.TokenAcquisition/TokenAcquirerFactory.cs b/src/Microsoft.Identity.Web.TokenAcquisition/TokenAcquirerFactory.cs index 91bdc36b3..3c2e9c38b 100644 --- a/src/Microsoft.Identity.Web.TokenAcquisition/TokenAcquirerFactory.cs +++ b/src/Microsoft.Identity.Web.TokenAcquisition/TokenAcquirerFactory.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.IO; using System.Linq; using System.Reflection; @@ -73,6 +74,9 @@ protected TokenAcquirerFactory() /// [!code-csharp[ConvertType](~/../tests/DevApps/aspnet-mvc/OwinWebApp/App_Start/Startup.Auth.cs?highlight=22)] /// ]]> /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Extensions.Configuration.ConfigurationBinder.Bind(IConfiguration, Object).")] +#endif static public T GetDefaultInstance(string configSection="AzureAd") where T : TokenAcquirerFactory, new() { T instance; @@ -108,6 +112,9 @@ protected TokenAcquirerFactory() /// [!code-csharp[ConvertType](~/../tests/DevApps/daemon-app/daemon-console-calling-msgraph/Program.cs?highlight=5)] /// ]]> /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Extensions.Configuration.ConfigurationBinder.Bind(IConfiguration, Object).")] +#endif static public TokenAcquirerFactory GetDefaultInstance(string configSection = "AzureAd") { TokenAcquirerFactory instance; diff --git a/src/Microsoft.Identity.Web.TokenAcquisition/TokenAcquisition.cs b/src/Microsoft.Identity.Web.TokenAcquisition/TokenAcquisition.cs index d412ede3a..f701fc8cf 100644 --- a/src/Microsoft.Identity.Web.TokenAcquisition/TokenAcquisition.cs +++ b/src/Microsoft.Identity.Web.TokenAcquisition/TokenAcquisition.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Concurrent; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.IdentityModel.Tokens.Jwt; using System.Linq; @@ -102,6 +103,9 @@ public TokenAcquisition( _credentialsLoader = credentialsLoader; } +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.ClientInfo.CreateFromJson(String)")] +#endif public async Task AddAccountToCacheFromAuthorizationCodeAsync( AuthCodeRedemptionParameters authCodeRedemptionParameters) { diff --git a/src/Microsoft.Identity.Web.TokenAcquisition/WebApiBuilders.cs b/src/Microsoft.Identity.Web.TokenAcquisition/WebApiBuilders.cs index 123484d75..7eb916311 100644 --- a/src/Microsoft.Identity.Web.TokenAcquisition/WebApiBuilders.cs +++ b/src/Microsoft.Identity.Web.TokenAcquisition/WebApiBuilders.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. using System; +using System.Diagnostics.CodeAnalysis; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Identity.Abstractions; @@ -25,6 +26,9 @@ public static class WebApiBuilders /// The services being configured. /// IConfigurationSection. /// The authentication builder to chain. +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Bind, Configure with Unspecified Configuration and ServiceCollection.")] +#endif public static MicrosoftIdentityAppCallsWebApiAuthenticationBuilder EnableTokenAcquisition( Action configureConfidentialClientApplicationOptions, string authenticationScheme, diff --git a/src/Microsoft.Identity.Web/AuthorizeForScopesAttribute.cs b/src/Microsoft.Identity.Web/AuthorizeForScopesAttribute.cs index eb1f48456..540768a73 100644 --- a/src/Microsoft.Identity.Web/AuthorizeForScopesAttribute.cs +++ b/src/Microsoft.Identity.Web/AuthorizeForScopesAttribute.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. using System; +using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.Security.Claims; using Microsoft.AspNetCore.Authentication; @@ -89,7 +90,7 @@ public override void OnException(ExceptionContext context) IDWebErrorMessage.ScopeKeySectionIsProvidedButNotPresentInTheServicesCollection, nameof(ScopeKeySection))); } - string? scopeKeySectionValue = configuration.GetValue(ScopeKeySection); + string? scopeKeySectionValue = configuration[ScopeKeySection]; if (!string.IsNullOrEmpty(scopeKeySectionValue)) { diff --git a/src/Microsoft.Identity.Web/DownstreamWebApiSupport/DownstreamWebApi.cs b/src/Microsoft.Identity.Web/DownstreamWebApiSupport/DownstreamWebApi.cs index 48d794f23..faae19acf 100644 --- a/src/Microsoft.Identity.Web/DownstreamWebApiSupport/DownstreamWebApi.cs +++ b/src/Microsoft.Identity.Web/DownstreamWebApiSupport/DownstreamWebApi.cs @@ -3,6 +3,7 @@ using System; using System.ComponentModel; +using System.Diagnostics.CodeAnalysis; using System.Net.Http; using System.Security.Claims; using System.Text; @@ -107,6 +108,9 @@ public async Task CallWebApiForUserAsync( } /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls System.Text.Json.JsonSerializer.Serialize(TValue, JsonSerializerOptions).")] +#endif public async Task CallWebApiForUserAsync( string serviceName, TInput input, diff --git a/src/Microsoft.Identity.Web/DownstreamWebApiSupport/DownstreamWebApiExtensions.cs b/src/Microsoft.Identity.Web/DownstreamWebApiSupport/DownstreamWebApiExtensions.cs index 19bff2311..9e4a09634 100644 --- a/src/Microsoft.Identity.Web/DownstreamWebApiSupport/DownstreamWebApiExtensions.cs +++ b/src/Microsoft.Identity.Web/DownstreamWebApiSupport/DownstreamWebApiExtensions.cs @@ -3,6 +3,7 @@ using System; using System.ComponentModel; +using System.Diagnostics.CodeAnalysis; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -24,6 +25,9 @@ public static class DownstreamWebApiExtensions [Obsolete("Use AddDownstreamApi in Microsoft.Identity.Abstractions, implemented in Microsoft.Identity.Web.DownstreamApi." + "See aka.ms/id-web-downstream-api-v2 for migration details.", false)] [EditorBrowsable(EditorBrowsableState.Never)] +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Extensions.DependencyInjection.OptionsConfigurationServiceCollectionExtensions.Configure(IServiceCollection, String, IConfiguration).")] +#endif public static MicrosoftIdentityAppCallsWebApiAuthenticationBuilder AddDownstreamWebApi( this MicrosoftIdentityAppCallsWebApiAuthenticationBuilder builder, string serviceName, diff --git a/src/Microsoft.Identity.Web/DownstreamWebApiSupport/DownstreamWebApiGenericExtensions.cs b/src/Microsoft.Identity.Web/DownstreamWebApiSupport/DownstreamWebApiGenericExtensions.cs index 40fee1efb..141c8b788 100644 --- a/src/Microsoft.Identity.Web/DownstreamWebApiSupport/DownstreamWebApiGenericExtensions.cs +++ b/src/Microsoft.Identity.Web/DownstreamWebApiSupport/DownstreamWebApiGenericExtensions.cs @@ -3,6 +3,7 @@ using System; using System.ComponentModel; +using System.Diagnostics.CodeAnalysis; using System.Net.Http; using System.Security.Claims; using System.Text; @@ -37,6 +38,9 @@ public static class DownstreamWebApiGenericExtensions [Obsolete("Use IDownstreamApi.GetForUserAsync in Microsoft.Identity.Abstractions, implemented in Microsoft.Identity.Web.DownstreamApi." + "See aka.ms/id-web-downstream-api-v2 for migration details.", false)] [EditorBrowsable(EditorBrowsableState.Never)] +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamWebApiGenericExtensions.ConvertToOutput(TInput).")] +#endif public static async Task GetForUserAsync( this IDownstreamWebApi downstreamWebApi, string serviceName, @@ -78,6 +82,9 @@ public static class DownstreamWebApiGenericExtensions [Obsolete("Use IDownstreamApi.GetForUserAsync in Microsoft.Identity.Abstractions, implemented in Microsoft.Identity.Web.DownstreamApi." + "See aka.ms/id-web-downstream-api-v2 for migration details.", false)] [EditorBrowsable(EditorBrowsableState.Never)] +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamWebApiGenericExtensions.ConvertFromInput(TInput).")] +#endif public static async Task GetForUserAsync( this IDownstreamWebApi downstreamWebApi, string serviceName, @@ -122,6 +129,9 @@ await downstreamWebApi.CallWebApiForUserAsync( [Obsolete("Use IDownstreamApi.PostForUserAsync in Microsoft.Identity.Abstractions, implemented in Microsoft.Identity.Web.DownstreamApi." + "See aka.ms/id-web-downstream-api-v2 for migration details.", false)] [EditorBrowsable(EditorBrowsableState.Never)] +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamWebApiGenericExtensions.ConvertToOutput(TInput).")] +#endif public static async Task PostForUserAsync( this IDownstreamWebApi downstreamWebApi, string serviceName, @@ -168,6 +178,9 @@ await downstreamWebApi.CallWebApiForUserAsync( [Obsolete("Use IDownstreamApi.PutForUserAsync in Microsoft.Identity.Abstractions, implemented in Microsoft.Identity.Web.DownstreamApi." + "See aka.ms/id-web-downstream-api-v2 for migration details.", false)] [EditorBrowsable(EditorBrowsableState.Never)] +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamWebApiGenericExtensions.ConvertFromInput(TInput).")] +#endif public static async Task PutForUserAsync( this IDownstreamWebApi downstreamWebApi, string serviceName, @@ -213,6 +226,9 @@ await downstreamWebApi.CallWebApiForUserAsync( [Obsolete("Use IDownstreamApi.PutForUserAsync in Microsoft.Identity.Abstractions, implemented in Microsoft.Identity.Web.DownstreamApi." + "See aka.ms/id-web-downstream-api-v2 for migration details.", false)] [EditorBrowsable(EditorBrowsableState.Never)] +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamWebApiGenericExtensions.ConvertToOutput(TInput).")] +#endif public static async Task PutForUserAsync( this IDownstreamWebApi downstreamWebApi, string serviceName, @@ -258,6 +274,9 @@ await downstreamWebApi.CallWebApiForUserAsync( [Obsolete("Use IDownstreamApi.CallWebApiForUserAsync in Microsoft.Identity.Abstractions, implemented in Microsoft.Identity.Web.DownstreamApi." + "See aka.ms/id-web-downstream-api-v2 for migration details.", false)] [EditorBrowsable(EditorBrowsableState.Never)] +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.DownstreamWebApiGenericExtensions.ConvertToOutput(TInput).")] +#endif public static async Task CallWebApiForUserAsync( this IDownstreamWebApi downstreamWebApi, string serviceName, @@ -277,11 +296,17 @@ await downstreamWebApi.CallWebApiForUserAsync( return await ConvertToOutput(response).ConfigureAwait(false); } +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls System.Text.Json.JsonSerializer.Serialize(TValue, JsonSerializerOptions).")] +#endif private static StringContent ConvertFromInput(TInput input) { return new StringContent(JsonSerializer.Serialize(input), Encoding.UTF8, "application/json"); } +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls System.Text.Json.JsonSerializer.Deserialize(String, JsonSerializerOptions).")] +#endif private static async Task ConvertToOutput(HttpResponseMessage response) where TOutput : class { diff --git a/src/Microsoft.Identity.Web/DownstreamWebApiSupport/IDownstreamWebApi.cs b/src/Microsoft.Identity.Web/DownstreamWebApiSupport/IDownstreamWebApi.cs index d78f756f4..abcbe8de8 100644 --- a/src/Microsoft.Identity.Web/DownstreamWebApiSupport/IDownstreamWebApi.cs +++ b/src/Microsoft.Identity.Web/DownstreamWebApiSupport/IDownstreamWebApi.cs @@ -3,6 +3,7 @@ using System; using System.ComponentModel; +using System.Diagnostics.CodeAnalysis; using System.Net.Http; using System.Security.Claims; using System.Threading.Tasks; @@ -118,6 +119,9 @@ Task CallWebApiForUserAsync( /// } /// /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls System.Text.Json.JsonSerializer.Serialize(TValue, JsonSerializerOptions).")] +#endif public Task CallWebApiForUserAsync( string serviceName, TInput input, @@ -181,6 +185,9 @@ Task CallWebApiForUserAsync( /// } /// /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls System.Text.Json.JsonSerializer.Serialize(TValue, JsonSerializerOptions).")] +#endif Task CallWebApiForUserAsync( string serviceName, TInput input, diff --git a/src/Microsoft.Identity.Web/DownstreamWebApiSupport/MicrosoftIdentityAuthenticationMessageHandlerHttpClientBuilderExtensions.cs b/src/Microsoft.Identity.Web/DownstreamWebApiSupport/MicrosoftIdentityAuthenticationMessageHandlerHttpClientBuilderExtensions.cs index a086a7f4f..fd16a69bc 100644 --- a/src/Microsoft.Identity.Web/DownstreamWebApiSupport/MicrosoftIdentityAuthenticationMessageHandlerHttpClientBuilderExtensions.cs +++ b/src/Microsoft.Identity.Web/DownstreamWebApiSupport/MicrosoftIdentityAuthenticationMessageHandlerHttpClientBuilderExtensions.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. using System; +using System.Diagnostics.CodeAnalysis; using System.Net.Http; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -21,6 +22,9 @@ public static class MicrosoftIdentityAuthenticationMessageHandlerHttpClientBuild /// Name of the configuration for the service. /// Configuration. /// The builder for chaining. +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Extensions.DependencyInjection.OptionsConfigurationServiceCollectionExtensions.Configure(IServiceCollection, String, IConfiguration).")] +#endif public static IHttpClientBuilder AddMicrosoftIdentityUserAuthenticationHandler( this IHttpClientBuilder builder, string serviceName, @@ -61,6 +65,9 @@ public static IHttpClientBuilder AddMicrosoftIdentityUserAuthenticationHandler( /// Name of the configuration for the service. /// Configuration. /// The builder for chaining. +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Extensions.DependencyInjection.OptionsConfigurationServiceCollectionExtensions.Configure(IServiceCollection, String, IConfiguration).")] +#endif public static IHttpClientBuilder AddMicrosoftIdentityAppAuthenticationHandler( this IHttpClientBuilder builder, string serviceName, diff --git a/src/Microsoft.Identity.Web/Policy/ScopeAuthorizationHandler.cs b/src/Microsoft.Identity.Web/Policy/ScopeAuthorizationHandler.cs index 8f066d841..af8d416a2 100644 --- a/src/Microsoft.Identity.Web/Policy/ScopeAuthorizationHandler.cs +++ b/src/Microsoft.Identity.Web/Policy/ScopeAuthorizationHandler.cs @@ -60,7 +60,7 @@ protected override Task HandleRequirementAsync( if (configurationKey != null) { - scopes = _configuration.GetValue(configurationKey)?.Split(' '); + scopes = _configuration[configurationKey]?.Split(' '); } if (scopes is null) diff --git a/src/Microsoft.Identity.Web/Policy/ScopeOrAppPermissionAuthorizationHandler.cs b/src/Microsoft.Identity.Web/Policy/ScopeOrAppPermissionAuthorizationHandler.cs index 551fab883..ae3dd9e64 100644 --- a/src/Microsoft.Identity.Web/Policy/ScopeOrAppPermissionAuthorizationHandler.cs +++ b/src/Microsoft.Identity.Web/Policy/ScopeOrAppPermissionAuthorizationHandler.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Security.Claims; using System.Threading.Tasks; @@ -62,7 +63,7 @@ protected override Task HandleRequirementAsync( if (scopeConfigurationKey != null) { - scopes = _configuration.GetValue(scopeConfigurationKey)?.Split(' '); + scopes = _configuration[scopeConfigurationKey]?.Split(' '); } if (scopes is null) diff --git a/src/Microsoft.Identity.Web/WebApiExtensions/MicrosoftIdentityWebApiAuthenticationBuilder.cs b/src/Microsoft.Identity.Web/WebApiExtensions/MicrosoftIdentityWebApiAuthenticationBuilder.cs index 7df685320..8297ee94e 100644 --- a/src/Microsoft.Identity.Web/WebApiExtensions/MicrosoftIdentityWebApiAuthenticationBuilder.cs +++ b/src/Microsoft.Identity.Web/WebApiExtensions/MicrosoftIdentityWebApiAuthenticationBuilder.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. using System; +using System.Diagnostics.CodeAnalysis; using System.IdentityModel.Tokens.Jwt; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.Extensions.Configuration; @@ -26,6 +27,9 @@ public class MicrosoftIdentityWebApiAuthenticationBuilder : MicrosoftIdentityBas /// the Microsoft identity options. /// Configuration section from which to /// get parameters. +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.MicrosoftIdentityBaseAuthenticationBuilder.MicrosoftIdentityBaseAuthenticationBuilder(IServiceCollection, IConfigurationSection).")] +#endif internal MicrosoftIdentityWebApiAuthenticationBuilder( IServiceCollection services, string jwtBearerAuthenticationScheme, @@ -48,6 +52,9 @@ internal MicrosoftIdentityWebApiAuthenticationBuilder( /// /// The action to configure . /// The authentication builder to chain. +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.Internal.WebApiBuilders.EnableTokenAcquisition(IServiceCollection, string, Action, IConfigurationSection).")] +#endif public MicrosoftIdentityAppCallsWebApiAuthenticationBuilder EnableTokenAcquisitionToCallDownstreamApi( Action configureConfidentialClientApplicationOptions) { @@ -64,6 +71,9 @@ public MicrosoftIdentityAppCallsWebApiAuthenticationBuilder EnableTokenAcquisiti ConfigurationSection); } +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.Internal.WebApiBuilders.EnableTokenAcquisition(Action, String, IServiceCollection, IConfigurationSection).")] +#endif internal static void CallsWebApiImplementation( IServiceCollection services, string jwtBearerAuthenticationScheme, diff --git a/src/Microsoft.Identity.Web/WebApiExtensions/MicrosoftIdentityWebApiAuthenticationBuilderExtensions.cs b/src/Microsoft.Identity.Web/WebApiExtensions/MicrosoftIdentityWebApiAuthenticationBuilderExtensions.cs index 4c65e7f3e..2a2821b67 100644 --- a/src/Microsoft.Identity.Web/WebApiExtensions/MicrosoftIdentityWebApiAuthenticationBuilderExtensions.cs +++ b/src/Microsoft.Identity.Web/WebApiExtensions/MicrosoftIdentityWebApiAuthenticationBuilderExtensions.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.Linq; using System.Security.Cryptography.X509Certificates; @@ -34,6 +35,9 @@ public static class MicrosoftIdentityWebApiAuthenticationBuilderExtensions /// Set to true if you want to debug, or just understand the JWT bearer events. /// /// The authentication builder to chain. +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.MicrosoftIdentityWebApiAuthneticationBuilderExtensions.AddMicrosoftIdentityWebApi(AuthenticationBuilder, IConfigurationSection, string, bool).")] +#endif public static MicrosoftIdentityWebApiAuthenticationBuilderWithConfiguration AddMicrosoftIdentityWebApi( this AuthenticationBuilder builder, IConfiguration configuration, @@ -63,6 +67,9 @@ public static MicrosoftIdentityWebApiAuthenticationBuilderWithConfiguration AddM /// Set to true if you want to debug, or just understand the JWT bearer events. /// /// The authentication builder to chain. +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Microsoft.Extensions.Configuration.ConfigurationBinder.Bind(IConfiguration, Object).")] +#endif public static MicrosoftIdentityWebApiAuthenticationBuilderWithConfiguration AddMicrosoftIdentityWebApi( this AuthenticationBuilder builder, IConfigurationSection configurationSection, @@ -97,6 +104,9 @@ public static MicrosoftIdentityWebApiAuthenticationBuilderWithConfiguration AddM /// /// Set to true if you want to debug, or just understand the JWT bearer events. /// The authentication builder to chain. +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Microsoft.Identity.Web.MicrosoftIdentityWebApiAuthenticationBuilder.MicrosoftIdentityWebApiAuthenticationBuilder(IServiceCollection, String, Action, Action, IConfigurationSection).")] +#endif public static MicrosoftIdentityWebApiAuthenticationBuilder AddMicrosoftIdentityWebApi( this AuthenticationBuilder builder, Action configureJwtBearerOptions, diff --git a/src/Microsoft.Identity.Web/WebApiExtensions/MicrosoftIdentityWebApiAuthenticationBuilderWithConfiguration.cs b/src/Microsoft.Identity.Web/WebApiExtensions/MicrosoftIdentityWebApiAuthenticationBuilderWithConfiguration.cs index 55ec24238..f9b55d71f 100644 --- a/src/Microsoft.Identity.Web/WebApiExtensions/MicrosoftIdentityWebApiAuthenticationBuilderWithConfiguration.cs +++ b/src/Microsoft.Identity.Web/WebApiExtensions/MicrosoftIdentityWebApiAuthenticationBuilderWithConfiguration.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. using System; +using System.Diagnostics.CodeAnalysis; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -11,6 +12,9 @@ namespace Microsoft.Identity.Web /// /// Builder for web API authentication with configuration. /// +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Microsoft.Identity.Web.MicrosoftIdentityWebApiAuthenticationBuilder.MicrosoftIdentityWebApiAuthenticationBuilder(IServiceCollection, String, Action, Action, IConfigurationSection).")] +#endif public class MicrosoftIdentityWebApiAuthenticationBuilderWithConfiguration : MicrosoftIdentityWebApiAuthenticationBuilder { internal MicrosoftIdentityWebApiAuthenticationBuilderWithConfiguration( @@ -29,6 +33,9 @@ internal MicrosoftIdentityWebApiAuthenticationBuilderWithConfiguration( /// This method expects the configuration file will have a section, named "AzureAd" as default, with the necessary settings to initialize authentication options. /// /// The authentication builder to chain. +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Extensions.Configuration.ConfigurationBinder.Bind(IConfiguration, Object).")] +#endif public MicrosoftIdentityAppCallsWebApiAuthenticationBuilder EnableTokenAcquisitionToCallDownstreamApi() { return EnableTokenAcquisitionToCallDownstreamApi(options => ConfigurationSection?.Bind(options)); diff --git a/src/Microsoft.Identity.Web/WebApiExtensions/MicrosoftIdentityWebApiServiceCollectionExtensions.cs b/src/Microsoft.Identity.Web/WebApiExtensions/MicrosoftIdentityWebApiServiceCollectionExtensions.cs index 1f8c4236a..e9c75867c 100644 --- a/src/Microsoft.Identity.Web/WebApiExtensions/MicrosoftIdentityWebApiServiceCollectionExtensions.cs +++ b/src/Microsoft.Identity.Web/WebApiExtensions/MicrosoftIdentityWebApiServiceCollectionExtensions.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +using System.Diagnostics.CodeAnalysis; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.Extensions.Configuration; @@ -24,6 +25,9 @@ public static partial class MicrosoftIdentityWebApiServiceCollectionExtensions /// /// Set to true if you want to debug, or just understand the JwtBearer events. /// The authentication builder to chain extension methods. +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Microsoft.Identity.Web.MicrosoftIdentityWebApiAuthenticationBuilderExtensions.AddMicrosoftIdentityWebApi(AuthenticationBuilder, IConfiguration, String, String, Boolean).")] +#endif public static MicrosoftIdentityWebApiAuthenticationBuilderWithConfiguration AddMicrosoftIdentityWebApiAuthentication( this IServiceCollection services, IConfiguration configuration, diff --git a/src/Microsoft.Identity.Web/WebAppExtensions/MicrosoftIdentityWebAppAuthenticationBuilder.cs b/src/Microsoft.Identity.Web/WebAppExtensions/MicrosoftIdentityWebAppAuthenticationBuilder.cs index 0ed1174e8..178063089 100644 --- a/src/Microsoft.Identity.Web/WebAppExtensions/MicrosoftIdentityWebAppAuthenticationBuilder.cs +++ b/src/Microsoft.Identity.Web/WebAppExtensions/MicrosoftIdentityWebAppAuthenticationBuilder.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Security.Claims; using Microsoft.AspNetCore.Authentication.OpenIdConnect; @@ -28,6 +29,9 @@ public class MicrosoftIdentityWebAppAuthenticationBuilder : MicrosoftIdentityBas /// Action called to configure /// the Microsoft identity options. /// Optional configuration section. +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.MicrosoftIdentityBaseAuthenticationBuilder.MicrosoftIdentityBaseAuthenticationBuilder(IServiceCollection, IConfigurationSection).")] +#endif internal MicrosoftIdentityWebAppAuthenticationBuilder( IServiceCollection services, string openIdConnectScheme, @@ -48,6 +52,9 @@ internal MicrosoftIdentityWebAppAuthenticationBuilder( /// /// Initial scopes. /// The builder itself for chaining. +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.MicrosoftIdentityBaseAuthenticationBuilder.MicrosoftIdentityBaseAuthenticationBuilder(IServiceCollection, IConfigurationSection).")] +#endif public MicrosoftIdentityAppCallsWebApiAuthenticationBuilder EnableTokenAcquisitionToCallDownstreamApi( IEnumerable? initialScopes = null) { @@ -62,6 +69,9 @@ public MicrosoftIdentityAppCallsWebApiAuthenticationBuilder EnableTokenAcquisiti /// MSAL.NET confidential client application options. /// Initial scopes. /// The builder itself for chaining. +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.MicrosoftIdentityWebAppAuthenticationBuilder.WebAppCallsWebApiImplementation(IServiceCollection, IEnumerable, Action, string, Action.")] +#endif public MicrosoftIdentityAppCallsWebApiAuthenticationBuilder EnableTokenAcquisitionToCallDownstreamApi( Action? configureConfidentialClientApplicationOptions, IEnumerable? initialScopes = null) @@ -77,6 +87,9 @@ public MicrosoftIdentityAppCallsWebApiAuthenticationBuilder EnableTokenAcquisiti ConfigurationSection); } +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.ClientInfo.CreateFromJson(string).")] +#endif internal static void WebAppCallsWebApiImplementation( IServiceCollection services, IEnumerable? initialScopes, @@ -105,7 +118,7 @@ internal static void WebAppCallsWebApiImplementation( { services.AddTokenAcquisition(); - services.AddOptions(openIdConnectScheme) + _ = services.AddOptions(openIdConnectScheme) .Configure, IOptions>(( options, mergedOptionsMonitor, diff --git a/src/Microsoft.Identity.Web/WebAppExtensions/MicrosoftIdentityWebAppAuthenticationBuilderExtensions.cs b/src/Microsoft.Identity.Web/WebAppExtensions/MicrosoftIdentityWebAppAuthenticationBuilderExtensions.cs index f3932d70a..34c850d7b 100644 --- a/src/Microsoft.Identity.Web/WebAppExtensions/MicrosoftIdentityWebAppAuthenticationBuilderExtensions.cs +++ b/src/Microsoft.Identity.Web/WebAppExtensions/MicrosoftIdentityWebAppAuthenticationBuilderExtensions.cs @@ -15,6 +15,7 @@ using Microsoft.Identity.Web.Resource; using Microsoft.IdentityModel.Protocols.OpenIdConnect; using System.Linq; +using System.Diagnostics.CodeAnalysis; namespace Microsoft.Identity.Web { @@ -36,6 +37,9 @@ public static class MicrosoftIdentityWebAppAuthenticationBuilderExtensions /// Set to true if you want to debug, or just understand the OpenID Connect events. /// A display name for the authentication handler. /// The builder for chaining. +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls a trim-incompatible AddMicrosoftIdentityWebApp.")] +#endif public static MicrosoftIdentityWebAppAuthenticationBuilderWithConfiguration AddMicrosoftIdentityWebApp( this AuthenticationBuilder builder, IConfiguration configuration, @@ -76,6 +80,9 @@ public static MicrosoftIdentityWebAppAuthenticationBuilderWithConfiguration AddM /// Set to true if you want to debug, or just understand the OpenID Connect events. /// A display name for the authentication handler. /// The authentication builder for chaining. +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Extensions.Configuration.ConfigurationBinder.Bind(IConfiguration, Object).")] +#endif public static MicrosoftIdentityWebAppAuthenticationBuilderWithConfiguration AddMicrosoftIdentityWebApp( this AuthenticationBuilder builder, IConfigurationSection configurationSection, @@ -108,6 +115,9 @@ public static MicrosoftIdentityWebAppAuthenticationBuilderWithConfiguration AddM /// Set to true if you want to debug, or just understand the OpenID Connect events. /// A display name for the authentication handler. /// The authentication builder for chaining. +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Microsoft.Identity.Web.MicrosoftIdentityWebAppAuthenticationBuilderExtensions.AddMicrosoftWebAppWithoutConfiguration(AuthenticationBuilder, Action, Action, String, String, Boolean, String).")] +#endif public static MicrosoftIdentityWebAppAuthenticationBuilder AddMicrosoftIdentityWebApp( this AuthenticationBuilder builder, Action configureMicrosoftIdentityOptions, @@ -140,6 +150,9 @@ public static MicrosoftIdentityWebAppAuthenticationBuilder AddMicrosoftIdentityW /// A display name for the authentication handler. /// Configuration section. /// The authentication builder for chaining. +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.MicrosoftIdentityWebAppAuthenticationBuilderWithConfiguration.MicrosoftIdentityWebAppAuthenticationBuilderWithConfiguration(IServiceCollection, String, Action, IConfigurationSection)")] +#endif private static MicrosoftIdentityWebAppAuthenticationBuilderWithConfiguration AddMicrosoftIdentityWebAppWithConfiguration( this AuthenticationBuilder builder, Action configureMicrosoftIdentityOptions, @@ -177,6 +190,9 @@ private static MicrosoftIdentityWebAppAuthenticationBuilderWithConfiguration Add /// Set to true if you want to debug, or just understand the OpenID Connect events. /// A display name for the authentication handler. /// The authentication builder for chaining. +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.MicrosoftIdentityWebAppAuthenticationBuilder.MicrosoftIdentityWebAppAuthenticationBuilder(IServiceCollection, String, Action, IConfigurationSection)")] +#endif private static MicrosoftIdentityWebAppAuthenticationBuilder AddMicrosoftWebAppWithoutConfiguration( this AuthenticationBuilder builder, Action configureMicrosoftIdentityOptions, diff --git a/src/Microsoft.Identity.Web/WebAppExtensions/MicrosoftIdentityWebAppAuthenticationBuilderWithConfiguration.cs b/src/Microsoft.Identity.Web/WebAppExtensions/MicrosoftIdentityWebAppAuthenticationBuilderWithConfiguration.cs index 46d9d5a34..3ba3c9fd5 100644 --- a/src/Microsoft.Identity.Web/WebAppExtensions/MicrosoftIdentityWebAppAuthenticationBuilderWithConfiguration.cs +++ b/src/Microsoft.Identity.Web/WebAppExtensions/MicrosoftIdentityWebAppAuthenticationBuilderWithConfiguration.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -22,6 +23,9 @@ public class MicrosoftIdentityWebAppAuthenticationBuilderWithConfiguration : Mic /// Action called to configure /// the Microsoft identity options. /// Optional configuration section. +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Identity.Web.MicrosoftIdentityWebAppAuthenticationBuilder.MicrosoftIdentityWebAppAuthenticationBuilder(IServiceCollection, String, Action, IConfigurationSection)")] +#endif internal MicrosoftIdentityWebAppAuthenticationBuilderWithConfiguration( IServiceCollection services, string openIdConnectScheme, @@ -37,6 +41,9 @@ internal MicrosoftIdentityWebAppAuthenticationBuilderWithConfiguration( /// /// Optional initial scopes to request. /// The authentication builder for chaining. +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Calls Microsoft.Extensions.Configuration.ConfigurationBinder.Bind(IConfiguration, Object).")] +#endif public new MicrosoftIdentityAppCallsWebApiAuthenticationBuilder EnableTokenAcquisitionToCallDownstreamApi( IEnumerable? initialScopes = null) { diff --git a/src/Microsoft.Identity.Web/WebAppExtensions/MicrosoftIdentityWebAppServiceCollectionExtensions.cs b/src/Microsoft.Identity.Web/WebAppExtensions/MicrosoftIdentityWebAppServiceCollectionExtensions.cs index 0038e3969..8a1d1bb9b 100644 --- a/src/Microsoft.Identity.Web/WebAppExtensions/MicrosoftIdentityWebAppServiceCollectionExtensions.cs +++ b/src/Microsoft.Identity.Web/WebAppExtensions/MicrosoftIdentityWebAppServiceCollectionExtensions.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +using System.Diagnostics.CodeAnalysis; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Authentication.OpenIdConnect; @@ -31,6 +32,10 @@ public static partial class MicrosoftIdentityWebAppServiceCollectionExtensions /// Set to true if you want to debug, or just understand the OpenIdConnect events. /// A display name for the authentication handler. /// The authentication builder to chain extension methods. +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Microsoft.Identity.Web.MicrosoftIdentityWebAppAuthenticationBuilderExtensions.AddMicrosoftIdentityWebApp(AuthenticationBuilder, IConfiguration, String, String, String, Boolean, String).")] +#endif + public static MicrosoftIdentityWebAppAuthenticationBuilderWithConfiguration AddMicrosoftIdentityWebAppAuthentication( this IServiceCollection services, IConfiguration configuration,