我目前正在使用基于 .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
使用 Web API 的 JWT 自省中間件 - Java 和 Identity Server
慕婉清6462132
2023-11-01 21:37:40