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

java - 授权一次后不需要token

我正在尝试使用 JWT 令牌实现基于令牌的身份验证。我为此使用 JJWT 库。

这是我的安全配置

我正在使用弹簧靴。我通过以下方式调用此 api 来生成令牌。

使用令牌我调用我的其余 API,像这样

现在,每当我在没有令牌的情况下再次调用我之前调用的相同 API 时,都会显示数据。我怎样才能阻止这种情况发生?如何使令牌成为强制性的,以便仅在令牌存在时才显示数据? 这发生在我使用 POSTMAN 调用 API 时。

0 投票
0 回答
1741 浏览

java - 使用 Java Web 令牌时出现 NoClassDefFoundError

我正在尝试了解 Java Web 令牌的用法,所以我想制作一个简单的 Web 应用程序。我只是创建了一个使用 jwt 的简单登录系统,但我明白了java.lang.NoClassDefFoundError: io/jsonwebtoken/Jwts。这是我的相关代码:

连接.java:

Jjwt.java:

String jwt = Jwts.builder()Jjwt.java 类中,我得到了上面提到的错误。我添加了所有必要的依赖项,这是我的 pom.xml(顺便说一下,这是一个 Maven 项目):

我在哪里做错了?


编辑:当我添加以下依赖项时:

现在它java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonProcessingException在同一点给出。

0 投票
1 回答
1228 浏览

java - JWT 身份验证应用程序中是否需要 SecurityContextHolder?

我正在 Spring Boot 中开发应用程序,我需要在那里进行 jwt 身份验证。我决定使用那个 github 项目,但是当我查看代码时,我不明白 SecurityContextHolder 的含义。

以下是使用它的 2 个类:

AuthenticationRestController.java

JwtAuthenticationTokenFilter.java

你能告诉我 SecurityContextHolder 的目的是什么吗?我想要没有会话的无状态身份验证。所以我只需要生成 jwt 并在请求之前检查它。

这个 git 项目也有禁用会话:

我已经尝试使用 SecurityContextHolder 删除代码,并且应用程序仍然可以正常工作。

感谢您的回答。

0 投票
0 回答
1321 浏览

azure - 如何在 Java / JJWT 中为 Office 365 的 OAuth 客户端凭据签署 JWT 令牌?“客户端断言包含无效签名”

我正在遵循本指南以了解客户端凭证流程和本指南以了解所需的 JWT 令牌。最终目标是通过 Microsoft Graph API 访问日历信息。对 Graph API 的调用需要使用从 Microsoft 令牌端点获取的访问令牌进行身份验证。

但是调用令牌端点本身需要某种形式的身份验证,可以通过共享密钥或证书签名的 JWT 令牌进行。共享秘密方法有据可查,似乎工作正常,除了我试图调用的 Graph 服务拒绝访问令牌不够安全 - 似乎需要证书签名的 JWT 令牌。我无法找到第二种方法的任何 Java 示例,并且到目前为止我按照上述指南实施的内容不起作用。

使用 JJWT,生成令牌的代码如下所示:

loadPrivateKey() 使用 BouncyCastle 类:

我在 apps.dev.microsoft.com 控制台中创建了一个密钥对,下载了私钥并使用 openssl 将其转换为 PEM 格式,然后将 PEM 内容粘贴到上面使用的 pemFileContent 变量中。openssl 为 PEM 版本计算与 MS 应用程序控制台相同的指纹。

我在调用 Retrofit 服务时使用 JWT 令牌:

调试输出中的一切看起来都不错:

但是响应是 401 Unauthorized,错误报告:

我不知道在哪里寻找问题。错误中提到的指纹值均不对应于私钥的指纹。其他人在使用错误的签名算法时报告了此错误消息,但 RS256 是要使用的记录算法。我正在寻找一个指向我出错的指针,或者一个使用签名的 JWT 令牌的客户端凭据流的 Java 中的工作示例(我对使用哪些库并不挑剔)(我找到了使用的示例一个共享的秘密,它们工作正常,但 MS Graph API 拒绝该令牌,因为它不够安全)。

0 投票
2 回答
2290 浏览

oauth-2.0 - 使用 JJWT 和 RSA 解码 IdToken

我的客户向我发送了一个 JWT,我需要使用他们的公钥验证这个 JWT。我正在使用 Java 和 JJWT 框架来验证这个令牌。我知道使用 HS256 解码此令牌,但我不知道使用 RS256。

他们的配置是:

在此处输入图像描述

在这里编辑以改进我的问题。我正在使用的 jjwt 解析示例:

如何使用我显示的 JWKS 信息验证收到的令牌?(上图)

0 投票
1 回答
877 浏览

java - 为多个客户端保持 JWT 分离的更好方法

我有多个应用程序(每个都可以被认为是一个资源服务器)和一个授权服务器授权服务器发出一个成功的JWT认证。在这个RFC中,我阅读了aud声明,这是通知客户端令牌不适合它的好方法,即接收者可以检查audJWT 中的声明并丢弃JWT不适合它的声明。

但是,我试图找出的是如何key/secret为每个资源服务器维护一个单独的资源服务器,这些资源服务器对其他资源服务器隐藏但授权服务器知道。

我想在资源服务器上保留密钥/秘密的原因是因为我想避免每次都向授权服务器发送请求以验证令牌。(性能命中)。

我想保留一个单独的密钥/秘密的原因是安全性。

我正在使用这个 jsonWebToken库。

是否有可能做到这一点?

0 投票
2 回答
15890 浏览

java - JJWT library and handle expiration ExpiredJWTException

The problem is that my application throws an exception when the token expires and I can't catch that exception. I want to catch that exception and do another thing. Tried commenting exception statement on catch block but no progress.

Exception:

Checking token:

0 投票
3 回答
2320 浏览

java - JJWT / Jackson 更改使用的 ObjectMapper

对于我正在进行的项目,我需要使用库io.jsonwebtoken (jjwt)提供的 Spring Security 和 JSON Webtokens 。我需要添加到生成的令牌中的声明之一是以下实体(简化以说明问题):

这可行,但生成的 webtoken 序列化如下:

这可能看起来不是问题,但实际上是一个问题,稍后我需要再次将其映射到 MyEntity 的实例。在线阅读后,我想我需要更改 ObjectMapper 的配置,以更改配置选项(将WRITE_DATES_AS_TIMESTAMPS-flag 切换为 false)。但是,我无法更改 jjwt 使用的 ObjectMapper 的配置,因为它是这样构造的(jjwt 的来源):

我在网上找到的另一个选择是将以下行放在我的 application.properties 文件中:

然而无济于事,jjwt 使用的 ObjectMapper 似乎忽略了这些属性。

我会做什么来实现我的目标?

0 投票
1 回答
49 浏览

java - 如何在没有 Auth 令牌到期的情况下处理

我需要一份与 Auth Token Expiry 相关的帮助。我有一个有效期为 30 分钟的访问令牌。因为我习惯做某事/某些活动直到 30 分钟。现在我的令牌过期了,在第 30 分钟我调用该服务来获取所有用户,但此时我的令牌已过期。那么如何处理这种情况。1.我是否允许应用程序使用过期令牌获取用户列表?2.我应该重新生成发送回浏览器的令牌,存储在LocalStorage中并再次调用服务吗?

注意:执行此操作时,用户不应该知道应用程序令牌已过期。这一切都应以异步方式完成。

谢谢,拉胡尔

0 投票
0 回答
725 浏览

java - 在 JWT/JSON 中添加字节数组

是否可以在 JWT 的正文中添加字节数组?我从源获取字节流,我想将其打包成 JWT 并将其发送出去。

作为测试,我尝试将字符串转换为字节数组,使用 jjwt 库将其添加到 jwt,对其进行编码、解码,然后将字节取回。但它们看起来不一样。

但是 ret != "test".getBytes()