single-sign-on - SSO 的 JWT(由 ZenDesk 使用)

标签 single-sign-on jwt

我在基于 token 的身份验证系统方面的经验一直涉及到 token 交换系统。我们要在其中对用户进行身份验证的应用程序会收到 token (通过请求),然后将此 token 安全地传输到身份验证系统的 token 交换服务,该服务会验证 token 并将用户信息返回给应用程序。

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

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

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

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

希望我遗漏了什么,因为这种 SSO 方法是我见过的最简单的方法。

最佳答案

你完全正确。您缺少的是 - 假设用于 HMAC 的 key 哈希是安全的并且 key 是强随机的并且足够长 - 暴力破解 key 是不可行的。

关于single-sign-on - SSO 的 JWT(由 ZenDesk 使用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29308107/

相关文章:

java - 如何验证并重定向到外部应用程序以进行 SSO?

single-sign-on - Ping Federate 6.1 服务提供商的 SAML 2.0 断言响应 URL

Spring Security OAuth - 它可以使用来自 Keycloak 的 JWT token 吗

python - 如何将 JSON Web token (JWT) 传递给获取请求

java - 如何从 io.jsonwebtoken.Claims 转换为 java.util.Map<String,Object>?

asp.net-identity - 如何使用 Identity Server 实现 SSO?

jakarta-ee - 使用信任关联拦截器 (TAI) 获取 LTPA2 token

jwt - 使用Postman和JWT的JHipster身份验证

java - 在 Java 中创建 JSON Web token

azure - 使用 Office 加载项设置 SSO,由于域不匹配,无法使用 SSO 资源 ""