3

我已经使用第一个示例设置了具有基本身份验证的 servicestack 服务,这里: https ://github.com/ServiceStack/ServiceStack/wiki/Authentication-and-authorization

这会自动设置一个路由:/auth/basic 但是,我找不到任何关于如何格式化对该 URL 的请求的信息或示例(变量/GET/POST/Auth Header 等)。

我能够使用基本身份验证凭据访问一个简单的服务,因此它们是活动且正确的。

我没有插入自定义身份验证,只是基本身份验证。

我努力了:

  • 使用 JsonServiceClient 通过 GET 或 Json POST 将 UserName 和 Password 变量发送到 /auth/basic,带有和不带有也包含用户和密码的 Auth 标头。

  • 使用浏览器发送带有用户/密码的 URL 参数的 GET 请求,或者作为http://user:pass@localhost:123/auth/basic

我总是得到“HTTP/1.1 401 Invalid BasicAuth credentials”。

我能找到的唯一示例涉及某种自定义身份验证,然后访问 /auth/credentials,但我想使用 /auth/basic

我查看了代码,看起来它读取了一个 Auth 标头,但该服务不接受一个。

我实际上是在尝试让它工作,所以我可以禁用它并验证它是否被禁用(我想对每个请求都要求基本身份验证)。

问题是:

  • 调用 /auth/basic 服务的正确方法是什么?我将采用 servicestack 客户端 API 示例、规范甚至是原始 http 请求!

  • 您如何完全禁用 /auth 服务?

非常感谢。

4

2 回答 2

1

调用 /auth/basic 服务的正确方法是什么?我将采用 servicestack 客户端 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);
于 2013-04-16T04:00:12.127 回答
-1

将以下内容放入 apphost 配置中似乎可以解决问题。

//Disable most things, including SOAP support, /auth and /metadata routes
SetConfig(new EndpointHostConfig()
{
    EnableFeatures = Feature.Json | Feature.Xml
});

我有点怀疑这对 /auth 有什么影响,因为它返回一个空响应,而大多数路由返回 404。

那么,这真的会禁用 /auth 功能吗?例如,如果有人对 /auth/credentials 提出了正确的请求,它还会返回一个空响应吗?

于 2013-04-15T05:08:52.360 回答