针对 Web Api 和 Mvc .NET 4 应用程序授权范围的正确方法

Correct method of authorizing scopes against Web Api and Mvc .NET 4 Applications

我正在使用身份服务器 4 作为身份验证服务器,并且已经成功地演示了身份验证客户端以访问我的 MVC Web 应用程序和我的 Web API 应用程序,这两个 运行 在 IIS 下都在 .净 4.7.

我遇到的问题是找到正确的方法来确保客户端在身份验证过程后只能访问他们应该访问的端点。 EG,我有两个客户,一个有写范围,一个没有。我如何确保没有的人只能访问将读取我的数据而不修改它的端点?

到目前为止我发现的最好方法是使用这样的授权属性: https://github.com/IdentityModel/Thinktecture.IdentityModel/blob/master/source/WebApi/ScopeAuthorizeAttribute.cs

但是,这被标记为已过时,我不知道提到了基于 OWIN 中间件的版本。考虑到我的 MVC 和 Web Api 应用程序无法更新为 .NET 核心应用程序,最好的方法是什么?

由于范围声明在 ASP.Net 管道中可用,您可以很容易地实现自己的访问控制过滤器。可能是那个特定的库已经过时了,但是在 MVC/WebAPI 过滤器中强制执行范围的做法肯定是完全有效的。