我将如何使用 ServiceStack 实现以下场景?
初始请求转到 http://localhost/auth
具有如下定义的 Authorization header :Authorization: Basic skdjflsdkfj=
IAuthProvider 实现针对用户存储进行验证并返回 session token 作为响应正文 (JSON)。
客户端使用此 token 并针对后续请求(如 http://localhost/json/reply/orders
)重新发送它像这样使用 Authorization header :Authorization: BasicToken <TokenFromPreviousSuccessfulLogin>
使用 AuthenticateAttribute
我想标记我的服务以使用身份验证。
我应该如何为后续请求实现 token 验证?
我应该如何实现 IAuthProvider
提供 token ?
我将如何注册提供者等?使用 RequestFilters 或使用 AuthFeature
?
最佳答案
ServiceStack的JWT AuthProvider和 API Key AuthProvider两者都使用基于 token 的身份验证。
否则 BasicAuth Provider是一个非常简单的类,它只是从 BasicAuth header 中提取用户名和密码并对其进行评估:
public override object Authenticate(...)
{
var httpReq = authService.RequestContext.Get<IHttpRequest>();
var basicAuth = httpReq.GetBasicAuthUserAndPassword();
if (basicAuth == null)
throw HttpError.Unauthorized("Invalid BasicAuth credentials");
var userName = basicAuth.Value.Key;
var password = basicAuth.Value.Value;
return Authenticate(authService, session, userName, password, request.Continue);
}
如果您想提供增强的行为,我将简单地继承此类检查
Authorization: BasicToken
header ,如果存在,则使用否则调用 base.Authenticate(...)
方法来执行初始验证。
关于authentication - 如何使用 ServiceStack 进行基于 token 的身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16673988/