Single sign on 用于SSO的JWT(由ZenDesk使用)

Single sign on 用于SSO的JWT(由ZenDesk使用),single-sign-on,jwt,Single Sign On,Jwt,我在基于令牌的身份验证系统方面的经验始终涉及令牌交换系统。我们希望对用户进行身份验证的应用程序接收到一个令牌(通过请求),然后将该令牌安全地传输到身份验证系统的令牌交换服务,该服务验证令牌并将用户信息返回给应用程序 我最近遇到了ZenDesk的SSO实现,它使用JWT,但没有令牌交换/验证步骤 此处的PHP实现示例: 基本上,编码的用户信息通过URL与HMAC一起传递,以对请求进行签名。ZenDesk端将解码、验证HMAC是否有效(使用共享密钥),并根据请求的用户信息立即对用户进行身份验证。没

我在基于令牌的身份验证系统方面的经验始终涉及令牌交换系统。我们希望对用户进行身份验证的应用程序接收到一个令牌(通过请求),然后将该令牌安全地传输到身份验证系统的令牌交换服务,该服务验证令牌并将用户信息返回给应用程序

我最近遇到了ZenDesk的SSO实现,它使用JWT,但没有令牌交换/验证步骤

此处的PHP实现示例:

基本上,编码的用户信息通过URL与HMAC一起传递,以对请求进行签名。ZenDesk端将解码、验证HMAC是否有效(使用共享密钥),并根据请求的用户信息立即对用户进行身份验证。没有对生成令牌的系统进行回调以确保其有效

我的问题是:如果有人捕获请求,并对其进行解码以获取用户信息和HMAC,他们难道不能将其发送到服务器场,开始迭代密钥,直到他们弄清楚它是什么(即:使HMAC匹配)?一旦你有了钥匙,你就可以向ZenDesk认证为CEO,然后提出荒谬的要求


希望我遗漏了一些东西,因为这种SSO方法是我见过的最简单的方法。

你说得完全正确。您缺少的是,假设用于HMAC的密钥散列是安全的,并且密钥是强随机的,并且足够长,那么强制执行密钥是不可行的