JWT for SSO(由ZenDesk使用)

rco*_*tna 2 single-sign-on jwt

我基于令牌的身份验证系统的经验总是涉及令牌交换系统.我们想要对用户进行身份验证的应用程序(通过请求)接收令牌,然后将此令牌安全地传输到身份验证系统的令牌交换服务,该服务验证令牌并将用户信息返回给应用程序.

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

https://support.zendesk.com/hc/en-us/articles/203663816-Setting-up-single-sign-on-with-JWT-JSON-Web-Token-

这里的PHP实现示例:https://github.com/zendesk/zendesk_jwt_sso_examples/blob/master/php_jwt.php

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

我的问题是:如果有人要捕获请求,并且他们对其进行解码以获取用户信息和HMAC,他们就不能将其发送到服务器场以开始迭代秘密密钥,直到他们弄清楚它是什么(即:使HMAC匹配)?然后,一旦掌握了密钥,您就可以向ZenDesk作为首席执行官进行身份验证,并提出荒谬的请求吗?

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

fra*_*ale 5

你是完全正确的.你缺少的是 - 假设用于HMAC的密钥哈希是安全的,并且密钥是强随机且足够长的 - 强制密钥是不可行的.