Промежуточное ПО для интроспекции JWT с веб-API - Java и Identity Server - PullRequest
0 голосов
/ 16 октября 2019

В настоящее время я использую 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 проходит через заголовок запроса.

1 Ответ

1 голос
/ 16 октября 2019

Под капотом промежуточное ПО 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

При проверке токена доступа, как минимум, вам также необходимо проверить аудиторию токена (предназначен ли токендля вас) и если срок его действия истек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...