diff --git a/src/Security/Authorization/Policy/src/AuthorizationEndpointConventionBuilderExtensions.cs b/src/Security/Authorization/Policy/src/AuthorizationEndpointConventionBuilderExtensions.cs
index 82331a3217..316c45012b 100644
--- a/src/Security/Authorization/Policy/src/AuthorizationEndpointConventionBuilderExtensions.cs
+++ b/src/Security/Authorization/Policy/src/AuthorizationEndpointConventionBuilderExtensions.cs
@@ -4,12 +4,20 @@
using System;
using System.Linq;
using Microsoft.AspNetCore.Authorization;
-using Microsoft.AspNetCore.Routing;
namespace Microsoft.AspNetCore.Builder
{
+ ///
+ /// Authorization extension methods for .
+ ///
public static class AuthorizationEndpointConventionBuilderExtensions
{
+ ///
+ /// Adds authorization policies with the specified to the endpoint(s).
+ ///
+ /// The endpoint convention builder.
+ /// A collection of .
+ /// The original convention builder parameter.
public static IEndpointConventionBuilder RequireAuthorization(this IEndpointConventionBuilder builder, params IAuthorizeData[] authorizeData)
{
if (builder == null)
@@ -32,6 +40,12 @@ namespace Microsoft.AspNetCore.Builder
return builder;
}
+ ///
+ /// Adds authorization policies with the specified names to the endpoint(s).
+ ///
+ /// The endpoint convention builder.
+ /// A collection of policy names.
+ /// The original convention builder parameter.
public static IEndpointConventionBuilder RequireAuthorization(this IEndpointConventionBuilder builder, params string[] policyNames)
{
if (builder == null)
@@ -46,5 +60,20 @@ namespace Microsoft.AspNetCore.Builder
return builder.RequireAuthorization(policyNames.Select(n => new AuthorizeAttribute(n)).ToArray());
}
+
+ ///
+ /// Adds the default authorization policy to the endpoint(s).
+ ///
+ /// The endpoint convention builder.
+ /// The original convention builder parameter.
+ public static IEndpointConventionBuilder RequireAuthorization(this IEndpointConventionBuilder builder)
+ {
+ if (builder == null)
+ {
+ throw new ArgumentNullException(nameof(builder));
+ }
+
+ return builder.RequireAuthorization(new AuthorizeAttribute());
+ }
}
}
diff --git a/src/Security/Authorization/test/AuthorizationEndpointConventionBuilderExtensionsTests.cs b/src/Security/Authorization/test/AuthorizationEndpointConventionBuilderExtensionsTests.cs
index 94d8a71d45..7a01f88ae6 100644
--- a/src/Security/Authorization/test/AuthorizationEndpointConventionBuilderExtensionsTests.cs
+++ b/src/Security/Authorization/test/AuthorizationEndpointConventionBuilderExtensionsTests.cs
@@ -47,7 +47,27 @@ namespace Microsoft.AspNetCore.Authorization.Test
var endpointModel = new RouteEndpointBuilder((context) => Task.CompletedTask, RoutePatternFactory.Parse("/"), 0);
convention(endpointModel);
- Assert.Equal("policy", Assert.IsAssignableFrom(Assert.Single(endpointModel.Metadata)).Policy);
+ var authMetadata = Assert.IsAssignableFrom(Assert.Single(endpointModel.Metadata));
+ Assert.Equal("policy", authMetadata.Policy);
+ }
+
+ [Fact]
+ public void RequireAuthorization_Default()
+ {
+ // Arrange
+ var builder = new TestEndpointConventionBuilder();
+
+ // Act
+ builder.RequireAuthorization();
+
+ // Assert
+ var convention = Assert.Single(builder.Conventions);
+
+ var endpointModel = new RouteEndpointBuilder((context) => Task.CompletedTask, RoutePatternFactory.Parse("/"), 0);
+ convention(endpointModel);
+
+ var authMetadata = Assert.IsAssignableFrom(Assert.Single(endpointModel.Metadata));
+ Assert.Null(authMetadata.Policy);
}
private class TestEndpointConventionBuilder : IEndpointConventionBuilder