从内部调用安全的 ServiceStack 服务
Calling secure ServiceStack service from within
我的主要服务使用 [Authenticate]
属性修饰,因此任何连接尝试(这很重要)都需要客户端身份验证。
[Authenticate]
public class ServerEventsService : Service
{
...
}
有没有什么方法可以从服务器内部调用服务方法(比如在 self\web 主机 类 中)并绕过身份验证?据我所知,ServiceStack 中没有 [AllowAnonymous]
东西。如果没有办法绕过身份验证过程——我该如何验证此类请求?这里唯一的方法是在我的服务器主机中创建另一个 ServiceClient 吗?
是的,您可以像任何其他依赖项一样直接调用 ServiceStack 服务,方法是从 IOC 解析它并直接调用它:
using (var service = base.ResolveService<ServerEventsService>())
{
var response = service.Post(new Request { ... });
}
另一种方法 API 是执行 Request DTO,ServiceStack 将找到并执行适当的 Post
或 Any
使用提供的 Request DTO 定义的服务:
base.ExecuteRequest(new Request { ... });
此外,请参阅有关无需用户密码即可impersonate users for Internal Requests的文档。
我的主要服务使用 [Authenticate]
属性修饰,因此任何连接尝试(这很重要)都需要客户端身份验证。
[Authenticate]
public class ServerEventsService : Service
{
...
}
有没有什么方法可以从服务器内部调用服务方法(比如在 self\web 主机 类 中)并绕过身份验证?据我所知,ServiceStack 中没有 [AllowAnonymous]
东西。如果没有办法绕过身份验证过程——我该如何验证此类请求?这里唯一的方法是在我的服务器主机中创建另一个 ServiceClient 吗?
是的,您可以像任何其他依赖项一样直接调用 ServiceStack 服务,方法是从 IOC 解析它并直接调用它:
using (var service = base.ResolveService<ServerEventsService>())
{
var response = service.Post(new Request { ... });
}
另一种方法 API 是执行 Request DTO,ServiceStack 将找到并执行适当的 Post
或 Any
使用提供的 Request DTO 定义的服务:
base.ExecuteRequest(new Request { ... });
此外,请参阅有关无需用户密码即可impersonate users for Internal Requests的文档。