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

Posted

技术标签:

【中文标题】在 ServiceStack 中,我如何使用外部发布的 JWT【英文标题】:In ServiceStack how can i use an externally issued JWT 【发布时间】:2017-06-04 19:03:24 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案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 颁发的令牌的示例。

【讨论】:

以上是关于在 ServiceStack 中,我如何使用外部发布的 JWT的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ServiceStack 5.0 项目中使用来自 ServiceStack 4.0 的服务模型?

如何在 ServiceStack 中添加 protobuf

如何修改 ServiceStack.OrmLite 生成的 SQL?

在 SQL Server 和 ServiceStack.OrmLite 中使用架构名称

VS 2008上的ServiceStack.redis配置

如何使用 ServiceStack 访问响应标头