为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Web API 的 JWT 自省中间件 - Java 和 Identity Server

使用 Web API 的 JWT 自省中间件 - Java 和 Identity Server

慕婉清6462132 2023-11-01 21:37:40
我目前正在使用基于 .Net Core 的 Identity Server 4 来颁发 JWT 令牌。我有一个具有中间件的 .Net Core Web API,以便在以下位置验证 JWT:Startup.csservices.AddAuthentication("Bearer")                .AddJwtBearer("Bearer", options =>                {                    options.Authority = "http://localhost:5005";                    options.Audience = "api1";                });正如我们所看到的,除了令牌服务器的位置和 api 是谁(即 'api1)之外,它并没有要求太多。显然,它在引擎盖下做了一些更复杂的事情。我找到了一个基于Java的等效于上面的中间件,它验证了一个JWT:String token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXUyJ9.eyJpc3MiOiJhdXRoMCJ9.AbIJTDMFc7yUa5MhvcP03nJPyCPzZtQcGEp-zWfOkEE";RSAPublicKey publicKey = //Get the key instanceRSAPrivateKey privateKey = //Get the key instancetry {    Algorithm algorithm = Algorithm.RSA256(publicKey, privateKey);    JWTVerifier verifier = JWT.require(algorithm)        .withIssuer("auth0")        .build(); //Reusable verifier instance    DecodedJWT jwt = verifier.verify(token);} catch (JWTVerificationException exception){    //Invalid signature/claims}这是来自网站推荐的 这里.jwt.io基本上,我希望能够在 Java 中实现与上面的 .Net Core 代码相同的功能,但它显然需要诸如 a 和 key 之类的东西,我不知道此时如何提供,因为 JWT 是通过请求的标头。PublicPrivate
查看完整描述

1 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

在后台,Microsoft JWT 中间件将进入 IdentityServer 的发现端点,并加载到颁发者和 JWKS(公钥)等配置中。发现文档始终托管在 上。/.well-known/openid-configuration

要验证令牌,您至少需要来自 JWKS 的公钥。过去,我使用 jwks-rsa 库加载了它: https://www.scottbrady91.com/Kotlin/JSON-Web-Token-Verification-in-Ktor-using-Kotlin-and-Java-JWT

验证访问令牌时,至少还需要检查令牌的受众(令牌是否适用于你)以及它是否已过期。


查看完整回答
反对 回复 2023-11-01
  • 1 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信