在 ServiceStack 中,我如何使用外部发布的 JWT

In ServiceStack how can i use an externally issued JWT

我正在 .net/mono 上使用 c# 开发一个包含设备和云服务的 IOT 类型项目。云服务使用 IdentityServer3 处理身份验证和声明,我成功地提供了带有声明的令牌。

当用户尝试与该设备交互时,该设备将没有互联网连接,因此可以从云端获取 JWT 令牌并将其传递到完全断开连接的系统。 JWT 的签名密钥在配置时预先共享,因此它将能够验证令牌的完整性。

在 servicestack 中支持 JWT,但我无法找到如何以填充 AuthSession 的方式将 JWT 令牌与请求一起传递。谁能提供指导:

  1. 如何配置 ServiceStack 以识别验证和解压 JWT 内容而不是发行者?我找不到这样的例子。我试过 JsonClient .BearerToken 和 .SetTokenCookie 无济于事。
  2. 如果目前无法实现 1,我能否连接到所提供的扩展点以创建所需的功能,如果可以,您能否指导我从哪里开始。

虽然 ServiceStack 包含它自己的 JWT Auth Provider,但您应该使用发行令牌的同一库在 ServiceStack 中处理它。因此,如果 ServiceStack 的 built-in JWT AuthProvider 也被用于创建令牌,则仅使用它。

如果您使用的是 IdentifyServer,您可以签出这个项目:

https://github.com/MacLeanElectrical/servicestack-authentication-identityserver/

或本指南:

http://estynedwards.com/blog/2016/01/30/ServiceStack-IdentityServer-Angular/

有关如何处理 IdentifyServer 颁发的令牌的示例。