我最近升级ServiceStack时遇到问题。我将不同的版本分开,以找到从v4.0.21开始的问题。所有早期版本都可以使用,所有更高版本都不起作用。它只发生在我的身份验证调用(使用Basic Auth)。此外,它只发生在我通过iPad应用程序进行身份验证调用时。由于我们没有对我们的iPad应用程序进行任何更改,因此我知道ServiceStack发生了一些问题,导致了我们的问题。我查看了发行说明,发现由于添加了Windows Auth Provider和其他一些新的OAuth提供程序,auth功能发生了很多变化。
我需要对发布说明中没有看到的设置进行一些更改吗?还有其他人遇到过这个问题吗?
以下是我们在global.asax.cs中注册ss-auth的代码:
public override void Configure(Funq.Container container)
{
SetConfig(new HostConfig {
EnableFeatures = Feature.All.Remove(Feature.Metadata),
AllowJsonpRequests = false,
HandlerFactoryPath = "api"
});
var authFeature = new AuthFeature(
() => new AuthUserSession(),
new IAuthProvider[] {
new MyBasicAuthProvider() // override of BasicAuthProvider
}
);
authFeature.HtmlRedirect = null;
authFeature.IncludeAssignRoleServices = false;
Plugins.Add(authFeature);
container.Register<ICacheClient>(new AzureCacheClient("default"));
var userRepository = new InMemoryAuthRepository();
container.Register<IUserAuthRepository>(userRepository);
}
以下是请求网址:
POST https://vh.azurewebsites.net/api/auth?format=json
以下是与HTTP请求一起使用的标头:
Host: vh.azurewebsites.net
Authorization: Basic dXN2dONjb3R0OnBhc3N3b3Jk
Accept-Encoding: gzip, deflate
Accept: application/json
Cookie: ss-opt=perm
Accept-Language: en;q=1, fr;q=0.9, de;q=0.8, ja;q=0.7, nl;q=0.6, it;q=0.5
Content-Length: 0
Connection: keep-alive
Proxy-Connection: keep-alive
User-Agent: mHealth/QA (iPad; iOS 7.1.1; Scale/1.00)
答案 0 :(得分:1)
auth提供程序已更改,现在可以使用隐式默认/auth
to tell if a user is authenticated如果用户已经过身份验证将返回会话信息,如果不是401 Unauthorized
则会返回
您需要为您要进行身份验证的身份验证提供程序调用显式/auth/{provider}
Auth Provider Route,而基本身份验证为/auth/basic
。