如何通过Java-Jwt API验证Json Web Token(JWT)?

时间:2017-10-26 14:25:02

标签: jwt

我是oauth和JSON Web Token(jwt)的新手。我试图通过Java JWT api(https://github.com/auth0/java-jwt)验证授权令牌(jwt)。我能够通过该API解码标头和有效负载,但无法验证令牌。

我很少知道这个领域,我认为我必须将jwks-rs-java api(https://github.com/auth0/jwks-rsa-java)添加到我的测试项目中以处理验证部分,因此我根据文档导入并运行以下语句我读了。

“oauth_server_domain”是Oracle Access Manager(oam)。

JwkProvider provider = new UrlJwkProvider("oauth_server_domain");
Jwk jwk = provider.get("keyId_name");

然后我得到以下例外:

com.auth0.jwk.SigningKeyNotFoundException: Cannot obtain jwks from url https://<oauth_server_domain>/.well-known/jwks.json 
Caused by javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

我试图了解问题本身以及如何纠正它。

  • 我提供了错误的密钥ID吗?
  • 我是否需要将远程“oauth_server_domain”的证书导入到我在IDE中构建/执行项目的本地框中?
  • 如何将./well-known/jwks.json添加到oauth服务器(例如OAM)?

更新

我有一个证书(* .der格式),带有来自授权服务器(oam)的公钥。看来我需要按照本指南(https://auth0.com/blog/navigating-rs256-and-jwks/)手动创建./well-known/jwks.json文件。我想我应该能够将二进制编码的证书转换为基于base64的证书(* .pem格式?)。

但是如何从授权服务器公开相对路径(例如https://auth_server_domain:port/.well-known/jwks.json)?

我很感激您对此事的建议和意见。谢谢!

0 个答案:

没有答案