你如何从/ auth / basic的servicestack基本认证请求会话?

时间:2013-04-15 02:07:39

标签: authentication servicestack basic-authentication

我使用第一个示例设置了一个带有基本身份验证的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标头。通过。

  • 使用浏览器发送带有用户/通道的网址参数的GET请求,或http://user:pass@localhost:123/auth/basic

我总是得到“HTTP / 1.1 401无效的BasicAuth凭证”。

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

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

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

问题是:

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

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

非常感谢。

2 个答案:

答案 0 :(得分: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(并添加了用户帐户)

如果您调用/auth/basic?format=json

,JSON格式如下所示
{
  "UserName": "admin",
  "Password": "test"
  "RememberMe": true
}

如何完全禁用/ auth服务?

请勿将AuthFeature插件添加到配置中。

您还可以remove plugins

Plugins.RemoveAll(x => x is AuthFeature);

答案 1 :(得分:-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的正确请求,它是否仍会返回空响​​应?