如何使用WebClient在授权标头内发送包含令牌的Post请求

时间:2015-09-10 11:29:13

标签: asp.net asp.net-mvc asp.net-mvc-5 authorization webclient

我正致力于在两个asp.net mvc Web应用程序之间构建安全集成;和调用网络扫描应用程序的ERP系统。所以目前在接收器应用程序(网络扫描应用程序)上我有以下操作方法,只能由ERP系统执行: -

    public async Task<ActionResult> ScanServer(string tokenfrom, string FQDN) //only the ERP system should be able to call this
            {
                string Token = System.Web.Configuration.WebConfigurationManager.AppSettings["Token"];//get the token from the web.config, this should be encrypted

                if (tokenfrom != Token ) // check if the request is authorized by checking comparing the 2 tokens.
                {



                 return new HttpStatusCodeResult(403, "request failed");
//code goes here..
                }

在调用者系统(ERP系统)上,我有以下操作方法调用上述操作方法。

[HttpPost]
       [CheckUserPermissions(Action = "", Model = "Admin")]//check if the user is defined as an admin inside my custom authorization system
       public async Task<ActionResult> Scan()
       {
           try
           {

               string currentURL = System.Web.Configuration.WebConfigurationManager.AppSettings["scanningURL"];
               string token = System.Web.Configuration.WebConfigurationManager.AppSettings["Token"];
               using (WebClient wc = new WebClient())
               {
                   string url = currentURL + "home/scanserver?tokenfromtms=" + token + "&FQDN=allscan" ;
                   var json = await  wc.DownloadStringTaskAsync(url);
                   TempData["messagePartial"] = string.Format("Scan has been completed. Scan reported generated");

               }




           }

如上面的代码所示,我发送了一个安全令牌,它存储在2个应用程序的web.config文件中。通过这种方式,我可以确保(或者这是我的意图)网络扫描应用程序收到的任何请求都来自ERP系统(因为他们只知道令牌)。

但根据我的搜索和阅读,我意识到上述方法可能不是100%安全,因此: -

  1. 任何用户如何访问ERP或网络扫描服务器,都可以看到所有包含令牌的URL为纯文本。因为服务器将所有get请求作为纯文本存储在日志中,即使这些URL是通过https发送/接收的,如我的情况。
  2. 所以如果我将令牌作为授权标头的一部分发送会更好。

    所以我的问题是我如何在webclient中做到这一点: -

    1. 目前我正在将令牌作为Get请求发送,如下所示: -

      string url = currentURL +“home / scanserver?tokenfro =”+ token +“&amp; FQDN = allscan”;  var json = await wc.DownloadStringTaskAsync(url);

    2. 那么我如何修改它以将令牌作为授权标题的一部分发送?

      1. 第二个问题我将如何在网络扫描应用程序中接收此授权标题?
      2. 由于

0 个答案:

没有答案