为什么使用ServiceStack JwtAuthProviderReader将auth端点添加到我的资源API?

时间:2017-11-17 00:33:38

标签: servicestack

我已经设置了一个发布JWT令牌的身份验证服务器。

我现在已经设置了我的第一个资源服务,它将使用请求中提供的承载令牌进行身份验证/授权。这项服务不是我的auth服务器,它是资源服务器。

我将ServiceStack JwtAuthProviderReader添加到我的资源服务中:

Plugins.Add(new AuthFeature(() => new AuthUserSession(),
new IAuthProvider[] {
    new JwtAuthProviderReader() {
        HashAlgorithm = "HS256",
        AuthKeyBase64 = AuthSettings.JwtAuthKeyBase64
    },
}));

为什么我的资源服务器现在拥有所有auth服务器端点,我使用的是JwtAuthProviderReader,而不是我的身份验证服务所使用的JwtAuthProviderAs the documentation states,我的资源服务只验证令牌。

enter image description here

1 个答案:

答案 0 :(得分:1)

这些不仅限于JWT AuthProvider,它们是ServiceStack的内置Auth服务,用于处理任何ServiceStack身份验证,即在注册ServiceStack的AuthFeature插件时。

如果您没有使用分配/取消分配角色服务,可以使用以下命令禁用它们:

Plugins.Add(new AuthFeature(...) {
    IncludeAssignRoleServices = false
});

您还可以通过AppHost的构造函数中的dynamically adding Exclude attributes隐藏服务,使其不显示在元数据页面和服务中,例如:

public AppHost() : base("MyApp", typeof(MyServices).Assembly)
{
    typeof(Authenticate)
        .AddAttributes(new ExcludeAttribute(Feature.Metadata));
}

这相当于在Request DTO上添加属性,例如:

[Exclude(Feature.Metadata)]
public class Authenticate { ... }