当前位置: 首页 > 知识库问答 >
问题:

如何验证在JWT.io上使用Keycloak身份验证提供程序创建的HS256签名JWT令牌

司徒锐进
2023-03-14

我试图验证在https://JWT.io上使用本地运行的KeyCloak身份验证提供程序生成的HS256 JWT令牌。

KeyCloack实例在我的本地机器上的docker容器中运行。我已经应用了与本答案中描述的几乎相同的步骤(相反,它应用了RS算法,并且按照描述的方式工作):https://stackoverflow.com/a/55002225/1534753

我的验证过程非常简单:

4.)我从我的KeyCloak实例管理仪表板复制了客户端机密,您可以在下面的图像中看到引用:

5.)我将秘密粘贴到jwt.io上的“验证签名”部分,“编码”令牌部分发生更改,因此导致无效签名和无效(即。不同)令牌。

我的核心问题是我在这里遗漏了什么?为什么当我应用预期的秘密时,令牌会改变!?我运用的秘密是对的吗,来自客户的秘密?如果我正确理解JWT基础结构和标准,那么如果秘密(应用预期的算法)是有效的,它应该保持不变。我的理由是,在KeyCloak上创建JWT是特定的。我没有接触HS256算法提供程序在KeyCloak上,一切都是默认使用docker安装指南使用KeyCloak。与令牌和算法相关的设置被设置为使用HS256,并且在JWT的header部分中正确地指定了预期的算法,在将编码的令牌粘贴到jwt.io页面中后,可以验证该算法。

还有一点要注意的是,我有一个用户“John”,它属于我的“演示”领域。我用他向KeyCloak请求访问令牌。

共有1个答案

仲孙俊贤
2023-03-14

若要获取用于签名/验证HS256令牌的秘密,请尝试使用以下SQL:

SELECT value FROM component_config CC INNER JOIN component C ON(CC.component_id = C.id) WHERE C.realm_id = '<realm-id-here>' and provider_id = 'hmac-generated' AND CC.name = 'secret';

如果使用得到的秘密来验证令牌,签名应该匹配。我不确定这个秘密是否可以通过UI使用,可能不会。

来源:https://keycloak.discourse.group/t/invalid-signature-with-hs256-token/3228/3

 类似资料:
  • 这就是我面临的问题, https://play.golang.org/p/Pq8xHAERD57 如果运行上述代码,第一个令牌JWKS对不会验证签名,但第二个会验证!但两者都在jwt中验证签名。木卫一。有什么办法可以用一个Golang图书馆来验证它吗? 奇怪的是如果你拿了失败的代币?我调试后发现函数func VerifyPKCS1v15(pub*PublicKey,hash crypto.hash

  • 问题内容: 在我的Java EE6 REST服务上,我想使用身份验证令牌从移动设备登录,用户将发送其用户名,密码,服务器将发回令牌,该令牌将用于授权用户对给定的进一步请求时间。 我可以这样简单地自己创建令牌吗?(我想我不需要加密此令牌,因为我将使用HTTPS。) 还是有一种更标准的方式来创建我的令牌?也许它存在于API之一 问题答案: 您有效地提出的方案允许客户端无限制地访问您的服务。初始登录后,

  • 现在,我们有了集成执行器。我希望我的执行器endpoint可以通过基本认证在浏览器中访问。 为此,我用@order(1)添加了WebSecurityConfigurerAdapter的一个实现。它在浏览器上工作得很好。但是,当我从angualar应用程序调用登录url时,它为/oauth/token url给出了401个未经授权的错误,因此我无法从ui应用程序登录。 任何帮助将感谢解决此错误。 类

  • 我目前正在使用Vapor开发Swift后端。我的iOS客户端使用新的iOS 13功能“使用Apple登录”。当用户登录时,我会得到一个身份令牌(访问令牌),这是一个由Apple签名的有效JWT令牌。这将在所有正在进行的通信中发送到服务器,以验证服务器提供的某些路由。 在服务器上,我想通过验证令牌签名来验证发送的令牌是否确实由Apple签名,并且不是由某些恶意用户专门创建的。Apple提供了一个HT

  • 我正在开发一个具有自己的身份验证和授权机制的REST应用程序。我想使用JSON Web Tokens进行身份验证。以下是有效且安全的实现吗? < li >将开发一个REST API来接受用户名和密码并进行认证。要使用的HTTP方法是POST,因此没有缓存。此外,在传输时还会有安全SSL < li >在认证时,将创建两个JWTs访问令牌和刷新令牌。刷新令牌将具有更长的有效期。这两个令牌都将写入coo

  • “laravel/框架”:“5.7.*” “tymon/jwt认证”:“开发人员开发” 我正在尝试创建一个添加了自定义声明的JWT令牌,而不使用auth(这意味着我不希望从凭据创建令牌)。这是为了创建不需要登录的令牌,例如忘记/重置密码等。 使用Tymon/JWTAuth(https://github.com/tymondesigns/jwt-auth)由于最新的Laravel存在问题,因此建议加