我已经设置了一个发布JWT令牌的身份验证服务器。
我现在已经设置了我的第一个资源服务,它将使用请求中提供的承载令牌进行身份验证/授权。这项服务不是我的auth服务器,它是资源服务器。
我将ServiceStack JwtAuthProviderReader
添加到我的资源服务中:
Plugins.Add(new AuthFeature(() => new AuthUserSession(),
new IAuthProvider[] {
new JwtAuthProviderReader() {
HashAlgorithm = "HS256",
AuthKeyBase64 = AuthSettings.JwtAuthKeyBase64
},
}));
为什么我的资源服务器现在拥有所有auth服务器端点,我使用的是JwtAuthProviderReader
,而不是我的身份验证服务所使用的JwtAuthProvider
。 As the documentation states,我的资源服务只验证令牌。
答案 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 { ... }