Gok*_*vel 7 jwt spring-boot ed25519 nimbus-jose-jwt eddsa
我想在我的 Spring Boot 应用程序中实现 JWT 验证。我们用于签名令牌的算法是 Ed25519\EDDSA 。
我找不到正确的依赖项/库来使用 ED25519 算法实现 Jwt 验证器。
有人可以建议使用 Maven 依赖项来验证 JWT 令牌吗?
小智 4
答案来得很晚,但我只是试图解决同样的问题并决定分享我的结论。
我将Spring Security 与 OAuth 2.0 资源服务器结合使用来验证 JWT。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
但是,Spring Security 的默认 JWT 解码器NimbusJwtDecoder不支持 EdDSA(请参阅支持的签名算法列表。您必须编写自己的JWTDecoder.
幸运的是,Spring Security 依赖于Nimbus JOSE+JWT 库,该库已经支持 EdDSA。要使用库验证 EdDSA 签名,请添加以下依赖项:
<dependency>
<groupId>com.google.crypto.tink</groupId>
<artifactId>tink</artifactId>
<version>1.6.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
您的代码将在某个时候调用以下几行,其中encodedJwt是编码的 jwt 字符串。
SignedJWT signedJWT = SignedJWT.parse(encodedJwt);
JWSVerifier verifier = new Ed25519Verifier(publicJWK);
assertTrue(signedJWT.verify(verifier));
Run Code Online (Sandbox Code Playgroud)
完整的示例可以在这里找到:https ://connect2id.com/products/nimbus-jose-jwt/examples/jwt-with-eddsa
| 归档时间: |
|
| 查看次数: |
6566 次 |
| 最近记录: |