在 ASP.NET Core MVC 中实现基于用户角色的动态 CORS 策略

问题描述 投票:0回答:1

描述:

我正在开发一个 ASP.NET Core MVC 项目,需要基于用户角色的动态 CORS 策略以实现安全的 API 访问。寻求有关动态实施基于角色的 CORS 策略以控制各种用户角色的跨域访问的建议。

问题详情:

我的 ASP.NET Core MVC 应用程序涉及不同的用户角色(管理员、用户、经理),每个角色都需要不同的 CORS 策略来进行 API 访问。我正在寻找一种强大的方法来在运行时根据用户角色动态配置 CORS 策略,从而确保安全的跨域数据交换。

尝试与期望:

使用固定策略探索了 Startup.cs 中的基本 CORS 设置,但面临基于动态角色的策略的限制。 期望获得关于根据经过身份验证的用户角色动态生成和应用 CORS 策略以允许或限制跨源请求的指导。 示例代码片段(部分):

以下是动态 CORS 策略设置的概念表示:

public class CustomCorsPolicyProvider : ICorsPolicyProvider
{
    public Task<CorsPolicy> GetPolicyAsync(HttpContext context, string policyName)
    {
        // Logic to fetch user role and dynamically generate CORS policy
        var userRole = context.User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Role)?.Value;
        
        var corsPolicy = new CorsPolicy();
        // Apply logic to dynamically configure CORS policies based on user roles
        // Example: SetAllowedOrigins, SetAllowedMethods, SetAllowedHeaders, etc.

        return Task.FromResult(corsPolicy);
    }
}

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors(options =>
    {
        options.AddPolicy("DynamicCorsPolicy", policy =>
        {
            policy.Provider = new CustomCorsPolicyProvider();
        });
    });

    // Other service configurations
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // Other middleware configurations

    app.UseCors("DynamicCorsPolicy");
    app.UseAuthentication();
    app.UseAuthorization();

    // Additional middleware configurations
}

寻求专家指导或代码示例,在 ASP.NET Core MVC 中根据用户角色动态配置 CORS 策略,以确保安全的跨域数据交换。支持运行时基于角色的 CORS 策略的解决方案将极大地增强应用程序 API 访问控制的安全性和灵活性。

c# security asp.net-core-mvc cors role-based-access-control
1个回答
0
投票

CORS is only implemented by browsers
那就不是了 保护您的 api 端点的强大机制。这意味着您可以通过 Chrome 中的某些扩展或使用邮递员发送请求来禁用。

对于asp.net mvc应用程序,请使用anti-request-forgery和角色基础授权来保护您的应用程序

© www.soinside.com 2019 - 2024. All rights reserved.