问题标签 [jjwt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
20658 浏览

java - java.lang.IllegalArgumentException:如果指定的 JWT 是数字签名的,则必须指定签名密钥

我希望JWT在我的应用程序中实现这一点,因为我正在通过以下参考进行一些研发:https ://stormpath.com/blog/jwt-java-create-verify 。generateToken()当我尝试verifyToken()通过提取声明集时,我成功地实现了该方法。我不明白apiKey.getSecret()从哪里来。你能指导我吗?

下面的代码供参考:

我看到以下错误即将到来:

Maven依赖:

0 投票
1 回答
683 浏览

android - JJWT 库生成令牌以在 Android 上使用 Firebase 进行身份验证

我正在尝试实现 Linkedin Signin,然后使用 Firebase 进行身份验证。由于 Linkedin 不在当前的 Firebase 简单登录提供程序中,因此这样做的唯一方法是:

  1. 使用 Linkedin 登录,授予令牌,如此处所示。
  2. 获取 Linkedin 用户的 ID。
  3. 就像 Firebase 指示的那样制作一个令牌。
  4. 为了signInWithCustomToken就像这里所指示的那样,请按照这里程序进行:

    使用第三方 JWT 库创建自定义令牌

现在,这些我都做了。这是使用 JJWT 库生成令牌的代码:

但我的令牌格式不正确,因为:

iat Issued-at time 当前时间,自 UNIX 纪元以来的秒数

exp 过期时间 自 UNIX 纪元以来令牌过期的时间,以秒为单位。最多可以比 iat 晚 3600 秒。注意:这仅控制自定义令牌本身到期的时间。但是,一旦您使用 signInWithCustomToken() 让用户登录,他们将保持登录到设备,直到他们的会话无效或用户退出。

因为 Firebase 想要秒而不是日期。我不能在setIssuedAtor上传递长值setExpiration,因为需要 Date 对象作为参数。

那么,我怎样才能在那里放一个长值(秒)? 更新: 我找到了一种传递时间戳的方法,如下所示:

但我的令牌格式仍然不正确:

有谁知道这里有什么错误?我实在想不通。

0 投票
2 回答
1345 浏览

gwt - JSON 网络令牌 (JWT)

我有一个关于 JSON Web Token (JWT) 的一般性问题。

如果 JWT 通过黑客攻击或物理访问从客户端被盗(例如,它被存储为 cookie 或应用程序的数据库),它可以用于发送到服务器,服务器会认为它是合法用户。这个对吗?

是否有任何常见或标准的做法来防止这种情况发生,例如,通过从客户端一起发送设备/浏览器的类型或一些参考代码,服务器检查它是否与生成和存储 JWT 令牌的附加数据相匹配。(但是,我读到标准做法是不在服务器上存储任何内容。)

请告知,因为我需要实现 Java JWT (JJWT)、RESTful Java Jersey 和 Google Web Toolkit。(我一直在阅读这样的文档:[ https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage])。

谢谢!

0 投票
1 回答
251 浏览

java - 使用 JJWT 会导致“java.lang.SecurityException:Manifest 主要属性的签名文件摘要无效”

为什么在使用 Java JSON Web 令牌 (JJWT) 时出现“java.lang.SecurityException:Manifest 主要属性的签名文件摘要无效”错误?

我的代码是(从https://github.com/jwtk/jjwt以最简单的形式复制):

异常在“Key key = MacProvider.generateKey();”处停止。如果我注释掉这一行,它将停在下一行 ("String compactJws =...")

请帮忙!

0 投票
2 回答
1405 浏览

java - Java jjwt 为 JWT 创建无效 JSON

我肯定错过了什么。我正在使用 JJWT 库来创建 JWT。根据声明中的数据集,从库中创建的 JWT 不一致。我的代码:

此代码创建一个 JWT 并对其进行正确签名。但是,当负载被解码时,负载值并不总是有效的 JSON。大多数情况下,它缺少关闭}导致任何解析失败。如果Subject是 8 个字符,则可以正常工作。如果是 7 或 6 个字符,则为无效 JSON。或者,如果我在声明中添加其他标签,有时它会起作用,有时它不会。难道我做错了什么?

我也尝试过使用 Auth0 java-JWT 库并得到类似的结果,Payload 并不总是有效的 JSON。

0 投票
0 回答
94 浏览

java - 解析从泽西请求过滤器中客户端请求的 X-AUTH-TOKEN 标头检索到的正确签名的 JJWT 令牌时出现 SignatureException

我正在尝试解析从客户端请求的 X-AUTH-TOKEN 标头中检索的 JJWT 令牌中的声明。问题是解析会抛出 SignatureException,尽管令牌已正确签名。

这是我的泽西过滤器:

key像这样生成的地方String key = TextCodec.BASE64.encode(MacProvider.generateKey(SignatureAlgorithm.HS256).getEncoded()); 我验证了密钥在生成令牌和解析它时保持不变。但是解析时仍然存在 SignatureException。

0 投票
2 回答
187 浏览

java - JWT 在其网站上轻松解码

我正在使用 JWT api,我使用以下方法生成了一个令牌:

abd 秘密令牌前缀是字符串,但是它确实会生成令牌,但是当我将其复制到

https://jwt.io/#debugger

它确实对它进行解码并显示存储在其中的所有信息,我做错了什么还是它应该做的?这似乎根本不安全。

感谢您的回答

0 投票
1 回答
2910 浏览

java - Java - 如何将 HS256 与 JwtAccessTokenConverter 一起使用

我目前正在关注本教程,了解如何使用微服务实现 oauth2 身份验证和授权:

http://stytex.de/blog/2016/02/01/spring-cloud-security-with-oauth2/

我让它按原样工作,但我很难弄清楚如何使用 HS256 而不是当前正在使用的 RSA256 算法来实现 jwt。

我想我已经将其范围缩小到 Oauth2Configuration 类中身份验证服务器的这段代码:

更具体地说,我相信我必须用 jwtTokenEnhancer 方法改变一些东西。

我查看了文档,但没有看到任何与 HS256 相关的内容,因此将不胜感激任何形式的澄清。

0 投票
1 回答
1097 浏览

spring - JWT 和 Spring Security

我使用 Spring Boot 和 Spring Security 构建了一个 REST 服务进行身份验证。我对 Spring Boot 和 Spring Security 都很陌生。我在一个 JAR 文件中创建了一个身份验证模块。前端客户端向身份验证模块发送带有用户名和密码的请求。身份验证模块然后根据数据库对用户的详细信息进行身份验证。如果身份验证成功,则会创建一个 JWT,然后将其发送回客户端。用户名和角色被编码到 JWT 中。然后,当从单独的 JAR 文件中构建的其他 REST 服务端点请求资源时,JWT 用于验证用户。有几件事我不确定。

在 Spring Security 中,是否为每个用户创建了一个身份验证对象,以便可以同时对多个用户进行身份验证,或者每次进行一次身份验证并且只能登录一个用户?

认证对象的有效期是多久?在身份验证模块中创建 JWT 后,我应该“注销”/删除身份验证成功,还是在请求完成后它会自行处理?对于资源端点(不是身份验证端点),一旦我验证了 JWT,有没有办法在身份验证对象中设置身份验证成功?同样,一旦验证了 JWT,我可以在身份验证对象中设置角色吗?

我的代码基于此示例https://auth0.com/blog/securing-spring-boot-with-jwts/。我已将其拆分为不同的 JAR 以对 JWT 进行身份验证和验证(我正在资源端点中进行验证)。我还添加了 JDBC 身份验证,而不是内存身份验证。

0 投票
2 回答
6483 浏览

java - 如何从 io.jsonwebtoken.Claims 转换为 java.util.Map?

我正在使用Maven 依赖项处理JWT令牌。io.jsonwebtoken

我能够成功创建带有自定义有效负载的 JWT 令牌。

现在,当我要去的parse时候,我需要Map<String, Object>一个对象,它包含在创建时添加的所有自定义有效负载,但不幸的是我无法完成它。

我正在使用以下代码来解析它,

现在,我有io.jsonwebtoken.Claims,但不知道如何将其转换io.jsonwebtoken.Claimsjava.util.Map<String,Object>

但是我试着用这个来知道(几乎看起来像我想要的):-

但是我需要Map<String,Object>

任何帮助将不胜感激.. !!