diff --git a/eng/ProjectReferences.props b/eng/ProjectReferences.props index 067ba79788..092cfa3472 100644 --- a/eng/ProjectReferences.props +++ b/eng/ProjectReferences.props @@ -35,6 +35,7 @@ + diff --git a/eng/SharedFramework.Local.props b/eng/SharedFramework.Local.props index 089cea8bb5..2c605f63cd 100644 --- a/eng/SharedFramework.Local.props +++ b/eng/SharedFramework.Local.props @@ -33,6 +33,7 @@ + diff --git a/src/Http/Http.Abstractions/ref/Microsoft.AspNetCore.Http.Abstractions.netcoreapp3.0.cs b/src/Http/Http.Abstractions/ref/Microsoft.AspNetCore.Http.Abstractions.netcoreapp3.0.cs index 6a70682b1a..899be43f0c 100644 --- a/src/Http/Http.Abstractions/ref/Microsoft.AspNetCore.Http.Abstractions.netcoreapp3.0.cs +++ b/src/Http/Http.Abstractions/ref/Microsoft.AspNetCore.Http.Abstractions.netcoreapp3.0.cs @@ -1,18 +1,6 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -namespace Microsoft.AspNetCore.Authorization -{ - public partial interface IAllowAnonymous - { - } - public partial interface IAuthorizeData - { - string AuthenticationSchemes { get; set; } - string Policy { get; set; } - string Roles { get; set; } - } -} namespace Microsoft.AspNetCore.Builder { public abstract partial class EndpointBuilder diff --git a/src/Http/Metadata/ref/Microsoft.AspNetCore.Metadata.csproj b/src/Http/Metadata/ref/Microsoft.AspNetCore.Metadata.csproj new file mode 100644 index 0000000000..5bd3e643f1 --- /dev/null +++ b/src/Http/Metadata/ref/Microsoft.AspNetCore.Metadata.csproj @@ -0,0 +1,10 @@ + + + + netstandard2.0 + + + + + + diff --git a/src/Http/Metadata/ref/Microsoft.AspNetCore.Metadata.netstandard2.0.cs b/src/Http/Metadata/ref/Microsoft.AspNetCore.Metadata.netstandard2.0.cs new file mode 100644 index 0000000000..effddb3203 --- /dev/null +++ b/src/Http/Metadata/ref/Microsoft.AspNetCore.Metadata.netstandard2.0.cs @@ -0,0 +1,15 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.AspNetCore.Authorization +{ + public partial interface IAllowAnonymous + { + } + public partial interface IAuthorizeData + { + string AuthenticationSchemes { get; set; } + string Policy { get; set; } + string Roles { get; set; } + } +} diff --git a/src/Http/Http.Abstractions/src/IAllowAnonymous.cs b/src/Http/Metadata/src/IAllowAnonymous.cs similarity index 100% rename from src/Http/Http.Abstractions/src/IAllowAnonymous.cs rename to src/Http/Metadata/src/IAllowAnonymous.cs diff --git a/src/Http/Http.Abstractions/src/IAuthorizeData.cs b/src/Http/Metadata/src/IAuthorizeData.cs similarity index 100% rename from src/Http/Http.Abstractions/src/IAuthorizeData.cs rename to src/Http/Metadata/src/IAuthorizeData.cs diff --git a/src/Http/Metadata/src/Microsoft.AspNetCore.Metadata.csproj b/src/Http/Metadata/src/Microsoft.AspNetCore.Metadata.csproj new file mode 100644 index 0000000000..4c2b8fed22 --- /dev/null +++ b/src/Http/Metadata/src/Microsoft.AspNetCore.Metadata.csproj @@ -0,0 +1,12 @@ + + + + ASP.NET Core metadata. + netstandard2.0 + true + $(NoWarn);CS1591 + true + aspnetcore + + + diff --git a/src/Http/Routing/ref/Microsoft.AspNetCore.Routing.csproj b/src/Http/Routing/ref/Microsoft.AspNetCore.Routing.csproj index 4771b24dcf..a68d86a042 100644 --- a/src/Http/Routing/ref/Microsoft.AspNetCore.Routing.csproj +++ b/src/Http/Routing/ref/Microsoft.AspNetCore.Routing.csproj @@ -5,6 +5,7 @@ + diff --git a/src/Http/Routing/src/Microsoft.AspNetCore.Routing.csproj b/src/Http/Routing/src/Microsoft.AspNetCore.Routing.csproj index b78218944f..70f62b2cfe 100644 --- a/src/Http/Routing/src/Microsoft.AspNetCore.Routing.csproj +++ b/src/Http/Routing/src/Microsoft.AspNetCore.Routing.csproj @@ -26,6 +26,7 @@ Microsoft.AspNetCore.Routing.RouteCollection + diff --git a/src/Mvc/Mvc.Formatters.Json/src/Properties/AssemblyInfo.cs b/src/Mvc/Mvc.Formatters.Json/src/Properties/AssemblyInfo.cs index 95a17d6462..039f419cd4 100644 --- a/src/Mvc/Mvc.Formatters.Json/src/Properties/AssemblyInfo.cs +++ b/src/Mvc/Mvc.Formatters.Json/src/Properties/AssemblyInfo.cs @@ -5,4 +5,3 @@ using System.Runtime.CompilerServices; using Microsoft.AspNetCore.Mvc; [assembly: TypeForwardedTo(typeof(JsonResult))] - diff --git a/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.csproj b/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.csproj index edcb7281ec..e965b33d18 100644 --- a/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.csproj +++ b/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.csproj @@ -1,13 +1,11 @@ - netcoreapp3.0 + netstandard2.0 - - - - - + + + diff --git a/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.netcoreapp3.0.cs b/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.netstandard2.0.cs similarity index 84% rename from src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.netcoreapp3.0.cs rename to src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.netstandard2.0.cs index ef38eddb47..ab30a7c6d5 100644 --- a/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.netcoreapp3.0.cs +++ b/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.netstandard2.0.cs @@ -42,12 +42,6 @@ namespace Microsoft.AspNetCore.Authorization public virtual System.Threading.Tasks.Task HandleAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext context) { throw null; } protected abstract System.Threading.Tasks.Task HandleRequirementAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext context, TRequirement requirement, TResource resource); } - public partial class AuthorizationMiddleware - { - public AuthorizationMiddleware(Microsoft.AspNetCore.Http.RequestDelegate next, Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider policyProvider) { } - [System.Diagnostics.DebuggerStepThroughAttribute] - public System.Threading.Tasks.Task Invoke(Microsoft.AspNetCore.Http.HttpContext context) { throw null; } - } public partial class AuthorizationOptions { public AuthorizationOptions() { } @@ -220,50 +214,11 @@ namespace Microsoft.AspNetCore.Authorization.Infrastructure protected override System.Threading.Tasks.Task HandleRequirementAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext context, Microsoft.AspNetCore.Authorization.Infrastructure.RolesAuthorizationRequirement requirement) { throw null; } } } -namespace Microsoft.AspNetCore.Authorization.Policy -{ - public partial interface IPolicyEvaluator - { - System.Threading.Tasks.Task AuthenticateAsync(Microsoft.AspNetCore.Authorization.AuthorizationPolicy policy, Microsoft.AspNetCore.Http.HttpContext context); - System.Threading.Tasks.Task AuthorizeAsync(Microsoft.AspNetCore.Authorization.AuthorizationPolicy policy, Microsoft.AspNetCore.Authentication.AuthenticateResult authenticationResult, Microsoft.AspNetCore.Http.HttpContext context, object resource); - } - public partial class PolicyAuthorizationResult - { - internal PolicyAuthorizationResult() { } - public bool Challenged { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } } - public bool Forbidden { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } } - public bool Succeeded { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } } - public static Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult Challenge() { throw null; } - public static Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult Forbid() { throw null; } - public static Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult Success() { throw null; } - } - public partial class PolicyEvaluator : Microsoft.AspNetCore.Authorization.Policy.IPolicyEvaluator - { - public PolicyEvaluator(Microsoft.AspNetCore.Authorization.IAuthorizationService authorization) { } - [System.Diagnostics.DebuggerStepThroughAttribute] - public virtual System.Threading.Tasks.Task AuthenticateAsync(Microsoft.AspNetCore.Authorization.AuthorizationPolicy policy, Microsoft.AspNetCore.Http.HttpContext context) { throw null; } - [System.Diagnostics.DebuggerStepThroughAttribute] - public virtual System.Threading.Tasks.Task AuthorizeAsync(Microsoft.AspNetCore.Authorization.AuthorizationPolicy policy, Microsoft.AspNetCore.Authentication.AuthenticateResult authenticationResult, Microsoft.AspNetCore.Http.HttpContext context, object resource) { throw null; } - } -} -namespace Microsoft.AspNetCore.Builder -{ - public static partial class AuthorizationAppBuilderExtensions - { - public static Microsoft.AspNetCore.Builder.IApplicationBuilder UseAuthorization(this Microsoft.AspNetCore.Builder.IApplicationBuilder app) { throw null; } - } - public static partial class AuthorizationEndpointConventionBuilderExtensions - { - public static TBuilder RequireAuthorization(this TBuilder builder) where TBuilder : Microsoft.AspNetCore.Builder.IEndpointConventionBuilder { throw null; } - public static TBuilder RequireAuthorization(this TBuilder builder, params Microsoft.AspNetCore.Authorization.IAuthorizeData[] authorizeData) where TBuilder : Microsoft.AspNetCore.Builder.IEndpointConventionBuilder { throw null; } - public static TBuilder RequireAuthorization(this TBuilder builder, params string[] policyNames) where TBuilder : Microsoft.AspNetCore.Builder.IEndpointConventionBuilder { throw null; } - } -} namespace Microsoft.Extensions.DependencyInjection { public static partial class AuthorizationServiceCollectionExtensions { - public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddAuthorization(this Microsoft.Extensions.DependencyInjection.IServiceCollection services) { throw null; } - public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddAuthorization(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action configure) { throw null; } + public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddAuthorizationCore(this Microsoft.Extensions.DependencyInjection.IServiceCollection services) { throw null; } + public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddAuthorizationCore(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action configure) { throw null; } } } diff --git a/src/Security/Authorization/Core/src/AuthorizationOptions.cs b/src/Security/Authorization/Core/src/AuthorizationOptions.cs index d9121f60ba..c834441813 100644 --- a/src/Security/Authorization/Core/src/AuthorizationOptions.cs +++ b/src/Security/Authorization/Core/src/AuthorizationOptions.cs @@ -29,10 +29,10 @@ namespace Microsoft.AspNetCore.Authorization /// /// Gets or sets the fallback authorization policy used by - /// when no IAuthorizeData have been provided. As a result, the uses the fallback policy + /// when no IAuthorizeData have been provided. As a result, the AuthorizationMiddleware uses the fallback policy /// if there are no instances for a resource. If a resource has any /// then they are evaluated instead of the fallback policy. By default the fallback policy is null, and usually will have no - /// effect unless you have the middleware in your pipeline. It is not used in any way by the + /// effect unless you have the AuthorizationMiddleware in your pipeline. It is not used in any way by the /// default . /// public AuthorizationPolicy FallbackPolicy { get; set; } diff --git a/src/Security/Authorization/Core/src/AuthorizationServiceCollectionExtensions.cs b/src/Security/Authorization/Core/src/AuthorizationServiceCollectionExtensions.cs index c3b0dc580b..0f788cd5ad 100644 --- a/src/Security/Authorization/Core/src/AuthorizationServiceCollectionExtensions.cs +++ b/src/Security/Authorization/Core/src/AuthorizationServiceCollectionExtensions.cs @@ -4,7 +4,6 @@ using System; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization.Infrastructure; -using Microsoft.AspNetCore.Authorization.Policy; using Microsoft.Extensions.DependencyInjection.Extensions; namespace Microsoft.Extensions.DependencyInjection @@ -19,7 +18,7 @@ namespace Microsoft.Extensions.DependencyInjection /// /// The to add services to. /// The so that additional calls can be chained. - public static IServiceCollection AddAuthorization(this IServiceCollection services) + public static IServiceCollection AddAuthorizationCore(this IServiceCollection services) { if (services == null) { @@ -32,11 +31,6 @@ namespace Microsoft.Extensions.DependencyInjection services.TryAdd(ServiceDescriptor.Transient()); services.TryAdd(ServiceDescriptor.Transient()); services.TryAddEnumerable(ServiceDescriptor.Transient()); - services.TryAddSingleton(); - - // Policy - services.TryAdd(ServiceDescriptor.Transient()); - return services; } @@ -46,20 +40,19 @@ namespace Microsoft.Extensions.DependencyInjection /// The to add services to. /// An action delegate to configure the provided . /// The so that additional calls can be chained. - public static IServiceCollection AddAuthorization(this IServiceCollection services, Action configure) + public static IServiceCollection AddAuthorizationCore(this IServiceCollection services, Action configure) { if (services == null) { throw new ArgumentNullException(nameof(services)); } - if (configure == null) + if (configure != null) { - throw new ArgumentNullException(nameof(configure)); + services.Configure(configure); } - services.Configure(configure); - return services.AddAuthorization(); + return services.AddAuthorizationCore(); } } } diff --git a/src/Security/Authorization/Core/src/Microsoft.AspNetCore.Authorization.csproj b/src/Security/Authorization/Core/src/Microsoft.AspNetCore.Authorization.csproj index 726247c53b..ca6b8ce526 100644 --- a/src/Security/Authorization/Core/src/Microsoft.AspNetCore.Authorization.csproj +++ b/src/Security/Authorization/Core/src/Microsoft.AspNetCore.Authorization.csproj @@ -1,11 +1,11 @@ - + ASP.NET Core authorization classes. Commonly used types: Microsoft.AspNetCore.Authorization.AllowAnonymousAttribute Microsoft.AspNetCore.Authorization.AuthorizeAttribute - netcoreapp3.0 + netstandard2.0 true $(NoWarn);CS1591 true @@ -13,13 +13,7 @@ Microsoft.AspNetCore.Authorization.AuthorizeAttribute - - - - - - - + diff --git a/src/Security/Authorization/Core/src/Properties/AssemblyInfo.cs b/src/Security/Authorization/Core/src/Properties/AssemblyInfo.cs index aa5f527121..aaaa24d8c9 100644 --- a/src/Security/Authorization/Core/src/Properties/AssemblyInfo.cs +++ b/src/Security/Authorization/Core/src/Properties/AssemblyInfo.cs @@ -1,9 +1,10 @@ + // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Runtime.CompilerServices; using Microsoft.AspNetCore.Authorization; -// Microsoft.AspNetCore.Http.Abstractions +// Microsoft.AspNetCore.Metadata [assembly: TypeForwardedTo(typeof(IAuthorizeData))] [assembly: TypeForwardedTo(typeof(IAllowAnonymous))] diff --git a/src/Security/Authorization/Core/src/Properties/Resources.Designer.cs b/src/Security/Authorization/Core/src/Properties/Resources.Designer.cs index 876d0321b0..c83fa9ea5e 100644 --- a/src/Security/Authorization/Core/src/Properties/Resources.Designer.cs +++ b/src/Security/Authorization/Core/src/Properties/Resources.Designer.cs @@ -52,20 +52,6 @@ namespace Microsoft.AspNetCore.Authorization internal static string FormatException_RoleRequirementEmpty() => GetString("Exception_RoleRequirementEmpty"); - /// - /// Unable to find the required services. Please add all the required services by calling '{0}.{1}' inside the call to '{2}' in the application startup code. - /// - internal static string Exception_UnableToFindServices - { - get => GetString("Exception_UnableToFindServices"); - } - - /// - /// Unable to find the required services. Please add all the required services by calling '{0}.{1}' inside the call to '{2}' in the application startup code. - /// - internal static string FormatException_UnableToFindServices(object p0, object p1, object p2) - => string.Format(CultureInfo.CurrentCulture, GetString("Exception_UnableToFindServices"), p0, p1, p2); - private static string GetString(string name, params string[] formatterNames) { var value = _resourceManager.GetString(name); diff --git a/src/Security/Authorization/Core/src/Resources.resx b/src/Security/Authorization/Core/src/Resources.resx index ebf1328616..a36e55d6b0 100644 --- a/src/Security/Authorization/Core/src/Resources.resx +++ b/src/Security/Authorization/Core/src/Resources.resx @@ -126,7 +126,4 @@ At least one role must be specified. - - Unable to find the required services. Please add all the required services by calling '{0}.{1}' inside the call to '{2}' in the application startup code. - \ No newline at end of file diff --git a/src/Security/Authorization/Policy/ref/Microsoft.AspNetCore.Authorization.Policy.csproj b/src/Security/Authorization/Policy/ref/Microsoft.AspNetCore.Authorization.Policy.csproj index 6f81120877..2abea2d038 100644 --- a/src/Security/Authorization/Policy/ref/Microsoft.AspNetCore.Authorization.Policy.csproj +++ b/src/Security/Authorization/Policy/ref/Microsoft.AspNetCore.Authorization.Policy.csproj @@ -6,5 +6,8 @@ + + + diff --git a/src/Security/Authorization/Policy/ref/Microsoft.AspNetCore.Authorization.Policy.netcoreapp3.0.cs b/src/Security/Authorization/Policy/ref/Microsoft.AspNetCore.Authorization.Policy.netcoreapp3.0.cs index 14f716c60c..571d21a03d 100644 --- a/src/Security/Authorization/Policy/ref/Microsoft.AspNetCore.Authorization.Policy.netcoreapp3.0.cs +++ b/src/Security/Authorization/Policy/ref/Microsoft.AspNetCore.Authorization.Policy.netcoreapp3.0.cs @@ -1,11 +1,60 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +namespace Microsoft.AspNetCore.Authorization +{ + public partial class AuthorizationMiddleware + { + public AuthorizationMiddleware(Microsoft.AspNetCore.Http.RequestDelegate next, Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider policyProvider) { } + [System.Diagnostics.DebuggerStepThroughAttribute] + public System.Threading.Tasks.Task Invoke(Microsoft.AspNetCore.Http.HttpContext context) { throw null; } + } +} +namespace Microsoft.AspNetCore.Authorization.Policy +{ + public partial interface IPolicyEvaluator + { + System.Threading.Tasks.Task AuthenticateAsync(Microsoft.AspNetCore.Authorization.AuthorizationPolicy policy, Microsoft.AspNetCore.Http.HttpContext context); + System.Threading.Tasks.Task AuthorizeAsync(Microsoft.AspNetCore.Authorization.AuthorizationPolicy policy, Microsoft.AspNetCore.Authentication.AuthenticateResult authenticationResult, Microsoft.AspNetCore.Http.HttpContext context, object resource); + } + public partial class PolicyAuthorizationResult + { + internal PolicyAuthorizationResult() { } + public bool Challenged { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } } + public bool Forbidden { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } } + public bool Succeeded { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } } + public static Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult Challenge() { throw null; } + public static Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult Forbid() { throw null; } + public static Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult Success() { throw null; } + } + public partial class PolicyEvaluator : Microsoft.AspNetCore.Authorization.Policy.IPolicyEvaluator + { + public PolicyEvaluator(Microsoft.AspNetCore.Authorization.IAuthorizationService authorization) { } + [System.Diagnostics.DebuggerStepThroughAttribute] + public virtual System.Threading.Tasks.Task AuthenticateAsync(Microsoft.AspNetCore.Authorization.AuthorizationPolicy policy, Microsoft.AspNetCore.Http.HttpContext context) { throw null; } + [System.Diagnostics.DebuggerStepThroughAttribute] + public virtual System.Threading.Tasks.Task AuthorizeAsync(Microsoft.AspNetCore.Authorization.AuthorizationPolicy policy, Microsoft.AspNetCore.Authentication.AuthenticateResult authenticationResult, Microsoft.AspNetCore.Http.HttpContext context, object resource) { throw null; } + } +} +namespace Microsoft.AspNetCore.Builder +{ + public static partial class AuthorizationAppBuilderExtensions + { + public static Microsoft.AspNetCore.Builder.IApplicationBuilder UseAuthorization(this Microsoft.AspNetCore.Builder.IApplicationBuilder app) { throw null; } + } + public static partial class AuthorizationEndpointConventionBuilderExtensions + { + public static TBuilder RequireAuthorization(this TBuilder builder) where TBuilder : Microsoft.AspNetCore.Builder.IEndpointConventionBuilder { throw null; } + public static TBuilder RequireAuthorization(this TBuilder builder, params Microsoft.AspNetCore.Authorization.IAuthorizeData[] authorizeData) where TBuilder : Microsoft.AspNetCore.Builder.IEndpointConventionBuilder { throw null; } + public static TBuilder RequireAuthorization(this TBuilder builder, params string[] policyNames) where TBuilder : Microsoft.AspNetCore.Builder.IEndpointConventionBuilder { throw null; } + } +} namespace Microsoft.Extensions.DependencyInjection { public static partial class PolicyServiceCollectionExtensions { - [System.ObsoleteAttribute("AddAuthorizationPolicyEvaluator is obsolete and will be removed in a future release. Use AddAuthorization instead.")] + public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddAuthorization(this Microsoft.Extensions.DependencyInjection.IServiceCollection services) { throw null; } + public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddAuthorization(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action configure) { throw null; } public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddAuthorizationPolicyEvaluator(this Microsoft.Extensions.DependencyInjection.IServiceCollection services) { throw null; } } } diff --git a/src/Security/Authorization/Core/src/Policy/AuthorizationAppBuilderExtensions.cs b/src/Security/Authorization/Policy/src/AuthorizationAppBuilderExtensions.cs similarity index 94% rename from src/Security/Authorization/Core/src/Policy/AuthorizationAppBuilderExtensions.cs rename to src/Security/Authorization/Policy/src/AuthorizationAppBuilderExtensions.cs index a34551243b..41cfcb96fb 100644 --- a/src/Security/Authorization/Core/src/Policy/AuthorizationAppBuilderExtensions.cs +++ b/src/Security/Authorization/Policy/src/AuthorizationAppBuilderExtensions.cs @@ -34,11 +34,11 @@ namespace Microsoft.AspNetCore.Builder { // Verify that AddAuthorizationPolicy was called before calling UseAuthorization // We use the AuthorizationPolicyMarkerService to ensure all the services were added. - if (app.ApplicationServices.GetService(typeof(AuthorizationMarkerService)) == null) + if (app.ApplicationServices.GetService(typeof(AuthorizationPolicyMarkerService)) == null) { throw new InvalidOperationException(Resources.FormatException_UnableToFindServices( nameof(IServiceCollection), - nameof(AuthorizationServiceCollectionExtensions.AddAuthorization), + nameof(PolicyServiceCollectionExtensions.AddAuthorization), "ConfigureServices(...)")); } } diff --git a/src/Security/Authorization/Core/src/Policy/AuthorizationEndpointConventionBuilderExtensions.cs b/src/Security/Authorization/Policy/src/AuthorizationEndpointConventionBuilderExtensions.cs similarity index 100% rename from src/Security/Authorization/Core/src/Policy/AuthorizationEndpointConventionBuilderExtensions.cs rename to src/Security/Authorization/Policy/src/AuthorizationEndpointConventionBuilderExtensions.cs diff --git a/src/Security/Authorization/Core/src/AuthorizationMiddleware.cs b/src/Security/Authorization/Policy/src/AuthorizationMiddleware.cs similarity index 100% rename from src/Security/Authorization/Core/src/AuthorizationMiddleware.cs rename to src/Security/Authorization/Policy/src/AuthorizationMiddleware.cs diff --git a/src/Security/Authorization/Core/src/AuthorizationMarkerService.cs b/src/Security/Authorization/Policy/src/AuthorizationPolicyMarkerService.cs similarity index 81% rename from src/Security/Authorization/Core/src/AuthorizationMarkerService.cs rename to src/Security/Authorization/Policy/src/AuthorizationPolicyMarkerService.cs index 122d237e8c..9061891e43 100644 --- a/src/Security/Authorization/Core/src/AuthorizationMarkerService.cs +++ b/src/Security/Authorization/Policy/src/AuthorizationPolicyMarkerService.cs @@ -3,7 +3,7 @@ namespace Microsoft.AspNetCore.Authorization.Policy { - internal class AuthorizationMarkerService + internal class AuthorizationPolicyMarkerService { } } diff --git a/src/Security/Authorization/Core/src/Policy/IPolicyEvaluator.cs b/src/Security/Authorization/Policy/src/IPolicyEvaluator.cs similarity index 100% rename from src/Security/Authorization/Core/src/Policy/IPolicyEvaluator.cs rename to src/Security/Authorization/Policy/src/IPolicyEvaluator.cs diff --git a/src/Security/Authorization/Policy/src/Microsoft.AspNetCore.Authorization.Policy.csproj b/src/Security/Authorization/Policy/src/Microsoft.AspNetCore.Authorization.Policy.csproj index 2954d1564a..ecd83793a4 100644 --- a/src/Security/Authorization/Policy/src/Microsoft.AspNetCore.Authorization.Policy.csproj +++ b/src/Security/Authorization/Policy/src/Microsoft.AspNetCore.Authorization.Policy.csproj @@ -1,4 +1,4 @@ - + ASP.NET Core authorization policy helper classes. @@ -9,8 +9,15 @@ aspnetcore;authorization + + + + + + + diff --git a/src/Security/Authorization/Core/src/Policy/PolicyAuthorizationResult.cs b/src/Security/Authorization/Policy/src/PolicyAuthorizationResult.cs similarity index 100% rename from src/Security/Authorization/Core/src/Policy/PolicyAuthorizationResult.cs rename to src/Security/Authorization/Policy/src/PolicyAuthorizationResult.cs diff --git a/src/Security/Authorization/Core/src/Policy/PolicyEvaluator.cs b/src/Security/Authorization/Policy/src/PolicyEvaluator.cs similarity index 100% rename from src/Security/Authorization/Core/src/Policy/PolicyEvaluator.cs rename to src/Security/Authorization/Policy/src/PolicyEvaluator.cs diff --git a/src/Security/Authorization/Policy/src/PolicyServiceCollectionExtensions.cs b/src/Security/Authorization/Policy/src/PolicyServiceCollectionExtensions.cs index a4eb53ba21..d24a5a243f 100644 --- a/src/Security/Authorization/Policy/src/PolicyServiceCollectionExtensions.cs +++ b/src/Security/Authorization/Policy/src/PolicyServiceCollectionExtensions.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization.Policy; using Microsoft.Extensions.DependencyInjection.Extensions; @@ -13,11 +14,10 @@ namespace Microsoft.Extensions.DependencyInjection public static class PolicyServiceCollectionExtensions { /// - /// Adds authorization policy services to the specified . + /// Adds the authorization policy evaluator service to the specified . /// /// The to add services to. /// The so that additional calls can be chained. - [Obsolete("AddAuthorizationPolicyEvaluator is obsolete and will be removed in a future release. Use AddAuthorization instead.")] public static IServiceCollection AddAuthorizationPolicyEvaluator(this IServiceCollection services) { if (services == null) @@ -25,7 +25,34 @@ namespace Microsoft.Extensions.DependencyInjection throw new ArgumentNullException(nameof(services)); } - services.AddAuthorization(); + services.TryAddSingleton(); + services.TryAdd(ServiceDescriptor.Transient()); + return services; + } + + /// + /// Adds authorization policy services to the specified . + /// + /// The to add services to. + /// The so that additional calls can be chained. + public static IServiceCollection AddAuthorization(this IServiceCollection services) + => services.AddAuthorization(configure: null); + + /// + /// Adds authorization policy services to the specified . + /// + /// The to add services to. + /// An action delegate to configure the provided . + /// The so that additional calls can be chained. + public static IServiceCollection AddAuthorization(this IServiceCollection services, Action configure) + { + if (services == null) + { + throw new ArgumentNullException(nameof(services)); + } + + services.AddAuthorizationCore(configure); + services.AddAuthorizationPolicyEvaluator(); return services; } } diff --git a/src/Security/Authorization/Policy/src/Properties/AssemblyInfo.cs b/src/Security/Authorization/Policy/src/Properties/AssemblyInfo.cs deleted file mode 100644 index 890d26fd78..0000000000 --- a/src/Security/Authorization/Policy/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using System.Runtime.CompilerServices; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Authorization.Policy; - -// Microsoft.AspNetCore.Authorization -[assembly: TypeForwardedTo(typeof(IPolicyEvaluator))] -[assembly: TypeForwardedTo(typeof(PolicyAuthorizationResult))] -[assembly: TypeForwardedTo(typeof(PolicyEvaluator))] diff --git a/src/Security/Authorization/Policy/src/Properties/Resources.Designer.cs b/src/Security/Authorization/Policy/src/Properties/Resources.Designer.cs new file mode 100644 index 0000000000..d4e50a8631 --- /dev/null +++ b/src/Security/Authorization/Policy/src/Properties/Resources.Designer.cs @@ -0,0 +1,44 @@ +// +namespace Microsoft.AspNetCore.Authorization.Policy +{ + using System.Globalization; + using System.Reflection; + using System.Resources; + + internal static class Resources + { + private static readonly ResourceManager _resourceManager + = new ResourceManager("Microsoft.AspNetCore.Authorization.Policy.Resources", typeof(Resources).GetTypeInfo().Assembly); + + /// + /// Unable to find the required services. Please add all the required services by calling '{0}.{1}' inside the call to '{2}' in the application startup code. + /// + internal static string Exception_UnableToFindServices + { + get => GetString("Exception_UnableToFindServices"); + } + + /// + /// Unable to find the required services. Please add all the required services by calling '{0}.{1}' inside the call to '{2}' in the application startup code. + /// + internal static string FormatException_UnableToFindServices(object p0, object p1, object p2) + => string.Format(CultureInfo.CurrentCulture, GetString("Exception_UnableToFindServices"), p0, p1, p2); + + private static string GetString(string name, params string[] formatterNames) + { + var value = _resourceManager.GetString(name); + + System.Diagnostics.Debug.Assert(value != null); + + if (formatterNames != null) + { + for (var i = 0; i < formatterNames.Length; i++) + { + value = value.Replace("{" + formatterNames[i] + "}", "{" + i + "}"); + } + } + + return value; + } + } +} diff --git a/src/Security/Authorization/Policy/src/Resources.resx b/src/Security/Authorization/Policy/src/Resources.resx new file mode 100644 index 0000000000..15d6f7d53c --- /dev/null +++ b/src/Security/Authorization/Policy/src/Resources.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Unable to find the required services. Please add all the required services by calling '{0}.{1}' inside the call to '{2}' in the application startup code. + + \ No newline at end of file diff --git a/src/Security/Authorization/test/AuthorizationAppBuilderExtensionsTests.cs b/src/Security/Authorization/test/AuthorizationAppBuilderExtensionsTests.cs index 1431364b1f..aa888daf80 100644 --- a/src/Security/Authorization/test/AuthorizationAppBuilderExtensionsTests.cs +++ b/src/Security/Authorization/test/AuthorizationAppBuilderExtensionsTests.cs @@ -2,8 +2,6 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; -using System.Collections.Generic; -using System.Text; using System.Threading.Tasks; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authorization.Test.TestObjects; @@ -73,9 +71,7 @@ namespace Microsoft.AspNetCore.Authorization.Test { var services = new ServiceCollection(); -#pragma warning disable CS0618 // Type or member is obsolete - services.AddAuthorizationPolicyEvaluator(); -#pragma warning restore CS0618 // Type or member is obsolete + services.AddAuthorization(); services.AddLogging(); services.AddSingleton(authenticationService); diff --git a/src/Security/Authorization/test/AuthorizationMiddlewareTests.cs b/src/Security/Authorization/test/AuthorizationMiddlewareTests.cs index 289a9d0d07..86858f4fe1 100644 --- a/src/Security/Authorization/test/AuthorizationMiddlewareTests.cs +++ b/src/Security/Authorization/test/AuthorizationMiddlewareTests.cs @@ -2,18 +2,13 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; -using System.Collections.Generic; -using System.Linq; using System.Security.Claims; using System.Threading.Tasks; using Microsoft.AspNetCore.Authentication; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Authorization.Infrastructure; using Microsoft.AspNetCore.Authorization.Test.TestObjects; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http.Features; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Options; using Moq; using Xunit; diff --git a/src/Security/Authorization/test/DefaultAuthorizationServiceTests.cs b/src/Security/Authorization/test/DefaultAuthorizationServiceTests.cs index 1d048dc164..d0fe9a62e9 100644 --- a/src/Security/Authorization/test/DefaultAuthorizationServiceTests.cs +++ b/src/Security/Authorization/test/DefaultAuthorizationServiceTests.cs @@ -18,7 +18,7 @@ namespace Microsoft.AspNetCore.Authorization.Test private IAuthorizationService BuildAuthorizationService(Action setupServices = null) { var services = new ServiceCollection(); - services.AddAuthorization(); + services.AddAuthorizationCore(); services.AddLogging(); services.AddOptions(); setupServices?.Invoke(services); diff --git a/src/SignalR/server/Core/ref/Microsoft.AspNetCore.SignalR.Core.csproj b/src/SignalR/server/Core/ref/Microsoft.AspNetCore.SignalR.Core.csproj index c09bfa6d9a..b49f53e40d 100644 --- a/src/SignalR/server/Core/ref/Microsoft.AspNetCore.SignalR.Core.csproj +++ b/src/SignalR/server/Core/ref/Microsoft.AspNetCore.SignalR.Core.csproj @@ -5,7 +5,7 @@ - + diff --git a/src/SignalR/server/Core/src/Microsoft.AspNetCore.SignalR.Core.csproj b/src/SignalR/server/Core/src/Microsoft.AspNetCore.SignalR.Core.csproj index 03ffc0d44b..8d8194fbc7 100644 --- a/src/SignalR/server/Core/src/Microsoft.AspNetCore.SignalR.Core.csproj +++ b/src/SignalR/server/Core/src/Microsoft.AspNetCore.SignalR.Core.csproj @@ -15,7 +15,7 @@ - +