在多个策略方案上设置默认授权策略

时间:2019-04-03 13:42:56

标签: authentication .net-core authorization policy

我正在为我的应用设置2种可能的政策

services.AddAuthorization(auth =>
            {
                auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder()
                    .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme)
                    .RequireAuthenticatedUser().Build());

                auth.AddPolicy("apiKey", policy =>
                    policy.Requirements.Add(new ApiKeyRequirement()));
            });

在调用我的控制器时,必须使用[Authorize(Policy =“ Bearer”)]或[Authorize(Policy =“ ApiKey”)]。

有什么方法可以将其中之一设置为默认值,然后,当我要使用它时,我只能使用[Authorize],如果要使用另一个,请指定它?< / p>

例如:

将“ Bearer”设置为默认值,然后,在使用Bearer方案时,我只需要设置[Authorize],但是如果我想使用“ ApiKey”,则可以使用[Authorize(Policy =“ ApiKey “)]

找不到任何示例。

1 个答案:

答案 0 :(得分:0)

找到了可以设置为默认值的属性:

services.AddAuthorization(auth =>
            {
                auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder()
                    .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme)
                    .RequireAuthenticatedUser().Build());

                auth.AddPolicy("apiKey", policy =>
                    policy.Requirements.Add(new ApiKeyRequirement()));

                auth.DefaultPolicy = auth.GetPolicy("Bearer");
            });

在这种情况下,当我想使用“承载”方案时,我只需要使用[Authorization]