我已经创建了 asp.net mvc 6 应用程序并使用实体框架 7 配置了 asp.net 身份用户,工作正常。然后我添加 AspNet.Security.OpenIdConnect.Server了也可以正常工作的令牌提供程序服务器。
然后我创建了一个 api 控制器,如下所示:
[路由(“api/[控制器]”)]
公共类 ValuesController : 控制器
{
// 获取:api/值
[授权(政策=“某些政策”)]
[HttpGet]
公共 IEnumerable Get()
{
返回新字符串[] { "value1", "value2" };
}
}
问题:我想以这样的方式配置授权,以便不记名令牌或 asp.net 身份用户有效(并且属于某个角色),我想允许用户访问 API。
这是我在 startup.cs 中尝试的:
services.AddAuthorization(options => {
// 添加一个需要“范围”声明的新策略
// 包含“api-resource-controller”值。
options.AddPolicy("API", policy => {
policy.AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme);
policy.RequireClaim(OpenIdConnectConstants.Claims.Scope, "offline_access");
});
});
然后,如果我添加[Authorize(Policy="API")]到我的 api 控制器,那就只尊重不记名令牌,而不是身份用户。
任何帮助表示赞赏!