我已经阅读了大量有关如何保护 ASP.Net Web API 的内容。这一直很混乱,他们的文档并不总是很清楚。这可能是一个重复的问题,但我对 SO 的搜索没有 100% 找到任何东西。
我知道,如果您想让第三方访问您的 Web API,那么您需要 OAuth 之类的东西。我已经阅读了大量有关 OAuth 的示例,并且在阅读后我确信这不是我要走的路。我不想让其他人访问 API。
这是我的场景。我在后端使用了 ASP.Net MVC 4 和 Web API。我使用了 Angularjs 并在前端创建了一个 SPA Web 应用程序。用户自行登录,即可使用系统。我永远不会允许第三方针对我们的 API 开发任何东西。然而,Web API 很有吸引力,因为它消除了对 Session 的需求。这意味着如果 Web 服务器太忙,我们可以更好地扩展。
我已经阅读了有关 HTTP 基本身份验证的信息,但这意味着我必须验证每个请求。如果用户信息在数据库中或在某些网络服务后面,那么每次调用都是额外的 IO,这看起来很糟糕。我更喜欢这样的想法,一旦你有了一个令牌,你就可以开始了,服务器可以在每次调用时做一些数学运算。
ASP.Net MVC Angularjs 模板使用普通形式的身份验证(cookies)和 HTTP 防伪令牌。我很乐意使用这种方法,但最近不是有一个动作来摆脱浏览器中的 cookie 吗?还是默认禁用cookies而用户必须打开它们?(即选择加入而不是退出)。
我喜欢 OAuth 的想法,因为令牌可以包含诸如用户所处角色之类的声明。我不确定表单 Auth 将如何包含角色信息,除非它也存储在 cookie 中。
更新:(基于投票结束,因为不清楚我在问什么)
验证进入 Web API 的 AJAX 请求并对角色进行授权的最简单方法是什么?不需要向第三方提供访问权限。