В настоящее время я использую Identity Server 4, основанный на .Net Core, для выдачи токенов JWT. У меня есть веб-API .Net Core с промежуточным программным обеспечением для проверки JWT в Startup.cs
:
services.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 instance
RSAPrivateKey privateKey = //Get the key instance
try {
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, описанный выше, но оно явно требует вещейкак ключи Public
и Private
, которые я не знаю, как предоставить в данный момент, так как JWT проходит через заголовок запроса.