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

.net core 如何验证在JWT.io上使用KeyClope身份验证提供程序创建的HS256签名JWT令牌,.net-core,oauth,jwt,keycloak,hmac,.net Core,Oauth,Jwt,Keycloak,Hmac,我正在尝试验证上本地运行的身份验证提供程序生成的HS256 JWT令牌 KeyClock实例正在docker容器中的本地计算机上运行。我采用了与本答案中描述的步骤几乎相同的步骤(相反,采用RS算法,并按照所述工作): 我的验证过程非常简单: 1.)通过以下方式从我的本地docker Keyclope实例请求令牌(带邮递员): 发帖 2.)复制jwt.io的“编码”部分中的令牌内容 3.)我验证收割台和有效负载是否符合预期且正确 4.)我从我的KeyClope实例管理仪表板复制客户机机密,您可以在

我正在尝试验证上本地运行的身份验证提供程序生成的HS256 JWT令牌

KeyClock实例正在docker容器中的本地计算机上运行。我采用了与本答案中描述的步骤几乎相同的步骤(相反,采用RS算法,并按照所述工作):

我的验证过程非常简单:

1.)通过以下方式从我的本地docker Keyclope实例请求令牌(带邮递员): 发帖

2.)复制jwt.io的“编码”部分中的令牌内容

3.)我验证收割台和有效负载是否符合预期且正确

4.)我从我的KeyClope实例管理仪表板复制客户机机密,您可以在下图中看到参考:

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

我的核心问题是我在这里遗漏了什么?为什么当我应用预期的秘密时令牌会改变我是否应用了正确的秘密,即来自客户的秘密?如果我正确理解JWT infrastructre和standard,那么如果机密(应用了预期的算法)有效,它应该保持不变。我的理由是,在KeyClope上创建JWT的内容是特定的。我没有接触过Key斗篷上的HS256算法提供程序,在docker安装指南中使用Key斗篷时,一切都是默认的。与令牌和算法相关的设置设置为使用HS256,并且算法按照预期在JWT的头部分中正确指定,这可以在编码令牌粘贴到JWT.io的页面后进行验证

我需要这样做,因为我正试图在.NET核心web API应用程序中应用相同的JWT验证过程。我在那里遇到了整个问题,即在
System.IdentityModel.Tokens.JWT
JwtSecurityTokenHandle.ValidateSignature
方法中,该方法会导致无效签名并最终导致异常

另一方面,我正在使用邮递员访问令牌及其授权功能。配置如下图所示:

另一个附加说明是,我有一个用户“John”,它属于我的“Demo”领域。我使用他从KeyClope请求访问令牌。

您可以尝试使用。
如果要以这种方式验证该令牌,则需要将客户端身份验证器更改为“已签名的JWT with Client secret”,否则可以使用此“Gatekeeper”选项。您可以阅读更多信息。

要获取用于签名/验证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';
从component_config CC internal JOIN component C ON(CC.component_id=C.id)中选择值,其中C.realm_id='',provider_id='hmac generated',CC.name='secret';
如果使用生成的密码验证令牌,则签名应匹配。我不确定这个秘密是否可以通过用户界面获得,也许不能


来源:

你能发布jwt.io的截图吗?不幸的是,目前没有,但请理解我所说的正是发生的事情,编码部分完全改变了,就像keydove使用的密钥完全不同一样。你解决了这个问题吗?我也有同样的problem@ndtreviv我没有解决这个问题,我们转而使用KeyClope的默认设置,并将其默认的OAuth2设置与RSA一起使用,但我们复制了公钥RSA,并将其与BouncyCastle库一起使用以验证JWTs。这里没有回答您的问题,但生产服务是RHSO(它是KeyClope的扩展),在OpenShift集群中,我不能像那样访问它的数据库。不过,谢谢你的提示。