我正在努力构建两个asp.netmvc 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");
}
}
如上面代码所示,我正在发送一个安全令牌,它存储在两个应用程序的web中。配置文件。通过这种方式,我可以确保(或者这是我的意图)网络扫描应用程序收到的任何请求都是来自ERP系统的(因为他们只知道令牌)。
但是根据我的搜索和阅读,我意识到上述方法可能不是100%安全的,因为这个原因:-
因此,如果我将令牌作为授权标头的一部分发送,效果会更好。
因此,我的问题是如何在webclient中做到这一点:-
>
目前我正在将令牌作为获取请求发送,如下所示:-
string url=currentURL“主页/扫描服务器”tokenfro=“令牌”
那么我如何修改它以将令牌作为授权标头的一部分发送呢?
谢谢
这是基本身份验证的一个示例。
var creds = string.Format("{0}:{1}", userName, Password);
var bytes = Encoding.ASCII.GetBytes(creds);
var header = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(bytes));
var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = header;
用于检查接收器。
var headers = request.Headers;
if (headers.Authorization != null && headers.Authorization.Scheme.Equals(AuthScheme))
{
var encoding = Encoding.GetEncoding("iso-8859-1");
var creds = encoding.GetString(Convert.FromBase64String(headers.Authorization.Parameter));
var parts = creds.Split(':');
var userName = parts[0].Trim();
var pwd = parts[1].Trim();
}
Im使用Spring-Security和JWT库生成令牌。当用户通过身份验证时,我得到授权令牌作为响应: 在所有教程中,我都看到作者在使用POSTMAN发送GET请求时将此令牌粘贴在授权标头中,但没有教程说明它如何在实际请求中工作。尽管在我的邮递员中,当我粘贴标题时,它是有效的,我得到了200个OK。 我想知道如何在真正的代码中包含这个标题? 编辑 这是我的前端请求。在这个调用之后,我得到带有授权
我已经实现了一个使用基本身份验证(使用Spring Security性)的web服务器。 我在访问URL时禁用了默认身份验证入口点(它只返回401,而不是用www身份验证标头响应401),目的是防止浏览器显示身份验证弹出窗口。 我能够用javascript代码和命令行工具(如curl)连接到服务器,但是当我用浏览器(chrome)测试它时 <代码>curl-v-u用户:密码本地主机:8080/用户
嘿,我想弄清楚如何为REST API POST调用使用OAuth授权令牌。 文件规定: 如果发生此错误,您的应用程序可以通过重新运行相应的流来请求新的访问令牌。 目前我的VB. net代码是这样的: 我不断收到一个错误:远程服务器返回一个错误:(401)未经授权。 我在下面的帖子中发现了这一点: Yammer API要求OAuth数据位于标头中。如果您查看他们获取数据的示例,您将看到请求如下所示。
我使用springfox 2.9.2我有这样的api: 女巫来自身份验证服务器。我尝试在swagger中首次调用此服务器,并将其传递给像上面这样的控制器请求。所以我做 在Swagger ui上,授权调用成功返回了令牌,但它没有将令牌添加到请求头中。它会产生 如果我像这样设置令牌:
当我发布带有授权头的请求API时,我在角4中有一个问题? 令牌来自firebase auth 我用这个叫邮局 回复403!!! 请求URL:https://us-central1-xxxxxx-prod.cloudfunctions.net/api/post请求方法:选项 状态代码:403 远程地址:216.58。198.51:443 引用方策略:降级时无引用 响应头 访问控制允许方法:获取、发布
向带有某些头的endpoint发出邮递员请求 当我运行下面的代码时 它返回了我所期望的一切,如下所示 问题只出在Axios请求上,而不是其他任何事情。这里面出了什么问题?