问题标签 [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 回答
2096 浏览

java - nimbus-jose-jwt 和 io.jsonwebtoken - 选择哪个 jjwt 库,为什么?

我希望在我的应用程序中实现jjwt并希望实现 jjwt,当我用谷歌搜索时,我发现这两个 maven 依赖项不确定要选择哪一个以及为什么?

另一个是

我用这两个 API 库玩过 POC,但不确定哪一个是可扩展的解决方案。我正在开发++++ ,所有后端代码都将部署在Spring MVCnodejs上,前端将部署在nodejs上Spring SecuritySpring RESTHATEOASCORSSpring BatchtomcatAngularJS

希望这些信息足以回答这个问题。

0 投票
1 回答
26601 浏览

jwt - JWT 令牌无效签名

我在我的应用程序中使用 JWT 进行登录身份验证过程。要生成我正在使用的令牌:

生成的令牌:

eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJlaG91c2VAZGV2ZXJldXgub3JnIn0.5SX-aU-p_RlfC3CZa-YXnQu_YR7RsG2Xfim3LOmlqxjAZrIyZiz0fYZwViHr113ms8TNvngcJcV07U4hK-RBZQ

当我在 jwt.io 调试器中解码这个令牌时,它告诉我一个无效的签名。我无法找到此失败的原因,因为我可以在我用来进行身份验证的有效负载中看到用户名。有人可以指出我的问题吗?我需要更改代码中的任何内容吗?

0 投票
1 回答
166 浏览

java - 如何使用 mscapi.RSAPrivateKey 进行 JWT 签名?

我不知道如何问这个问题,但我正在尝试使用来自网络的各种 Json Web Token 实现(无论是 java-jwt 还是 jjwt 等),它们都将 aRSAPrivateKey作为签名过程的一部分。

但是我遇到的问题是,显然mscapi.RSAPrivateKey没有提供与 the 相同的 API java.security.interfaces.RSAPrivateKey,当我尝试为其编写包装类时,我不知道如何编写 thegetEncoded或 the getFormat(我猜我应该返回“RS256”或类似的东西)功能。

  1. 我该如何包装mscapi.RSAPrivateKey
  2. mscapi.RSAPrivateKey转换为的正确方法是java.security.interfaces.RSAPrivateKey什么?
0 投票
1 回答
1189 浏览

java - 如何基于 URL 为 JWT 过滤器创建例外

我正在处理 JWT 身份验证。我想绕过(不允许通过 jwt 过滤器)提供的 URL。下面是代码片段。

在上面的代码中,我希望系统不要过滤 bypassURLs。如果我传递“/sayHello”,则不应将 JWTAuthenticationFilter 应用于此,而“/sayHello”以外的 URL 必须通过 JWTAuthenticationFilter。

我已经尝试过http.csrf().ignoringAntMatchers("/sayHello");一些正则表达式,但没有成功。请帮忙。

0 投票
1 回答
1622 浏览

java - 获取 Set 类型的对象来自智威汤逊?

我正在尝试使用 JJWT 库从 JSON Web 令牌中获取一些数据:https ://github.com/jwtk/jjwt

方法签名是这样的:

在声明属性中,我有一组字符串类型。

当尝试像这样从这个方法中获取

我收到以下错误

!io.jsonwebtoken.RequiredTypeException:预期值为类型:接口 java.util.Set,但为类 java.util.ArrayList

设置此声明时,类型为 Set

任何想法如何解决这个问题?

0 投票
1 回答
2900 浏览

android - 如何解码 SafetyNet JWS 响应?

我正在调查 Google 在我的 Android 应用程序中提供的 SafetyNet。

首先,我简单地调用了 SafetyNet attest API,然后 Base64 对这些部分进行了解码,如 Google 提供的示例中所示。

我提取 JWS 部分如下:-

我正在使用android.util.Base64解码部分和大部分时间解码完成。

有时我会收到此异常:-

解码签名部分时。

解码时看到这个间歇性错误我做错了什么?

然后我开始使用 JWT 库来解码令牌。

首先我试过group: 'com.auth0.android', name: 'jwtdecode', version: '1.1.1'

我试过的代码是

始终失败并出现以下错误

此异常似乎是由 Auth0 库无法解析标头4.1.6. "x5c" (X.509 Certificate Chain) Header格式引起的,这很奇怪,因为 JWS 规范明确指出该值由 JSON 数组表示:-

但是,如果我将相同的 jws 结果字符串复制并粘贴到纯 java 项目中并使用compile 'com.auth0:java-jwt:3.3.0'并使用此代码:-

Jws Token 解码成功。

我在我的 Android 应用程序中做错了什么,导致 auth0 android jwt 库按需要停止工作?

然后我在我的 Android 应用程序中尝试'io.jsonwebtoken:jjwt:0.9.0'了库。

当我执行此代码时:-

它失败了: -

我需要将什么签名密钥传递给 Jwts?我唯一拥有的密钥是我在 Google API 控制台中保存的 API 密钥,这是我应该使用的密钥吗?

当我通过它如下:

这失败了: -

解码和使用从 SafetyNet attest API 调用收到的 Jws 结果的正确方法是什么?

java.lang.IllegalArgumentException: bad base-64我从这个问题Base64: java.lang.IllegalArgumentException: Illegal character中发现了解决该问题的方法

只需在解码前替换 jws 令牌中的字符

0 投票
2 回答
6053 浏览

json - 即使提供正确的“签名”密钥,JWT 解码也会说无效签名

JWT 标记化让我发疯,或者我用错了。

为了测试并从“jjwt”开始,我正在创建一个简单的 jwt 令牌,下面是代码。

jwt 令牌是

eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJpZCIsInN1YiI6InN1YmplY3QiLCJpc3MiOiJpc3N1ZXIifQ._7QGamE-HvREDMJIgbfKEIRv76ZaxwIx2t3RaViSYzth4

正如预期的那样,在随后的执行中,我也得到了相同的 JWT。

eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJpZCIsInN1YiI6InN1YmplY3QiLCJpc3MiOiJpc3N1ZXIifQ._7QGE-HvREDMJIgbfKEIRv76ZaxwIx2t3RaViSYzth4

我正在使用 jwt.io 对其进行解码以进行测试-但很惊讶地看到 jwt 令牌被标记为无效签名,尽管在解码部分提供了正确的签名密钥。

这是 jwt.io 截图 - jwt.io-invalidsignature

任何指针......它在哪里变得混乱。

这篇文章不同于之前询问的用户忘记或不知道向 jwt.io 提供签名密钥的地方 PHP JWT 令牌无效签名
JWT 令牌无效签名

0 投票
0 回答
250 浏览

spring-boot - Spring Boot JWT 过滤器逻辑

我继承了一个写了一半的 Spring Boot REST 服务,它使用 Spring Sec 来实现基于 JWT 的 API 身份验证。Gradle 安全相关的依赖项是:

这个应用程序使用 Spring Sec 过滤器来实现整个身份验证解决方案,我正试图了解它是如何工作的,而对于我的生活来说,一些关键的事情是无法理解的:-/

这是代码:

我不明白的是:

  • 我可以假设 Spring Security 自动以正确的顺序定位这些过滤器吗?那就是:MyAppAuthenticationFilter 总是MyAppAuthorizationFilter?
  • 我真的被authenticationManager.authenticate(...)里面的电话弄糊涂了MyAppAuthenticationFilter#attemptAuthentication。如何creds.getUsename()cred.getPassword()存储在数据库(或 LDAP 或其他任何地方)中的用户信息进行比较?这个机制有什么关系UserDetailsServiceImpl#loadByUsername(String)
  • 所有的逻辑MyAppAuthorizationFilter#doFilterInternal对我来说都没有意义。对我来说,我将其解读为:检查请求中是否有 JWT 令牌标头。如果没有,请继续以任何方式提出请求(!!!!)。如果有,则继续检查 JWT 是否有一个有效用户作为其主题。如果请求中没有 JWT 标头,我们不应该阻止请求吗?
0 投票
0 回答
373 浏览

java - 尝试从 pem 文件生成公钥时出现 InvalidKeySpecException

我正在尝试从 publickey.pem 文件生成 RSAPublicKey ,但它抛出异常。

https://github.com/cerner/cds-hooks-sandbox/blob/master/ecpublickey.pem

无效的令牌 :::java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: 无效的密钥格式

如果我生成并保存自己的 pem 文件,它工作正常。

0 投票
1 回答
188 浏览

spring - Spring 中的 JWT 身份验证

我也是新的 Spring Core 和 Spring Security,但目前我正在解决必须通过 JWT 实现身份验证的任务。

我做了一些研究,找到了 2 个解决方案。

  1. 使用 Spring Security 进行身份验证,使用 OAuth2 模块
  2. 第二种选择是使用 JJWT 库。我发现的大多数指南都与 JJWT 相关。

你能告诉我什么更好用吗?为什么?谢谢。