You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core中Policy、Scheme及Policy Scheme的区别与关联解析

ASP.NET 认证/授权中 Policy、Scheme、Policy Scheme 概念解析

1. 认证方案(Scheme)

Scheme 是具体的认证实现方式,相当于身份验证的"工具"。比如 Cookie 认证、JWT 令牌认证、OAuth2 第三方登录,每种方式对应一个独立的 Scheme。每个 Scheme 背后都有一套认证处理器,负责验证用户提交的凭证(比如Cookie值、Bearer令牌),并生成包含用户身份信息的 ClaimsPrincipal 对象。

你可以给每个Scheme起个自定义名称,比如:

services.AddAuthentication()
    .AddJwtBearer("MyJwt", options => { /* JWT配置 */ })
    .AddCookie("MyCookie", options => { /* Cookie配置 */ });

这里的 "MyJwt" 和 "MyCookie" 就是两个不同的认证Scheme名称。

2. 授权策略(Policy)

Policy 是授权规则的集合,用来判断某个用户是否有权限访问特定资源。它可以包含多种规则:检查用户是否有某个Claim、是否属于指定角色、是否满足自定义条件(比如年龄≥18)等。

关键的是,Policy 可以指定哪些认证Scheme的用户身份会被用来做规则校验。比如你可以定义一个仅接受JWT认证用户的管理员策略:

services.AddAuthorization(options =>
{
    options.AddPolicy("AdminOnly", policy =>
    {
        // 指定该策略只认可"MyJwt" Scheme认证的用户
        policy.AuthenticationSchemes.Add("MyJwt");
        // 规则:必须拥有Admin角色
        policy.RequireRole("Admin");
    });
});

在接口/Controller上标注 [Authorize(Policy = "AdminOnly")],就会先通过"MyJwt" Scheme验证用户身份,再检查是否符合Admin角色要求。

3. Policy Scheme(策略方案)

Policy Scheme 是一种特殊的认证Scheme——它本身不做实际的身份验证,而是扮演"调度器"的角色,根据预设逻辑动态选择其他真实的认证Scheme来处理请求。

比如你想让系统根据请求头自动切换JWT或Cookie认证,就可以用Policy Scheme作为默认认证方案:

services.AddAuthentication("DefaultPolicyScheme")
    .AddJwtBearer("MyJwt", options => { /* 配置 */ })
    .AddCookie("MyCookie", options => { /* 配置 */ })
    .AddPolicyScheme("DefaultPolicyScheme", "动态认证", options =>
    {
        options.ForwardDefaultSelector = context =>
        {
            // 逻辑:如果请求头带Bearer令牌,用MyJwt;否则用MyCookie
            var authHeader = context.Request.Headers["Authorization"].FirstOrDefault();
            return authHeader?.StartsWith("Bearer ") ? "MyJwt" : "MyCookie";
        };
    });

三者的关联逻辑

  • Scheme是基础:所有认证的核心单元,提供身份验证的能力;
  • Policy依赖Scheme:授权规则需要先通过指定的Scheme拿到用户身份,再执行规则校验;
  • Policy Scheme是认证层面的调度器:它本身是一个Scheme,但不做实际认证,而是帮你在多个Scheme之间动态选择,也可以和授权Policy配合使用(比如让Policy接受Policy Scheme调度后的用户身份)。

内容的提问来源于stack exchange,提问作者dmdany07

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 16:02:18