如何在 Thinktecture Identity Server 中加密 JWT 令牌?

Posted

技术标签:

【中文标题】如何在 Thinktecture Identity Server 中加密 JWT 令牌?【英文标题】:How do I encrypt the JWT tokens in Thinktecture Identity Server? 【发布时间】:2014-06-16 04:27:05 【问题描述】:

Thinktecture.IdentityServer 是否支持对其发出的 JWT 令牌进行加密,例如保护令牌不被用于回复攻击?

如果是,客户端如何解密加密的令牌?

我尝试在 IdentityServer 常规配置中启用“需要令牌加密”,但是在尝试登录后,我在身份服务器网页上收到“没有可用的加密密钥”消息。

是有问题还是我缺少必需的设置?

【问题讨论】:

【参考方案1】:

加密是为了保密,而不是为了防止重放攻击。

Microsoft jwt 库不支持加密。我们依赖那个库。

【讨论】:

我还有一个问题是我使用abc.def.com/issue/oauth2/authorize 并且只使用javascript 将参数传递给身份服务器然后我可以获得访问令牌。我只需要使用 Base64Url 来解码这个访问令牌。我不想让用户或黑客可以轻松解码它。我们有可能加强这个安全问题吗?再次感谢。 这本身不是安全问题。令牌已签名,发行后无法更改。 Microsoft 的库不支持加密 - 因此,如果机密性对您来说是个问题 - 您不能使用当前的 JWT 实现。 你的意思是没有人不能更改令牌对吗?我尝试将访问令牌放入Google JWT decoder,然后我得到了三个patrs:header,claims,Signature。如果有人试图更改声明,那么他会将这些信息重新包装到新的访问令牌中。并将这个新令牌传递给我的 RP 客户端是不可能的?如果没有,我可以使用 header(x5t) 字符串和签名字符串在我的 RP 客户端验证新令牌吗? 这是不可能的——因为你会破坏签名。

以上是关于如何在 Thinktecture Identity Server 中加密 JWT 令牌?的主要内容,如果未能解决你的问题,请参考以下文章

.NET开源OpenID和OAuth解决方案Thinktecture IdentityServer

.NET开源OpenID和OAuth解决方案Thinktecture IdentityServer

如何使用 Thinktecture.IdentityServer.45 在令牌中返回多个身份?

在 web api 中验证 Thinktecture OAuth 令牌

是否有任何知名 thinktecture 的身份服务器替代品?

Thinktecture IdentityServer v3 指南 - 证书