首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >服务堆栈UnAuthorized

服务堆栈UnAuthorized
EN

Stack Overflow用户
提问于 2019-11-18 04:51:55
回答 1查看 119关注 0票数 0

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

代码语言:javascript
复制
var json = $"http://localhost:5000/API/Proxy/IsValidGuidForSetupDevice?Guid=82870f2ca21148739bff0854b306415c".GetJsonFromUrl(requestFilter: webReq => { webReq.AddBasicAuth("DevAdmin", "test1"); });

如果我使用相同的用户在浏览器窗口中调用下面的函数。我得到了一个有效的连接和一个持有者令牌。用户通行证是好的。

代码语言:javascript
复制
http://localhost:5000/auth/credentials?username=DevAdmin&password=test1&format=json

我是不是在Util的请求过滤器中遗漏了什么?也许我应该以不同的方式调用它,并使用不记名令牌?

使用fiddler跟踪后更新

我将代码移到了与servicestack服务相同的项目中的单元测试中。只是为了删除所有变量。

Fiddler向我展示了:No Proxy-Authenticate Header is present. WWW-Authenticate Header is present: Basic realm="/auth/apikey" GET http://localhost:5000/auth

原始视图

代码语言:javascript
复制
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

玩弄它。我可以通过直接调用user的URL并传递来让它登录。我拿回了持有者令牌,我就可以传递它了。

代码语言:javascript
复制
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); });

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

EN

回答 1

Stack Overflow用户

发布于 2019-11-19 00:49:58

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

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58905090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档