我已经使用第一个示例设置了一个具有基本身份验证的servicestack服务,如下:https://github.com/ServiceStack/ServiceStack/wiki/Authentication-and-authorization
这会自动建立一个路由:/auth/basic然而,我找不到关于如何格式化请求到这个URL的任何信息或示例(变量/GET/POST/Auth Header等)。
我能够使用基本的身份验证凭证访问一个简单的服务,因此它们是活动的和正确的。
我没有自定义身份验证插入,只是基本的身份验证。
I have try:
-
使用JsonServiceClient通过GET或Json POST发送UserName和Password变量到/auth/basic,带和不带auth头也包含用户&通过。
-
使用浏览器发送带有user/pass URL参数的GET请求,或者作为
http://user:pass@localhost:123/auth/basic
我总是得到"HTTP/1.1 401 Invalid BasicAuth credentials"
我能找到的唯一示例涉及某种自定义身份验证,然后访问/auth/凭据,但我想使用/auth/basic
我看了一下代码,它看起来像是读取了一个认证头,但服务不接受。
我实际上试图得到这个工作,所以我可以禁用它,然后验证它是禁用的(我想要求每个请求的基本身份验证)。
问题是:
-
调用/auth/basic服务的正确方法是什么?我将采取一个服务栈客户端API的例子,规范甚至是一个原始的http请求!
-
如何禁用/auth服务?
调用/auth/basic服务的正确方法是什么?我将采取一个服务栈客户端API的例子,规范甚至是一个原始的http请求!
var client = new JsonServiceClient("http://localhost:56006/api");
var resp = client.Post(new Auth() { UserName = "TestUser", Password = "Password" });
- 假设您已经注册了
ICacheClient
和IAuthUserRepository
(并添加了一个用户帐户)
JSON格式看起来像这样,如果你调用到/auth/basic?format=json
{
"UserName": "admin",
"Password": "test"
"RememberMe": true
}
如何完全禁用/auth服务?
不要在配置中添加AuthFeature
插件。
你也可以删除插件
Plugins.RemoveAll(x => x is AuthFeature);
在apphost配置中放入以下内容似乎可以达到目的。
//Disable most things, including SOAP support, /auth and /metadata routes
SetConfig(new EndpointHostConfig()
{
EnableFeatures = Feature.Json | Feature.Xml
});
我有点怀疑这对/auth的作用,因为它返回一个空响应,而大多数路由返回404。
那么,这真的会禁用/auth功能吗?也就是说,如果有人向/auth/credentials发出了正确的请求,它是否仍然会返回一个空响应?