我目前正在使用基于 .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
验证访问令牌时,至少还需要检查令牌的受众(令牌是否适用于你)以及它是否已过期。
添加回答
举报
0/150
提交
取消