diff --git a/src/Microsoft.AspNetCore.Mvc.Core/ControllerBase.cs b/src/Microsoft.AspNetCore.Mvc.Core/ControllerBase.cs
index 5626f1ccd2..c51f809da2 100644
--- a/src/Microsoft.AspNetCore.Mvc.Core/ControllerBase.cs
+++ b/src/Microsoft.AspNetCore.Mvc.Core/ControllerBase.cs
@@ -1704,6 +1704,14 @@ namespace Microsoft.AspNetCore.Mvc
public virtual UnauthorizedResult Unauthorized()
=> new UnauthorizedResult();
+ ///
+ /// Creates an that produces a response.
+ ///
+ /// The created for the response.
+ [NonAction]
+ public virtual UnauthorizedObjectResult Unauthorized(object value)
+ => new UnauthorizedObjectResult(value);
+
///
/// Creates an that produces a response.
///
diff --git a/src/Microsoft.AspNetCore.Mvc.Core/UnauthorizedObjectResult.cs b/src/Microsoft.AspNetCore.Mvc.Core/UnauthorizedObjectResult.cs
new file mode 100644
index 0000000000..ebab2df60f
--- /dev/null
+++ b/src/Microsoft.AspNetCore.Mvc.Core/UnauthorizedObjectResult.cs
@@ -0,0 +1,25 @@
+// 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 Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc.Infrastructure;
+
+namespace Microsoft.AspNetCore.Mvc
+{
+ ///
+ /// An that when executed will produce a Unauthorized (401) response.
+ ///
+ [DefaultStatusCode(DefaultStatusCode)]
+ public class UnauthorizedObjectResult : ObjectResult
+ {
+ private const int DefaultStatusCode = StatusCodes.Status401Unauthorized;
+
+ ///
+ /// Creates a new instance.
+ ///
+ public UnauthorizedObjectResult(object value) : base(value)
+ {
+ StatusCode = DefaultStatusCode;
+ }
+ }
+}
\ No newline at end of file