如何从服务栈基本身份验证请求会话,在/auth/basic



我已经使用第一个示例设置了一个具有基本身份验证的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" });
  • 假设您已经注册了ICacheClientIAuthUserRepository(并添加了一个用户帐户)

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发出了正确的请求,它是否仍然会返回一个空响应?

最新更新