问题标签 [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.
java - java.lang.IllegalArgumentException:如果指定的 JWT 是数字签名的,则必须指定签名密钥
我希望JWT
在我的应用程序中实现这一点,因为我正在通过以下参考进行一些研发:https ://stormpath.com/blog/jwt-java-create-verify 。generateToken()
当我尝试verifyToken()
通过提取声明集时,我成功地实现了该方法。我不明白apiKey.getSecret()
从哪里来。你能指导我吗?
下面的代码供参考:
我看到以下错误即将到来:
Maven依赖:
android - JJWT 库生成令牌以在 Android 上使用 Firebase 进行身份验证
我正在尝试实现 Linkedin Signin,然后使用 Firebase 进行身份验证。由于 Linkedin 不在当前的 Firebase 简单登录提供程序中,因此这样做的唯一方法是:
- 使用 Linkedin 登录,授予令牌,如此处所示。
- 获取 Linkedin 用户的 ID。
- 就像 Firebase 指示的那样制作一个令牌。
- 为了
signInWithCustomToken
就像这里所指示的那样,请按照这里的程序进行:使用第三方 JWT 库创建自定义令牌
现在,这些我都做了。这是使用 JJWT 库生成令牌的代码:
但我的令牌格式不正确,因为:
iat Issued-at time 当前时间,自 UNIX 纪元以来的秒数
exp 过期时间 自 UNIX 纪元以来令牌过期的时间,以秒为单位。最多可以比 iat 晚 3600 秒。注意:这仅控制自定义令牌本身到期的时间。但是,一旦您使用 signInWithCustomToken() 让用户登录,他们将保持登录到设备,直到他们的会话无效或用户退出。
因为 Firebase 想要秒而不是日期。我不能在setIssuedAt
or上传递长值setExpiration
,因为需要 Date 对象作为参数。
那么,我怎样才能在那里放一个长值(秒)? 更新: 我找到了一种传递时间戳的方法,如下所示:
但我的令牌格式仍然不正确:
有谁知道这里有什么错误?我实在想不通。
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])。
谢谢!
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 =...")
请帮忙!
java - Java jjwt 为 JWT 创建无效 JSON
我肯定错过了什么。我正在使用 JJWT 库来创建 JWT。根据声明中的数据集,从库中创建的 JWT 不一致。我的代码:
此代码创建一个 JWT 并对其进行正确签名。但是,当负载被解码时,负载值并不总是有效的 JSON。大多数情况下,它缺少关闭}
导致任何解析失败。如果Subject
是 8 个字符,则可以正常工作。如果是 7 或 6 个字符,则为无效 JSON。或者,如果我在声明中添加其他标签,有时它会起作用,有时它不会。难道我做错了什么?
我也尝试过使用 Auth0 java-JWT 库并得到类似的结果,Payload 并不总是有效的 JSON。
java - 解析从泽西请求过滤器中客户端请求的 X-AUTH-TOKEN 标头检索到的正确签名的 JJWT 令牌时出现 SignatureException
我正在尝试解析从客户端请求的 X-AUTH-TOKEN 标头中检索的 JJWT 令牌中的声明。问题是解析会抛出 SignatureException,尽管令牌已正确签名。
这是我的泽西过滤器:
key
像这样生成的地方String key = TextCodec.BASE64.encode(MacProvider.generateKey(SignatureAlgorithm.HS256).getEncoded());
我验证了密钥在生成令牌和解析它时保持不变。但是解析时仍然存在 SignatureException。
java - JWT 在其网站上轻松解码
我正在使用 JWT api,我使用以下方法生成了一个令牌:
abd 秘密令牌前缀是字符串,但是它确实会生成令牌,但是当我将其复制到
它确实对它进行解码并显示存储在其中的所有信息,我做错了什么还是它应该做的?这似乎根本不安全。
感谢您的回答
java - Java - 如何将 HS256 与 JwtAccessTokenConverter 一起使用
我目前正在关注本教程,了解如何使用微服务实现 oauth2 身份验证和授权:
http://stytex.de/blog/2016/02/01/spring-cloud-security-with-oauth2/
我让它按原样工作,但我很难弄清楚如何使用 HS256 而不是当前正在使用的 RSA256 算法来实现 jwt。
我想我已经将其范围缩小到 Oauth2Configuration 类中身份验证服务器的这段代码:
更具体地说,我相信我必须用 jwtTokenEnhancer 方法改变一些东西。
我查看了文档,但没有看到任何与 HS256 相关的内容,因此将不胜感激任何形式的澄清。
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 身份验证,而不是内存身份验证。
java - 如何从 io.jsonwebtoken.Claims 转换为 java.util.Map?
我正在使用Maven 依赖项处理JWT
令牌。io.jsonwebtoken
我能够成功创建带有自定义有效负载的 JWT 令牌。
现在,当我要去的parse
时候,我需要Map<String, Object>
一个对象,它包含在创建时添加的所有自定义有效负载,但不幸的是我无法完成它。
我正在使用以下代码来解析它,
现在,我有io.jsonwebtoken.Claims
,但不知道如何将其转换io.jsonwebtoken.Claims
为java.util.Map<String,Object>
但是我试着用这个来知道(几乎看起来像我想要的):-
但是我需要Map<String,Object>
任何帮助将不胜感激.. !!