【问题标题】:In ServiceStack how can i use an externally issued JWT在 ServiceStack 中,我如何使用外部发布的 JWT
【发布时间】:2024-01-23 00:09:01
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# servicestack jwt claims-based-identity


    【解决方案1】:

    虽然 ServiceStack 包含它自己的 JWT Auth Provider,但您应该使用发布令牌的同一个库在 ServiceStack 中处理它。因此,如果它也用于创建令牌,请仅使用 ServiceStack 的内置 JWT AuthProvider。

    如果您改用IdentifyServer,您可以签出这个项目:

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

    或本指南:

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

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

    【讨论】: