From f3b370c1ac986312db5824b1735c9bb3ee3117c4 Mon Sep 17 00:00:00 2001 From: Pranav K Date: Thu, 18 Jun 2020 16:43:35 -0700 Subject: [PATCH] Annotate Authorization.Core, Authorization.Policy with nullable (#22990) Contributes to https://github.com/dotnet/aspnetcore/issues/5680 --- eng/targets/CSharp.Common.targets | 15 ++++--- .../Microsoft.AspNetCore.Authorization.csproj | 1 + ...oft.AspNetCore.Authorization.netcoreapp.cs | 44 +++++++++---------- ...AspNetCore.Authorization.netstandard2.0.cs | 44 +++++++++---------- .../Core/src/AuthorizationFailure.cs | 4 +- .../Core/src/AuthorizationHandlerContext.cs | 6 +-- .../Core/src/AuthorizationOptions.cs | 13 ++++-- .../Core/src/AuthorizationPolicy.cs | 4 +- .../Core/src/AuthorizationResult.cs | 3 +- ...uthorizationServiceCollectionExtensions.cs | 6 +-- .../src/AuthorizationServiceExtensions.cs | 4 +- .../Core/src/AuthorizeAttribute.cs | 6 +-- .../src/ClaimsAuthorizationRequirement.cs | 4 +- ...faultAuthorizationHandlerContextFactory.cs | 2 +- .../src/DefaultAuthorizationPolicyProvider.cs | 29 ++++++------ .../Core/src/DefaultAuthorizationService.cs | 6 +-- .../IAuthorizationHandlerContextFactory.cs | 2 +- .../Core/src/IAuthorizationPolicyProvider.cs | 4 +- .../Core/src/IAuthorizationService.cs | 6 +-- .../Core/src/LoggingExtensions.cs | 4 +- .../Microsoft.AspNetCore.Authorization.csproj | 1 + .../src/OperationAuthorizationRequirement.cs | 2 +- ...oft.AspNetCore.Authorization.Policy.csproj | 1 + ...NetCore.Authorization.Policy.netcoreapp.cs | 8 ++-- .../Policy/src/IPolicyEvaluator.cs | 2 +- ...oft.AspNetCore.Authorization.Policy.csproj | 1 + .../Policy/src/PolicyAuthorizationResult.cs | 4 +- .../Policy/src/PolicyEvaluator.cs | 4 +- .../src/PolicyServiceCollectionExtensions.cs | 11 ++++- src/Shared/SecurityHelper/SecurityHelper.cs | 5 ++- 30 files changed, 132 insertions(+), 114 deletions(-) diff --git a/eng/targets/CSharp.Common.targets b/eng/targets/CSharp.Common.targets index d4bb7c6ce5..8708182c4c 100644 --- a/eng/targets/CSharp.Common.targets +++ b/eng/targets/CSharp.Common.targets @@ -35,13 +35,14 @@ The code block that follows sets it up so projects in this repo that target ns2.0 or netfx can compile when Nullable is configured. Based on https://github.com/dotnet/runtime/blob/93b6c449d4f31ddd7d573d1d3769e681d5ebceb9/src/libraries/Directory.Build.targets#L215-L222 --> - - - $(DefineConstants),INTERNAL_NULLABLE_ATTRIBUTES - - - - + + + $(DefineConstants),INTERNAL_NULLABLE_ATTRIBUTES + $(NoWarn);nullable + + + + diff --git a/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.csproj b/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.csproj index b4543827da..42f13e8fab 100644 --- a/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.csproj +++ b/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.csproj @@ -3,6 +3,7 @@ netstandard2.0;$(DefaultNetCoreTargetFramework) $(DefaultNetCoreTargetFramework) + annotations diff --git a/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.netcoreapp.cs b/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.netcoreapp.cs index b3141c4979..febefde6c8 100644 --- a/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.netcoreapp.cs +++ b/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.netcoreapp.cs @@ -18,12 +18,12 @@ namespace Microsoft.AspNetCore.Authorization } public partial class AuthorizationHandlerContext { - public AuthorizationHandlerContext(System.Collections.Generic.IEnumerable requirements, System.Security.Claims.ClaimsPrincipal user, object resource) { } + public AuthorizationHandlerContext(System.Collections.Generic.IEnumerable requirements, System.Security.Claims.ClaimsPrincipal user, object? resource) { } public virtual bool HasFailed { get { throw null; } } public virtual bool HasSucceeded { get { throw null; } } public virtual System.Collections.Generic.IEnumerable PendingRequirements { get { throw null; } } public virtual System.Collections.Generic.IEnumerable Requirements { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } - public virtual object Resource { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } + public virtual object? Resource { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } public virtual System.Security.Claims.ClaimsPrincipal User { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } public virtual void Fail() { } public virtual void Succeed(Microsoft.AspNetCore.Authorization.IAuthorizationRequirement requirement) { } @@ -46,11 +46,11 @@ namespace Microsoft.AspNetCore.Authorization { public AuthorizationOptions() { } public Microsoft.AspNetCore.Authorization.AuthorizationPolicy DefaultPolicy { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public Microsoft.AspNetCore.Authorization.AuthorizationPolicy FallbackPolicy { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public Microsoft.AspNetCore.Authorization.AuthorizationPolicy? FallbackPolicy { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public bool InvokeHandlersAfterFailure { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public void AddPolicy(string name, Microsoft.AspNetCore.Authorization.AuthorizationPolicy policy) { } public void AddPolicy(string name, System.Action configurePolicy) { } - public Microsoft.AspNetCore.Authorization.AuthorizationPolicy GetPolicy(string name) { throw null; } + public Microsoft.AspNetCore.Authorization.AuthorizationPolicy? GetPolicy(string name) { throw null; } } public partial class AuthorizationPolicy { @@ -60,7 +60,7 @@ namespace Microsoft.AspNetCore.Authorization public static Microsoft.AspNetCore.Authorization.AuthorizationPolicy Combine(params Microsoft.AspNetCore.Authorization.AuthorizationPolicy[] policies) { throw null; } public static Microsoft.AspNetCore.Authorization.AuthorizationPolicy Combine(System.Collections.Generic.IEnumerable policies) { throw null; } [System.Diagnostics.DebuggerStepThroughAttribute] - public static System.Threading.Tasks.Task CombineAsync(Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider policyProvider, System.Collections.Generic.IEnumerable authorizeData) { throw null; } + public static System.Threading.Tasks.Task CombineAsync(Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider policyProvider, System.Collections.Generic.IEnumerable authorizeData) { throw null; } } public partial class AuthorizationPolicyBuilder { @@ -85,7 +85,7 @@ namespace Microsoft.AspNetCore.Authorization public partial class AuthorizationResult { internal AuthorizationResult() { } - public Microsoft.AspNetCore.Authorization.AuthorizationFailure Failure { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } + public Microsoft.AspNetCore.Authorization.AuthorizationFailure? Failure { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } public bool Succeeded { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } public static Microsoft.AspNetCore.Authorization.AuthorizationResult Failed() { throw null; } public static Microsoft.AspNetCore.Authorization.AuthorizationResult Failed(Microsoft.AspNetCore.Authorization.AuthorizationFailure failure) { throw null; } @@ -94,7 +94,7 @@ namespace Microsoft.AspNetCore.Authorization public static partial class AuthorizationServiceExtensions { public static System.Threading.Tasks.Task AuthorizeAsync(this Microsoft.AspNetCore.Authorization.IAuthorizationService service, System.Security.Claims.ClaimsPrincipal user, Microsoft.AspNetCore.Authorization.AuthorizationPolicy policy) { throw null; } - public static System.Threading.Tasks.Task AuthorizeAsync(this Microsoft.AspNetCore.Authorization.IAuthorizationService service, System.Security.Claims.ClaimsPrincipal user, object resource, Microsoft.AspNetCore.Authorization.AuthorizationPolicy policy) { throw null; } + public static System.Threading.Tasks.Task AuthorizeAsync(this Microsoft.AspNetCore.Authorization.IAuthorizationService service, System.Security.Claims.ClaimsPrincipal user, object? resource, Microsoft.AspNetCore.Authorization.AuthorizationPolicy policy) { throw null; } public static System.Threading.Tasks.Task AuthorizeAsync(this Microsoft.AspNetCore.Authorization.IAuthorizationService service, System.Security.Claims.ClaimsPrincipal user, object resource, Microsoft.AspNetCore.Authorization.IAuthorizationRequirement requirement) { throw null; } public static System.Threading.Tasks.Task AuthorizeAsync(this Microsoft.AspNetCore.Authorization.IAuthorizationService service, System.Security.Claims.ClaimsPrincipal user, string policyName) { throw null; } } @@ -103,9 +103,9 @@ namespace Microsoft.AspNetCore.Authorization { public AuthorizeAttribute() { } public AuthorizeAttribute(string policy) { } - public string AuthenticationSchemes { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public string Policy { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public string Roles { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public string? AuthenticationSchemes { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public string? Policy { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public string? Roles { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } } public partial class DefaultAuthorizationEvaluator : Microsoft.AspNetCore.Authorization.IAuthorizationEvaluator { @@ -115,7 +115,7 @@ namespace Microsoft.AspNetCore.Authorization public partial class DefaultAuthorizationHandlerContextFactory : Microsoft.AspNetCore.Authorization.IAuthorizationHandlerContextFactory { public DefaultAuthorizationHandlerContextFactory() { } - public virtual Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext CreateContext(System.Collections.Generic.IEnumerable requirements, System.Security.Claims.ClaimsPrincipal user, object resource) { throw null; } + public virtual Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext CreateContext(System.Collections.Generic.IEnumerable requirements, System.Security.Claims.ClaimsPrincipal user, object? resource) { throw null; } } public partial class DefaultAuthorizationHandlerProvider : Microsoft.AspNetCore.Authorization.IAuthorizationHandlerProvider { @@ -126,16 +126,16 @@ namespace Microsoft.AspNetCore.Authorization { public DefaultAuthorizationPolicyProvider(Microsoft.Extensions.Options.IOptions options) { } public System.Threading.Tasks.Task GetDefaultPolicyAsync() { throw null; } - public System.Threading.Tasks.Task GetFallbackPolicyAsync() { throw null; } - public virtual System.Threading.Tasks.Task GetPolicyAsync(string policyName) { throw null; } + public System.Threading.Tasks.Task GetFallbackPolicyAsync() { throw null; } + public virtual System.Threading.Tasks.Task GetPolicyAsync(string policyName) { throw null; } } public partial class DefaultAuthorizationService : Microsoft.AspNetCore.Authorization.IAuthorizationService { public DefaultAuthorizationService(Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider policyProvider, Microsoft.AspNetCore.Authorization.IAuthorizationHandlerProvider handlers, Microsoft.Extensions.Logging.ILogger logger, Microsoft.AspNetCore.Authorization.IAuthorizationHandlerContextFactory contextFactory, Microsoft.AspNetCore.Authorization.IAuthorizationEvaluator evaluator, Microsoft.Extensions.Options.IOptions options) { } [System.Diagnostics.DebuggerStepThroughAttribute] - public System.Threading.Tasks.Task AuthorizeAsync(System.Security.Claims.ClaimsPrincipal user, object resource, System.Collections.Generic.IEnumerable requirements) { throw null; } + public System.Threading.Tasks.Task AuthorizeAsync(System.Security.Claims.ClaimsPrincipal user, object? resource, System.Collections.Generic.IEnumerable requirements) { throw null; } [System.Diagnostics.DebuggerStepThroughAttribute] - public System.Threading.Tasks.Task AuthorizeAsync(System.Security.Claims.ClaimsPrincipal user, object resource, string policyName) { throw null; } + public System.Threading.Tasks.Task AuthorizeAsync(System.Security.Claims.ClaimsPrincipal user, object? resource, string policyName) { throw null; } } public partial interface IAuthorizationEvaluator { @@ -147,7 +147,7 @@ namespace Microsoft.AspNetCore.Authorization } public partial interface IAuthorizationHandlerContextFactory { - Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext CreateContext(System.Collections.Generic.IEnumerable requirements, System.Security.Claims.ClaimsPrincipal user, object resource); + Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext CreateContext(System.Collections.Generic.IEnumerable requirements, System.Security.Claims.ClaimsPrincipal user, object? resource); } public partial interface IAuthorizationHandlerProvider { @@ -156,16 +156,16 @@ namespace Microsoft.AspNetCore.Authorization public partial interface IAuthorizationPolicyProvider { System.Threading.Tasks.Task GetDefaultPolicyAsync(); - System.Threading.Tasks.Task GetFallbackPolicyAsync(); - System.Threading.Tasks.Task GetPolicyAsync(string policyName); + System.Threading.Tasks.Task GetFallbackPolicyAsync(); + System.Threading.Tasks.Task GetPolicyAsync(string policyName); } public partial interface IAuthorizationRequirement { } public partial interface IAuthorizationService { - System.Threading.Tasks.Task AuthorizeAsync(System.Security.Claims.ClaimsPrincipal user, object resource, System.Collections.Generic.IEnumerable requirements); - System.Threading.Tasks.Task AuthorizeAsync(System.Security.Claims.ClaimsPrincipal user, object resource, string policyName); + System.Threading.Tasks.Task AuthorizeAsync(System.Security.Claims.ClaimsPrincipal user, object? resource, System.Collections.Generic.IEnumerable requirements); + System.Threading.Tasks.Task AuthorizeAsync(System.Security.Claims.ClaimsPrincipal user, object? resource, string policyName); } } namespace Microsoft.AspNetCore.Authorization.Infrastructure @@ -181,8 +181,8 @@ namespace Microsoft.AspNetCore.Authorization.Infrastructure } public partial class ClaimsAuthorizationRequirement : Microsoft.AspNetCore.Authorization.AuthorizationHandler, Microsoft.AspNetCore.Authorization.IAuthorizationRequirement { - public ClaimsAuthorizationRequirement(string claimType, System.Collections.Generic.IEnumerable allowedValues) { } - public System.Collections.Generic.IEnumerable AllowedValues { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } + public ClaimsAuthorizationRequirement(string claimType, System.Collections.Generic.IEnumerable? allowedValues) { } + public System.Collections.Generic.IEnumerable? AllowedValues { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } public string ClaimType { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } protected override System.Threading.Tasks.Task HandleRequirementAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext context, Microsoft.AspNetCore.Authorization.Infrastructure.ClaimsAuthorizationRequirement requirement) { throw null; } public override string ToString() { throw null; } diff --git a/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.netstandard2.0.cs b/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.netstandard2.0.cs index b3141c4979..febefde6c8 100644 --- a/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.netstandard2.0.cs +++ b/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.netstandard2.0.cs @@ -18,12 +18,12 @@ namespace Microsoft.AspNetCore.Authorization } public partial class AuthorizationHandlerContext { - public AuthorizationHandlerContext(System.Collections.Generic.IEnumerable requirements, System.Security.Claims.ClaimsPrincipal user, object resource) { } + public AuthorizationHandlerContext(System.Collections.Generic.IEnumerable requirements, System.Security.Claims.ClaimsPrincipal user, object? resource) { } public virtual bool HasFailed { get { throw null; } } public virtual bool HasSucceeded { get { throw null; } } public virtual System.Collections.Generic.IEnumerable PendingRequirements { get { throw null; } } public virtual System.Collections.Generic.IEnumerable Requirements { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } - public virtual object Resource { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } + public virtual object? Resource { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } public virtual System.Security.Claims.ClaimsPrincipal User { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } public virtual void Fail() { } public virtual void Succeed(Microsoft.AspNetCore.Authorization.IAuthorizationRequirement requirement) { } @@ -46,11 +46,11 @@ namespace Microsoft.AspNetCore.Authorization { public AuthorizationOptions() { } public Microsoft.AspNetCore.Authorization.AuthorizationPolicy DefaultPolicy { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public Microsoft.AspNetCore.Authorization.AuthorizationPolicy FallbackPolicy { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public Microsoft.AspNetCore.Authorization.AuthorizationPolicy? FallbackPolicy { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public bool InvokeHandlersAfterFailure { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public void AddPolicy(string name, Microsoft.AspNetCore.Authorization.AuthorizationPolicy policy) { } public void AddPolicy(string name, System.Action configurePolicy) { } - public Microsoft.AspNetCore.Authorization.AuthorizationPolicy GetPolicy(string name) { throw null; } + public Microsoft.AspNetCore.Authorization.AuthorizationPolicy? GetPolicy(string name) { throw null; } } public partial class AuthorizationPolicy { @@ -60,7 +60,7 @@ namespace Microsoft.AspNetCore.Authorization public static Microsoft.AspNetCore.Authorization.AuthorizationPolicy Combine(params Microsoft.AspNetCore.Authorization.AuthorizationPolicy[] policies) { throw null; } public static Microsoft.AspNetCore.Authorization.AuthorizationPolicy Combine(System.Collections.Generic.IEnumerable policies) { throw null; } [System.Diagnostics.DebuggerStepThroughAttribute] - public static System.Threading.Tasks.Task CombineAsync(Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider policyProvider, System.Collections.Generic.IEnumerable authorizeData) { throw null; } + public static System.Threading.Tasks.Task CombineAsync(Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider policyProvider, System.Collections.Generic.IEnumerable authorizeData) { throw null; } } public partial class AuthorizationPolicyBuilder { @@ -85,7 +85,7 @@ namespace Microsoft.AspNetCore.Authorization public partial class AuthorizationResult { internal AuthorizationResult() { } - public Microsoft.AspNetCore.Authorization.AuthorizationFailure Failure { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } + public Microsoft.AspNetCore.Authorization.AuthorizationFailure? Failure { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } public bool Succeeded { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } public static Microsoft.AspNetCore.Authorization.AuthorizationResult Failed() { throw null; } public static Microsoft.AspNetCore.Authorization.AuthorizationResult Failed(Microsoft.AspNetCore.Authorization.AuthorizationFailure failure) { throw null; } @@ -94,7 +94,7 @@ namespace Microsoft.AspNetCore.Authorization public static partial class AuthorizationServiceExtensions { public static System.Threading.Tasks.Task AuthorizeAsync(this Microsoft.AspNetCore.Authorization.IAuthorizationService service, System.Security.Claims.ClaimsPrincipal user, Microsoft.AspNetCore.Authorization.AuthorizationPolicy policy) { throw null; } - public static System.Threading.Tasks.Task AuthorizeAsync(this Microsoft.AspNetCore.Authorization.IAuthorizationService service, System.Security.Claims.ClaimsPrincipal user, object resource, Microsoft.AspNetCore.Authorization.AuthorizationPolicy policy) { throw null; } + public static System.Threading.Tasks.Task AuthorizeAsync(this Microsoft.AspNetCore.Authorization.IAuthorizationService service, System.Security.Claims.ClaimsPrincipal user, object? resource, Microsoft.AspNetCore.Authorization.AuthorizationPolicy policy) { throw null; } public static System.Threading.Tasks.Task AuthorizeAsync(this Microsoft.AspNetCore.Authorization.IAuthorizationService service, System.Security.Claims.ClaimsPrincipal user, object resource, Microsoft.AspNetCore.Authorization.IAuthorizationRequirement requirement) { throw null; } public static System.Threading.Tasks.Task AuthorizeAsync(this Microsoft.AspNetCore.Authorization.IAuthorizationService service, System.Security.Claims.ClaimsPrincipal user, string policyName) { throw null; } } @@ -103,9 +103,9 @@ namespace Microsoft.AspNetCore.Authorization { public AuthorizeAttribute() { } public AuthorizeAttribute(string policy) { } - public string AuthenticationSchemes { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public string Policy { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public string Roles { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public string? AuthenticationSchemes { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public string? Policy { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public string? Roles { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } } public partial class DefaultAuthorizationEvaluator : Microsoft.AspNetCore.Authorization.IAuthorizationEvaluator { @@ -115,7 +115,7 @@ namespace Microsoft.AspNetCore.Authorization public partial class DefaultAuthorizationHandlerContextFactory : Microsoft.AspNetCore.Authorization.IAuthorizationHandlerContextFactory { public DefaultAuthorizationHandlerContextFactory() { } - public virtual Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext CreateContext(System.Collections.Generic.IEnumerable requirements, System.Security.Claims.ClaimsPrincipal user, object resource) { throw null; } + public virtual Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext CreateContext(System.Collections.Generic.IEnumerable requirements, System.Security.Claims.ClaimsPrincipal user, object? resource) { throw null; } } public partial class DefaultAuthorizationHandlerProvider : Microsoft.AspNetCore.Authorization.IAuthorizationHandlerProvider { @@ -126,16 +126,16 @@ namespace Microsoft.AspNetCore.Authorization { public DefaultAuthorizationPolicyProvider(Microsoft.Extensions.Options.IOptions options) { } public System.Threading.Tasks.Task GetDefaultPolicyAsync() { throw null; } - public System.Threading.Tasks.Task GetFallbackPolicyAsync() { throw null; } - public virtual System.Threading.Tasks.Task GetPolicyAsync(string policyName) { throw null; } + public System.Threading.Tasks.Task GetFallbackPolicyAsync() { throw null; } + public virtual System.Threading.Tasks.Task GetPolicyAsync(string policyName) { throw null; } } public partial class DefaultAuthorizationService : Microsoft.AspNetCore.Authorization.IAuthorizationService { public DefaultAuthorizationService(Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider policyProvider, Microsoft.AspNetCore.Authorization.IAuthorizationHandlerProvider handlers, Microsoft.Extensions.Logging.ILogger logger, Microsoft.AspNetCore.Authorization.IAuthorizationHandlerContextFactory contextFactory, Microsoft.AspNetCore.Authorization.IAuthorizationEvaluator evaluator, Microsoft.Extensions.Options.IOptions options) { } [System.Diagnostics.DebuggerStepThroughAttribute] - public System.Threading.Tasks.Task AuthorizeAsync(System.Security.Claims.ClaimsPrincipal user, object resource, System.Collections.Generic.IEnumerable requirements) { throw null; } + public System.Threading.Tasks.Task AuthorizeAsync(System.Security.Claims.ClaimsPrincipal user, object? resource, System.Collections.Generic.IEnumerable requirements) { throw null; } [System.Diagnostics.DebuggerStepThroughAttribute] - public System.Threading.Tasks.Task AuthorizeAsync(System.Security.Claims.ClaimsPrincipal user, object resource, string policyName) { throw null; } + public System.Threading.Tasks.Task AuthorizeAsync(System.Security.Claims.ClaimsPrincipal user, object? resource, string policyName) { throw null; } } public partial interface IAuthorizationEvaluator { @@ -147,7 +147,7 @@ namespace Microsoft.AspNetCore.Authorization } public partial interface IAuthorizationHandlerContextFactory { - Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext CreateContext(System.Collections.Generic.IEnumerable requirements, System.Security.Claims.ClaimsPrincipal user, object resource); + Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext CreateContext(System.Collections.Generic.IEnumerable requirements, System.Security.Claims.ClaimsPrincipal user, object? resource); } public partial interface IAuthorizationHandlerProvider { @@ -156,16 +156,16 @@ namespace Microsoft.AspNetCore.Authorization public partial interface IAuthorizationPolicyProvider { System.Threading.Tasks.Task GetDefaultPolicyAsync(); - System.Threading.Tasks.Task GetFallbackPolicyAsync(); - System.Threading.Tasks.Task GetPolicyAsync(string policyName); + System.Threading.Tasks.Task GetFallbackPolicyAsync(); + System.Threading.Tasks.Task GetPolicyAsync(string policyName); } public partial interface IAuthorizationRequirement { } public partial interface IAuthorizationService { - System.Threading.Tasks.Task AuthorizeAsync(System.Security.Claims.ClaimsPrincipal user, object resource, System.Collections.Generic.IEnumerable requirements); - System.Threading.Tasks.Task AuthorizeAsync(System.Security.Claims.ClaimsPrincipal user, object resource, string policyName); + System.Threading.Tasks.Task AuthorizeAsync(System.Security.Claims.ClaimsPrincipal user, object? resource, System.Collections.Generic.IEnumerable requirements); + System.Threading.Tasks.Task AuthorizeAsync(System.Security.Claims.ClaimsPrincipal user, object? resource, string policyName); } } namespace Microsoft.AspNetCore.Authorization.Infrastructure @@ -181,8 +181,8 @@ namespace Microsoft.AspNetCore.Authorization.Infrastructure } public partial class ClaimsAuthorizationRequirement : Microsoft.AspNetCore.Authorization.AuthorizationHandler, Microsoft.AspNetCore.Authorization.IAuthorizationRequirement { - public ClaimsAuthorizationRequirement(string claimType, System.Collections.Generic.IEnumerable allowedValues) { } - public System.Collections.Generic.IEnumerable AllowedValues { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } + public ClaimsAuthorizationRequirement(string claimType, System.Collections.Generic.IEnumerable? allowedValues) { } + public System.Collections.Generic.IEnumerable? AllowedValues { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } public string ClaimType { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } protected override System.Threading.Tasks.Task HandleRequirementAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext context, Microsoft.AspNetCore.Authorization.Infrastructure.ClaimsAuthorizationRequirement requirement) { throw null; } public override string ToString() { throw null; } diff --git a/src/Security/Authorization/Core/src/AuthorizationFailure.cs b/src/Security/Authorization/Core/src/AuthorizationFailure.cs index 89956c9aa0..81ae7dcc62 100644 --- a/src/Security/Authorization/Core/src/AuthorizationFailure.cs +++ b/src/Security/Authorization/Core/src/AuthorizationFailure.cs @@ -1,6 +1,7 @@ // 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; using System.Collections.Generic; using System.Security.Claims; @@ -21,7 +22,7 @@ namespace Microsoft.AspNetCore.Authorization /// /// Failure was due to these requirements not being met via . /// - public IEnumerable FailedRequirements { get; private set; } + public IEnumerable FailedRequirements { get; private set; } = Array.Empty(); /// /// Return a failure due to being called. @@ -31,7 +32,6 @@ namespace Microsoft.AspNetCore.Authorization => new AuthorizationFailure { FailCalled = true, - FailedRequirements = new IAuthorizationRequirement[0] }; /// diff --git a/src/Security/Authorization/Core/src/AuthorizationHandlerContext.cs b/src/Security/Authorization/Core/src/AuthorizationHandlerContext.cs index b6378e4073..99d1951a77 100644 --- a/src/Security/Authorization/Core/src/AuthorizationHandlerContext.cs +++ b/src/Security/Authorization/Core/src/AuthorizationHandlerContext.cs @@ -26,7 +26,7 @@ namespace Microsoft.AspNetCore.Authorization public AuthorizationHandlerContext( IEnumerable requirements, ClaimsPrincipal user, - object resource) + object? resource) { if (requirements == null) { @@ -52,7 +52,7 @@ namespace Microsoft.AspNetCore.Authorization /// /// The optional resource to evaluate the against. /// - public virtual object Resource { get; } + public virtual object? Resource { get; } /// /// Gets the requirements that have not yet been marked as succeeded. @@ -95,4 +95,4 @@ namespace Microsoft.AspNetCore.Authorization _pendingRequirements.Remove(requirement); } } -} \ No newline at end of file +} diff --git a/src/Security/Authorization/Core/src/AuthorizationOptions.cs b/src/Security/Authorization/Core/src/AuthorizationOptions.cs index c834441813..6d439558ca 100644 --- a/src/Security/Authorization/Core/src/AuthorizationOptions.cs +++ b/src/Security/Authorization/Core/src/AuthorizationOptions.cs @@ -11,7 +11,7 @@ namespace Microsoft.AspNetCore.Authorization /// public class AuthorizationOptions { - private IDictionary PolicyMap { get; } = new Dictionary(StringComparer.OrdinalIgnoreCase); + private Dictionary PolicyMap { get; } = new Dictionary(StringComparer.OrdinalIgnoreCase); /// /// Determines whether authentication handlers should be invoked after a failure. @@ -35,7 +35,7 @@ namespace Microsoft.AspNetCore.Authorization /// effect unless you have the AuthorizationMiddleware in your pipeline. It is not used in any way by the /// default . /// - public AuthorizationPolicy FallbackPolicy { get; set; } + public AuthorizationPolicy? FallbackPolicy { get; set; } /// /// Add an authorization policy with the provided name. @@ -84,14 +84,19 @@ namespace Microsoft.AspNetCore.Authorization /// /// The name of the policy to return. /// The policy for the specified name, or null if a policy with the name does not exist. - public AuthorizationPolicy GetPolicy(string name) + public AuthorizationPolicy? GetPolicy(string name) { if (name == null) { throw new ArgumentNullException(nameof(name)); } - return PolicyMap.ContainsKey(name) ? PolicyMap[name] : null; + if (PolicyMap.TryGetValue(name, out var value)) + { + return value; + } + + return null; } } } diff --git a/src/Security/Authorization/Core/src/AuthorizationPolicy.cs b/src/Security/Authorization/Core/src/AuthorizationPolicy.cs index b7c52722fa..9466f43646 100644 --- a/src/Security/Authorization/Core/src/AuthorizationPolicy.cs +++ b/src/Security/Authorization/Core/src/AuthorizationPolicy.cs @@ -108,7 +108,7 @@ namespace Microsoft.AspNetCore.Authorization /// A new which represents the combination of the /// authorization policies provided by the specified . /// - public static async Task CombineAsync(IAuthorizationPolicyProvider policyProvider, IEnumerable authorizeData) + public static async Task CombineAsync(IAuthorizationPolicyProvider policyProvider, IEnumerable authorizeData) { if (policyProvider == null) { @@ -127,7 +127,7 @@ namespace Microsoft.AspNetCore.Authorization skipEnumeratingData = dataList.Count == 0; } - AuthorizationPolicyBuilder policyBuilder = null; + AuthorizationPolicyBuilder? policyBuilder = null; if (!skipEnumeratingData) { foreach (var authorizeDatum in authorizeData) diff --git a/src/Security/Authorization/Core/src/AuthorizationResult.cs b/src/Security/Authorization/Core/src/AuthorizationResult.cs index 46dca35fb5..416e74daec 100644 --- a/src/Security/Authorization/Core/src/AuthorizationResult.cs +++ b/src/Security/Authorization/Core/src/AuthorizationResult.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.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Security.Claims; namespace Microsoft.AspNetCore.Authorization @@ -21,7 +22,7 @@ namespace Microsoft.AspNetCore.Authorization /// /// Contains information about why authorization failed. /// - public AuthorizationFailure Failure { get; private set; } + public AuthorizationFailure? Failure { get; private set; } /// /// Returns a successful result. diff --git a/src/Security/Authorization/Core/src/AuthorizationServiceCollectionExtensions.cs b/src/Security/Authorization/Core/src/AuthorizationServiceCollectionExtensions.cs index 57fcf253b7..47c6b98ba6 100644 --- a/src/Security/Authorization/Core/src/AuthorizationServiceCollectionExtensions.cs +++ b/src/Security/Authorization/Core/src/AuthorizationServiceCollectionExtensions.cs @@ -51,11 +51,7 @@ namespace Microsoft.Extensions.DependencyInjection throw new ArgumentNullException(nameof(services)); } - if (configure != null) - { - services.Configure(configure); - } - + services.Configure(configure); return services.AddAuthorizationCore(); } } diff --git a/src/Security/Authorization/Core/src/AuthorizationServiceExtensions.cs b/src/Security/Authorization/Core/src/AuthorizationServiceExtensions.cs index 866b5dbc51..80334133fb 100644 --- a/src/Security/Authorization/Core/src/AuthorizationServiceExtensions.cs +++ b/src/Security/Authorization/Core/src/AuthorizationServiceExtensions.cs @@ -50,7 +50,7 @@ namespace Microsoft.AspNetCore.Authorization /// A flag indicating whether policy evaluation has succeeded or failed. /// This value is true when the user fulfills the policy, otherwise false. /// - public static Task AuthorizeAsync(this IAuthorizationService service, ClaimsPrincipal user, object resource, AuthorizationPolicy policy) + public static Task AuthorizeAsync(this IAuthorizationService service, ClaimsPrincipal user, object? resource, AuthorizationPolicy policy) { if (service == null) { @@ -115,4 +115,4 @@ namespace Microsoft.AspNetCore.Authorization return service.AuthorizeAsync(user, resource: null, policyName: policyName); } } -} \ No newline at end of file +} diff --git a/src/Security/Authorization/Core/src/AuthorizeAttribute.cs b/src/Security/Authorization/Core/src/AuthorizeAttribute.cs index b1f0f8bae0..09b3bc10eb 100644 --- a/src/Security/Authorization/Core/src/AuthorizeAttribute.cs +++ b/src/Security/Authorization/Core/src/AuthorizeAttribute.cs @@ -28,16 +28,16 @@ namespace Microsoft.AspNetCore.Authorization /// /// Gets or sets the policy name that determines access to the resource. /// - public string Policy { get; set; } + public string? Policy { get; set; } /// /// Gets or sets a comma delimited list of roles that are allowed to access the resource. /// - public string Roles { get; set; } + public string? Roles { get; set; } /// /// Gets or sets a comma delimited list of schemes from which user information is constructed. /// - public string AuthenticationSchemes { get; set; } + public string? AuthenticationSchemes { get; set; } } } diff --git a/src/Security/Authorization/Core/src/ClaimsAuthorizationRequirement.cs b/src/Security/Authorization/Core/src/ClaimsAuthorizationRequirement.cs index f77b74fd74..9a898176bb 100644 --- a/src/Security/Authorization/Core/src/ClaimsAuthorizationRequirement.cs +++ b/src/Security/Authorization/Core/src/ClaimsAuthorizationRequirement.cs @@ -22,7 +22,7 @@ namespace Microsoft.AspNetCore.Authorization.Infrastructure /// The claim type that must be present. /// The optional list of claim values, which, if present, /// the claim must match. - public ClaimsAuthorizationRequirement(string claimType, IEnumerable allowedValues) + public ClaimsAuthorizationRequirement(string claimType, IEnumerable? allowedValues) { if (claimType == null) { @@ -42,7 +42,7 @@ namespace Microsoft.AspNetCore.Authorization.Infrastructure /// Gets the optional list of claim values, which, if present, /// the claim must match. /// - public IEnumerable AllowedValues { get; } + public IEnumerable? AllowedValues { get; } /// /// Makes a decision if authorization is allowed based on the claims requirements specified. diff --git a/src/Security/Authorization/Core/src/DefaultAuthorizationHandlerContextFactory.cs b/src/Security/Authorization/Core/src/DefaultAuthorizationHandlerContextFactory.cs index 2dae5e5e73..4afea5cb9d 100644 --- a/src/Security/Authorization/Core/src/DefaultAuthorizationHandlerContextFactory.cs +++ b/src/Security/Authorization/Core/src/DefaultAuthorizationHandlerContextFactory.cs @@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Authorization /// If a resource is not required for policy evaluation you may pass null as the value. /// /// The . - public virtual AuthorizationHandlerContext CreateContext(IEnumerable requirements, ClaimsPrincipal user, object resource) + public virtual AuthorizationHandlerContext CreateContext(IEnumerable requirements, ClaimsPrincipal user, object? resource) { return new AuthorizationHandlerContext(requirements, user, resource); } diff --git a/src/Security/Authorization/Core/src/DefaultAuthorizationPolicyProvider.cs b/src/Security/Authorization/Core/src/DefaultAuthorizationPolicyProvider.cs index 9c9fddf9bb..f97b9c1905 100644 --- a/src/Security/Authorization/Core/src/DefaultAuthorizationPolicyProvider.cs +++ b/src/Security/Authorization/Core/src/DefaultAuthorizationPolicyProvider.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 System.Diagnostics.CodeAnalysis; using System.Threading.Tasks; using Microsoft.Extensions.Options; @@ -14,8 +15,8 @@ namespace Microsoft.AspNetCore.Authorization public class DefaultAuthorizationPolicyProvider : IAuthorizationPolicyProvider { private readonly AuthorizationOptions _options; - private Task _cachedDefaultPolicy; - private Task _cachedFallbackPolicy; + private Task? _cachedDefaultPolicy; + private Task? _cachedFallbackPolicy; /// /// Creates a new instance of . @@ -37,26 +38,26 @@ namespace Microsoft.AspNetCore.Authorization /// The default authorization policy. public Task GetDefaultPolicyAsync() { - return GetCachedPolicy(ref _cachedDefaultPolicy, _options.DefaultPolicy); + if (_cachedDefaultPolicy == null || _cachedDefaultPolicy.Result != _options.DefaultPolicy) + { + _cachedDefaultPolicy = Task.FromResult(_options.DefaultPolicy); + } + + return _cachedDefaultPolicy; } /// /// Gets the fallback authorization policy. /// /// The fallback authorization policy. - public Task GetFallbackPolicyAsync() + public Task GetFallbackPolicyAsync() { - return GetCachedPolicy(ref _cachedFallbackPolicy, _options.FallbackPolicy); - } - - private Task GetCachedPolicy(ref Task cachedPolicy, AuthorizationPolicy currentPolicy) - { - var local = cachedPolicy; - if (local == null || local.Result != currentPolicy) + if (_cachedFallbackPolicy == null || _cachedFallbackPolicy.Result != _options.FallbackPolicy) { - cachedPolicy = local = Task.FromResult(currentPolicy); + _cachedFallbackPolicy = Task.FromResult(_options.FallbackPolicy); } - return local; + + return _cachedFallbackPolicy; } /// @@ -64,7 +65,7 @@ namespace Microsoft.AspNetCore.Authorization /// /// The policy name to retrieve. /// The named . - public virtual Task GetPolicyAsync(string policyName) + public virtual Task GetPolicyAsync(string policyName) { // MVC caches policies specifically for this class, so this method MUST return the same policy per // policyName for every request or it could allow undesired access. It also must return synchronously. diff --git a/src/Security/Authorization/Core/src/DefaultAuthorizationService.cs b/src/Security/Authorization/Core/src/DefaultAuthorizationService.cs index 475dea3330..e8f63a2d06 100644 --- a/src/Security/Authorization/Core/src/DefaultAuthorizationService.cs +++ b/src/Security/Authorization/Core/src/DefaultAuthorizationService.cs @@ -77,7 +77,7 @@ namespace Microsoft.AspNetCore.Authorization /// A flag indicating whether authorization has succeeded. /// This value is true when the user fulfills the policy otherwise false. /// - public async Task AuthorizeAsync(ClaimsPrincipal user, object resource, IEnumerable requirements) + public async Task AuthorizeAsync(ClaimsPrincipal user, object? resource, IEnumerable requirements) { if (requirements == null) { @@ -102,7 +102,7 @@ namespace Microsoft.AspNetCore.Authorization } else { - _logger.UserAuthorizationFailed(result.Failure); + _logger.UserAuthorizationFailed(result.Failure!); } return result; } @@ -117,7 +117,7 @@ namespace Microsoft.AspNetCore.Authorization /// A flag indicating whether authorization has succeeded. /// This value is true when the user fulfills the policy otherwise false. /// - public async Task AuthorizeAsync(ClaimsPrincipal user, object resource, string policyName) + public async Task AuthorizeAsync(ClaimsPrincipal user, object? resource, string policyName) { if (policyName == null) { diff --git a/src/Security/Authorization/Core/src/IAuthorizationHandlerContextFactory.cs b/src/Security/Authorization/Core/src/IAuthorizationHandlerContextFactory.cs index 272109eea9..5c18763a84 100644 --- a/src/Security/Authorization/Core/src/IAuthorizationHandlerContextFactory.cs +++ b/src/Security/Authorization/Core/src/IAuthorizationHandlerContextFactory.cs @@ -21,6 +21,6 @@ namespace Microsoft.AspNetCore.Authorization /// If a resource is not required for policy evaluation you may pass null as the value. /// /// The . - AuthorizationHandlerContext CreateContext(IEnumerable requirements, ClaimsPrincipal user, object resource); + AuthorizationHandlerContext CreateContext(IEnumerable requirements, ClaimsPrincipal user, object? resource); } } diff --git a/src/Security/Authorization/Core/src/IAuthorizationPolicyProvider.cs b/src/Security/Authorization/Core/src/IAuthorizationPolicyProvider.cs index 52e5b2314d..88101d7ba3 100644 --- a/src/Security/Authorization/Core/src/IAuthorizationPolicyProvider.cs +++ b/src/Security/Authorization/Core/src/IAuthorizationPolicyProvider.cs @@ -15,7 +15,7 @@ namespace Microsoft.AspNetCore.Authorization /// /// The policy name to retrieve. /// The named . - Task GetPolicyAsync(string policyName); + Task GetPolicyAsync(string policyName); /// /// Gets the default authorization policy. @@ -27,6 +27,6 @@ namespace Microsoft.AspNetCore.Authorization /// Gets the fallback authorization policy. /// /// The fallback authorization policy. - Task GetFallbackPolicyAsync(); + Task GetFallbackPolicyAsync(); } } diff --git a/src/Security/Authorization/Core/src/IAuthorizationService.cs b/src/Security/Authorization/Core/src/IAuthorizationService.cs index 8976425ba6..996d646c86 100644 --- a/src/Security/Authorization/Core/src/IAuthorizationService.cs +++ b/src/Security/Authorization/Core/src/IAuthorizationService.cs @@ -29,7 +29,7 @@ namespace Microsoft.AspNetCore.Authorization /// Resource is an optional parameter and may be null. Please ensure that you check it is not /// null before acting upon it. /// - Task AuthorizeAsync(ClaimsPrincipal user, object resource, IEnumerable requirements); + Task AuthorizeAsync(ClaimsPrincipal user, object? resource, IEnumerable requirements); /// /// Checks if a user meets a specific authorization policy @@ -49,6 +49,6 @@ namespace Microsoft.AspNetCore.Authorization /// Resource is an optional parameter and may be null. Please ensure that you check it is not /// null before acting upon it. /// - Task AuthorizeAsync(ClaimsPrincipal user, object resource, string policyName); + Task AuthorizeAsync(ClaimsPrincipal user, object? resource, string policyName); } -} \ No newline at end of file +} diff --git a/src/Security/Authorization/Core/src/LoggingExtensions.cs b/src/Security/Authorization/Core/src/LoggingExtensions.cs index fec8064a3d..395ae48686 100644 --- a/src/Security/Authorization/Core/src/LoggingExtensions.cs +++ b/src/Security/Authorization/Core/src/LoggingExtensions.cs @@ -8,8 +8,8 @@ namespace Microsoft.Extensions.Logging { internal static class LoggingExtensions { - private static Action _userAuthorizationFailed; - private static Action _userAuthorizationSucceeded; + private static Action _userAuthorizationFailed; + private static Action _userAuthorizationSucceeded; static LoggingExtensions() { diff --git a/src/Security/Authorization/Core/src/Microsoft.AspNetCore.Authorization.csproj b/src/Security/Authorization/Core/src/Microsoft.AspNetCore.Authorization.csproj index 4b42191fd2..bada0ab62b 100644 --- a/src/Security/Authorization/Core/src/Microsoft.AspNetCore.Authorization.csproj +++ b/src/Security/Authorization/Core/src/Microsoft.AspNetCore.Authorization.csproj @@ -11,6 +11,7 @@ Microsoft.AspNetCore.Authorization.AuthorizeAttribute $(NoWarn);CS1591 true aspnetcore;authorization + enable diff --git a/src/Security/Authorization/Core/src/OperationAuthorizationRequirement.cs b/src/Security/Authorization/Core/src/OperationAuthorizationRequirement.cs index 0e2a6fcf3f..51cb29ed20 100644 --- a/src/Security/Authorization/Core/src/OperationAuthorizationRequirement.cs +++ b/src/Security/Authorization/Core/src/OperationAuthorizationRequirement.cs @@ -12,7 +12,7 @@ namespace Microsoft.AspNetCore.Authorization.Infrastructure /// /// The name of this instance of . /// - public string Name { get; set; } + public string Name { get; set; } = default!; public override string ToString() { 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 ba41207565..f34ad7eb79 100644 --- a/src/Security/Authorization/Policy/ref/Microsoft.AspNetCore.Authorization.Policy.csproj +++ b/src/Security/Authorization/Policy/ref/Microsoft.AspNetCore.Authorization.Policy.csproj @@ -2,6 +2,7 @@ $(DefaultNetCoreTargetFramework) + annotations diff --git a/src/Security/Authorization/Policy/ref/Microsoft.AspNetCore.Authorization.Policy.netcoreapp.cs b/src/Security/Authorization/Policy/ref/Microsoft.AspNetCore.Authorization.Policy.netcoreapp.cs index 0fa980dadc..f5981db111 100644 --- a/src/Security/Authorization/Policy/ref/Microsoft.AspNetCore.Authorization.Policy.netcoreapp.cs +++ b/src/Security/Authorization/Policy/ref/Microsoft.AspNetCore.Authorization.Policy.netcoreapp.cs @@ -25,18 +25,18 @@ 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); + 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 Microsoft.AspNetCore.Authorization.AuthorizationFailure AuthorizationFailure { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } + public Microsoft.AspNetCore.Authorization.AuthorizationFailure? AuthorizationFailure { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } 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 Forbid(Microsoft.AspNetCore.Authorization.AuthorizationFailure authorizationFailure) { throw null; } + public static Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult Forbid(Microsoft.AspNetCore.Authorization.AuthorizationFailure? authorizationFailure) { throw null; } public static Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult Success() { throw null; } } public partial class PolicyEvaluator : Microsoft.AspNetCore.Authorization.Policy.IPolicyEvaluator @@ -45,7 +45,7 @@ namespace Microsoft.AspNetCore.Authorization.Policy [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; } + 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 diff --git a/src/Security/Authorization/Policy/src/IPolicyEvaluator.cs b/src/Security/Authorization/Policy/src/IPolicyEvaluator.cs index b6103950bc..df4b002194 100644 --- a/src/Security/Authorization/Policy/src/IPolicyEvaluator.cs +++ b/src/Security/Authorization/Policy/src/IPolicyEvaluator.cs @@ -35,6 +35,6 @@ namespace Microsoft.AspNetCore.Authorization.Policy /// Returns if authorization succeeds. /// Otherwise returns if , otherwise /// returns - Task AuthorizeAsync(AuthorizationPolicy policy, AuthenticateResult authenticationResult, HttpContext context, object resource); + Task AuthorizeAsync(AuthorizationPolicy policy, AuthenticateResult authenticationResult, HttpContext context, object? resource); } } 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 604d5bb851..17e646635b 100644 --- a/src/Security/Authorization/Policy/src/Microsoft.AspNetCore.Authorization.Policy.csproj +++ b/src/Security/Authorization/Policy/src/Microsoft.AspNetCore.Authorization.Policy.csproj @@ -8,6 +8,7 @@ true aspnetcore;authorization false + enable diff --git a/src/Security/Authorization/Policy/src/PolicyAuthorizationResult.cs b/src/Security/Authorization/Policy/src/PolicyAuthorizationResult.cs index a87f0451b9..c653be105f 100644 --- a/src/Security/Authorization/Policy/src/PolicyAuthorizationResult.cs +++ b/src/Security/Authorization/Policy/src/PolicyAuthorizationResult.cs @@ -25,7 +25,7 @@ namespace Microsoft.AspNetCore.Authorization.Policy /// /// Contains information about why authorization failed. /// - public AuthorizationFailure AuthorizationFailure { get; private set; } + public AuthorizationFailure? AuthorizationFailure { get; private set; } public static PolicyAuthorizationResult Challenge() => new PolicyAuthorizationResult { Challenged = true }; @@ -33,7 +33,7 @@ namespace Microsoft.AspNetCore.Authorization.Policy public static PolicyAuthorizationResult Forbid() => Forbid(null); - public static PolicyAuthorizationResult Forbid(AuthorizationFailure authorizationFailure) + public static PolicyAuthorizationResult Forbid(AuthorizationFailure? authorizationFailure) => new PolicyAuthorizationResult { Forbidden = true, AuthorizationFailure = authorizationFailure }; public static PolicyAuthorizationResult Success() diff --git a/src/Security/Authorization/Policy/src/PolicyEvaluator.cs b/src/Security/Authorization/Policy/src/PolicyEvaluator.cs index 509eb6a4de..21f0c4e9f0 100644 --- a/src/Security/Authorization/Policy/src/PolicyEvaluator.cs +++ b/src/Security/Authorization/Policy/src/PolicyEvaluator.cs @@ -34,7 +34,7 @@ namespace Microsoft.AspNetCore.Authorization.Policy { if (policy.AuthenticationSchemes != null && policy.AuthenticationSchemes.Count > 0) { - ClaimsPrincipal newPrincipal = null; + ClaimsPrincipal? newPrincipal = null; foreach (var scheme in policy.AuthenticationSchemes) { var result = await context.AuthenticateAsync(scheme); @@ -74,7 +74,7 @@ namespace Microsoft.AspNetCore.Authorization.Policy /// Returns if authorization succeeds. /// Otherwise returns if , otherwise /// returns - public virtual async Task AuthorizeAsync(AuthorizationPolicy policy, AuthenticateResult authenticationResult, HttpContext context, object resource) + public virtual async Task AuthorizeAsync(AuthorizationPolicy policy, AuthenticateResult authenticationResult, HttpContext context, object? resource) { if (policy == null) { diff --git a/src/Security/Authorization/Policy/src/PolicyServiceCollectionExtensions.cs b/src/Security/Authorization/Policy/src/PolicyServiceCollectionExtensions.cs index 3a251dd09d..f154137068 100644 --- a/src/Security/Authorization/Policy/src/PolicyServiceCollectionExtensions.cs +++ b/src/Security/Authorization/Policy/src/PolicyServiceCollectionExtensions.cs @@ -37,7 +37,16 @@ namespace Microsoft.Extensions.DependencyInjection /// The to add services to. /// The so that additional calls can be chained. public static IServiceCollection AddAuthorization(this IServiceCollection services) - => services.AddAuthorization(configure: null); + { + if (services == null) + { + throw new ArgumentNullException(nameof(services)); + } + + services.AddAuthorizationCore(); + services.AddAuthorizationPolicyEvaluator(); + return services; + } /// /// Adds authorization policy services to the specified . diff --git a/src/Shared/SecurityHelper/SecurityHelper.cs b/src/Shared/SecurityHelper/SecurityHelper.cs index 408ef6b224..ea17c5fa0f 100644 --- a/src/Shared/SecurityHelper/SecurityHelper.cs +++ b/src/Shared/SecurityHelper/SecurityHelper.cs @@ -1,7 +1,8 @@ // 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; +#nullable enable + using System.Linq; using System.Security.Claims; @@ -19,7 +20,7 @@ namespace Microsoft.Extensions.Internal /// /// The containing existing . /// The containing to be added. - public static ClaimsPrincipal MergeUserPrincipal(ClaimsPrincipal existingPrincipal, ClaimsPrincipal additionalPrincipal) + public static ClaimsPrincipal MergeUserPrincipal(ClaimsPrincipal? existingPrincipal, ClaimsPrincipal? additionalPrincipal) { var newPrincipal = new ClaimsPrincipal();