asp.net-mvc – 如何使WebAPI操作只能从我的应用程序访问?

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 如何使WebAPI操作只能从我的应用程序访问?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
WebAPI的常见用例将是由MVC控制器呈现的视图,其中包含 JavaScript,然后打开您的API来访问数据.

但是假设您有一些昂贵的API操作,并且您不希望人们远程访问这些端点 – 您只希望应用程序提供的MVC视图来访问它们.你怎么去保护他们?

在这种情况下,Request.IsLocal不起作用,因为javascript正在其机器上的客户端浏览器中调用它.即使它工作,你需要挖掘来获得真正的HttpContext,以便找到这个属性 – 而且这个解决方案将不能在自我托管的WebAPI中运行.

对于需要有效IPrincipal的API端点,您可以使用[Authorize]属性来保护它们.但是,您希望您的应用程序能够访问匿名用户的API端点呢?

我已经尝试了一个解决方案,并将其作为答案分开发布,因为我不知道它是否是最好的(甚至是好的)方法.

解决方法

如果您的MVC站点使用身份验证,则可以为Web API方法启用表单身份验证.您可以编写一个自定义[Authorize]属性,该属性将检查是否存在将从AJAX调用发送的表单验证cookie,如果存在则构造主体.

另一个可能的解决方案是使用更加REST风格的tokens来保护您的API.这里的想法是,当用户在您的MVC网站上进行身份验证时,您可以生成并将一个令牌传递给将AJAX请求发送到Web API时将使用的视图,该API将会验证令牌及其签名的有效性.

另一方面,如果您的网站不使用身份验证,则会因为您使用JavaScript调用API方法而无法知道请求是否来自受信任的客户端,所以会变得非常复杂.

原文链接:https://www.f2er.com/aspnet/246636.html

猜你在找的asp.Net相关文章