Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core Servicestack未经授权_Asp.net Core_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack - Fatal编程技术网 servicestack,Asp.net Core,servicestack" /> servicestack,Asp.net Core,servicestack" />

Asp.net core Servicestack未经授权

Asp.net core Servicestack未经授权,asp.net-core,servicestack,Asp.net Core,servicestack,当使用servicestack utils调用远程API时,我收到“远程服务器返回错误:(401)未经授权”。它需要auth basic或JWT。从PostMan调用相同的API可以很好地工作 var json = $"http://localhost:5000/API/Proxy/IsValidGuidForSetupDevice?Guid=82870f2ca21148739bff0854b306415c".GetJsonFromUrl(requestFilter: webReq =>

当使用servicestack utils调用远程API时,我收到“远程服务器返回错误:(401)未经授权”。它需要auth basic或JWT。从PostMan调用相同的API可以很好地工作

var json = $"http://localhost:5000/API/Proxy/IsValidGuidForSetupDevice?Guid=82870f2ca21148739bff0854b306415c".GetJsonFromUrl(requestFilter: webReq => { webReq.AddBasicAuth("DevAdmin", "test1"); });
如果我在浏览器窗口中使用相同的用户权限调用下面的内容。我得到了一个有效的连接和一个承载令牌。用户\通行证良好

http://localhost:5000/auth/credentials?username=DevAdmin&password=test1&format=json
我是否在Util的请求过滤器中遗漏了什么?也许我应该换一种说法,使用不记名代币

使用fiddler跟踪后更新

我将代码移动到与servicestack服务相同的项目中的单元测试中。只是为了删除任何变量。
Fiddler告诉我:
不存在代理身份验证头。WWW Authenticate标头存在:基本领域=“/auth/apikey”获取http://localhost:5000/auth

原始视图

HTTP/1.1
Host: localhost:5000
Connection: keep-alive
Accept: application/json, text/javascript, */*; q=0.01
DNT: 1
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Referer: http://localhost:5000/
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cookie: ss-opt=perm; loginLevel=none; X-UAId=2; ss-id=XPc7ivcCrXuN5tEWwARG; ss-pid=TDeEjUiKck82foJGLGtX
玩弄它。我可以通过直接调用用户的URL和pass让它登录。最后,我取回了持票人代币,并且我能够传递它

var json = $"http://localhost:5000//auth/credentials?username=DevAdmin&password=test1".GetJsonFromUrl();
                var o = JsonObject.Parse(json);
                var token = o.Get<string>("bearerToken");
                var jsonr = $"http://localhost:5000/API/Proxy/IsValidGuidForSetupDevice?Guid=bc464658d6a640febbd53ba17c351919".GetJsonFromUrl(
                    requestFilter: webReq => { webReq.AddBearerToken(token); });
var json=$”http://localhost:5000//auth/credentials?username=DevAdmin&password=test1“.GetJsonFromUrl();
var o=JsonObject.Parse(json);
var token=o.Get(“BealerToken”);
var jsonr=$”http://localhost:5000/API/Proxy/IsValidGuidForSetupDevice?Guid=bc464658d6a640febbd53ba17c351919“.GetJsonFromUrl”(
requestFilter:webReq=>{webReq.AddBearerToken(令牌);});

我仍然不能用auth头在一次调用中调用它,我仍然不知道为什么。

每当诊断不同客户端的HTTP请求之间的不同行为时,您应该使用HTTP数据包嗅探器检查不同客户端之间的原始HTTP通信量,如或,或者,如果请求是从浏览器发出的,则可以使用其内置的Web网络检查器工具

查看和比较原始HTTP请求/响应是识别请求差异的最佳方法


扩展方法允许您将HTTP Basic Auth添加到Web请求中,如果您想改为发送JWT令牌,则可以使用该方法。

我正在从另一个托管服务调用我的servicestack服务。我不明白为什么auth不能与webReq.AddBasicAuth(“DevAdmin”、“test1”)一起工作;在身份验证之前,我无法获得不记名代币。从一个断开连接的服务中,我不能使用json服务客户端,它工作正常。今天晚些时候我将关注wireshark,谢谢我的支持question@SteveColeman您是否可以为邮递员发出的相同成功请求提供原始HTTP请求/响应头,并在其下方提供HTTP客户端发出的原始HTTP请求/响应头,以便我们可以清楚地看到并比较两个请求之间的差异。