我正致力于在两个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%安全,因此: -
所以如果我将令牌作为授权标头的一部分发送会更好。
所以我的问题是我如何在webclient中做到这一点: -
目前我正在将令牌作为Get请求发送,如下所示: -
string url = currentURL +“home / scanserver?tokenfro =”+ token +“&amp; FQDN = allscan”; var json = await wc.DownloadStringTaskAsync(url);
那么我如何修改它以将令牌作为授权标题的一部分发送?
由于