我已经创建了 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 控制器,那就只尊重不记名令牌,而不是身份用户。
任何帮助表示赞赏!