有没有任何方法可以保护asp.net MVC4网络应用程序免受外部网站的请求
本文关键字:应用程序 外部 网站 请求 网络 MVC4 方法 任何 保护 net asp | 更新日期: 2023-09-27 18:21:44
在这种情况下,外部网站将通过网络向我的web应用程序发送一些数据,然后我必须处理这些信息并在我的应用程序中完成一个过程。流程完成后,我需要返回到原始的外部网站并提供一些信息。
我的问题是关于安全性,我如何知道提出请求的外部网站实际上是应该提出请求的网站?如果你能给我指一个正确的方向,那就太好了!
我使用的是ASP.NET MVC4。
对于这种情况,证书身份验证最适合。我有很多外部客户端在使用我的服务,证书身份验证正在按预期工作。
#Mick Wasson has written this post:
http://www.asp.net/web-api/overview/security/working-with-ssl-in-web-api
您可以从第三方购买证书,如:
快速SSL:https://www.rapidssl.com/index.html
全局标志:https://www.globalsign.eu/ssl/
以下是可用选项如果您的web应用程序是公共web服务,则基本或令牌可能是不错的选择。
基本
调用方添加一个HTTP授权标头,其中包含用户名和密码。这些值本质上是纯文本,只使用base64编码进行简单的模糊处理。这通常需要安全套接字层(SSL)传输安全性(即端点公开HTTPS地址)来保护明文用户名和密码。
摘要
提供了一种更高级的方法,将用户名和密码放入为这些值提供加密的HTTP标头中。这是为了避免HTTPS的需要。
Kerberos
使用身份验证服务器(如Windows Active Directory)来提供集成的无缝凭据验证。这类似于Windows网络上与域集成以进行用户身份验证的intranet站点。许多内部SharePoint网站都使用这种方法,这样公司的用户在访问intranet时就不必重新输入用户名和密码。
公钥、证书
依赖调用方提供的证书来识别用户。这在公共网站或服务中不是很有用,但它非常适合已知用户或设备的应用程序。这种方法的一个例子是基于内部便携式设备用于跟踪库存的仓储应用程序,或者销售团队使用的一套iPad。用户群体相对较小,在公司的组织结构中定义明确。每个用户或设备都会获得一个证书,用于在每次呼叫您的网站或服务时识别他(或它)。
代币
主要在涉及第三方代币发行商时使用(例如,OpenID、OAuth)。这减轻了您的服务存储和验证用户凭据的负担。以下是它的工作原理(一般来说):
调用者首先使用您的服务信任的令牌颁发者来验证用户名和密码。验证成功后,令牌颁发者向调用者提供令牌。一旦调用方拥有该令牌,它就会使用它来调用您的服务。由于您的服务信任调用者用于凭据验证的颁发者,因此您的服务可以信任令牌安全地标识用户,因此不必自己验证用户的凭据。
来源: ASP.NET Web API 2:从开始到完成构建REST服务