authentication - 如何使用 ServiceStack 进行基于 token 的身份验证

标签 authentication servicestack basic-authentication

我将如何使用 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 AuthProviderAPI 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/

相关文章:

具有继承的 ServiceStack DTO

c# - 如何使用 ServiceStack Redis API?

jquery - 使用 Cordova jquery ajax 调用未获得 401 授权,Upto Phonegap 1.4 工作正常

http - groovy - 下载带身份验证的文件

node.js - 在 GraphQL 服务器中实现访问控制的好的模式是什么?

authentication - 为 owin 身份验证实现自定义身份验证提供程序的推荐方法

Django 注册/登录不引导用户到 ?next=/my/url

javascript - Oracle jet 中的登录页面

c# - 建议在 'DTO' 响应/请求中收集 REST/服务设计

java - 如何在 Spring Boot 中使用 JWT 身份验证实现基本身份验证?