Esempio n. 1
0
    /// <summary>
    /// Authorizes a multiple-item read request using the claims, resource, and action supplied in the <see cref="EdFiAuthorizationContext"/>.
    /// </summary>
    /// <param name="authorizationContext">The authorization context to be used in making the authorization decision.</param>
    /// <param name="authorizationBasisMetadata">The authorization metadata that is the basis for making the authorization decision.</param>
    /// <returns>The list of authorization strategy-based filters to be applied to the query for authorization.</returns>
    public IReadOnlyList <AuthorizationStrategyFiltering> GetAuthorizationFiltering(
        EdFiAuthorizationContext authorizationContext,
        AuthorizationBasisMetadata authorizationBasisMetadata)
    {
        var relevantClaims = new[] { authorizationBasisMetadata.RelevantClaim };

        var authorizationFiltering = authorizationBasisMetadata.AuthorizationStrategies
                                     .Distinct()
                                     .Select(x => x.GetAuthorizationStrategyFiltering(relevantClaims, authorizationContext))
                                     // Sort authorizations so that those that use system-assigned values are processed after others to avoid disclosing item existence to otherwise unauthorized clients
                                     .OrderBy(x => x.UsesSystemAssignedValues)
                                     .ToArray();

        return(authorizationFiltering);
    }
            /// <summary>
            /// Authorizes a multiple-item read request using the claims, resource, action and entity instance supplied in the <see cref="EdFiAuthorizationContext"/>.
            /// </summary>
            /// <param name="authorizationContext">The authorization context to be used in making the authorization decision.</param>
            /// <param name="authorizationBasisMetadata"></param>
            /// <returns></returns>
            public IReadOnlyList <AuthorizationStrategyFiltering> GetAuthorizationFiltering(EdFiAuthorizationContext authorizationContext, AuthorizationBasisMetadata authorizationBasisMetadata)
            {
                ActualAuthorizationContext = authorizationContext;

                return(new[]
                {
                    new AuthorizationStrategyFiltering()
                    {
                        AuthorizationStrategyName = "Test",
                        Filters = new[]
                        {
                            new AuthorizationFilterContext
                            {
                                FilterName = _filterName,
                                ClaimEndpointValues = new[] { _parameterValue },
                                ClaimParameterName = _parameterName
                            }
                        }
                    }
                });
            }