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 @@
-
+