【发布时间】:2021-03-11 10:46:17
【问题描述】:
我正在努力在使用 OData 的 Web Api 项目中进行身份验证。 我认为像这样配置身份验证:
services.AddODataAuthorization((options) =>
{
options.ConfigureAuthentication(JwtBearerDefaults.AuthenticationScheme).AddMicrosoftIdentityWebApi(Configuration.GetSection(Constants.AzureAd));
});
足以启用对 OData 端点的所有请求的身份验证。但无论令牌是否传递,有效或无效 - 始终执行 api 方法。永远不会返回 HTTP 401(未经授权)。
在the examples 之一中明确使用了HasReadRestrictions 方法:
customers.HasReadRestrictions()
.HasPermissions(p => p.HasSchemeName("Scheme").HasScopes(s => s.HasScope("Customers.Read")))
.HasReadByKeyRestrictions(r => r.HasPermissions(p =>
p.HasSchemeName("Scheme").HasScopes(s => s.HasScope("Customers.ReadByKey"))));
是否必须像这样配置所有 OData 实体?
【问题讨论】:
-
您是否在控制器或方法上使用
[Authorize]属性? -
@JHBonarius 是的。在那个项目中,我有正常的 api 控制器,授权运行良好。只有 OData 控制器传递未经身份验证的请求。
-
有什么有用的信息here?
标签: asp.net-core odata asp.net-core-webapi