MEDOWERTER GRPC-SPRING-BOOT-Starter для аутентификацииJAVA

Программисты JAVA общаются здесь
Anonymous
MEDOWERTER GRPC-SPRING-BOOT-Starter для аутентификации

Сообщение Anonymous »

Я использую реализацию ("net.devh: grpc-spring-boot-starter: 3.1.0.release") Библиотека для выполнения работы GRPC в моем приложении Java.

Код: Выделить всё

    @Bean
public JwtGrpcAuthenticationReader  jwtAuthenticationReader() {
log.info("Initializing jwtAuthenticationReader...");
return new JwtGrpcAuthenticationReader();
}

@Bean
public JwtGrpcAuthenticationProvider jwtAuthenticationProvider() {
log.info("Initializing jwtAuthenticationProvider...");
return new JwtGrpcAuthenticationProvider(secretManagerService);
}

@Bean
AuthenticationManager authenticationManager() {
final List providers = new ArrayList();
providers.add(jwtAuthenticationProvider());
return new ProviderManager(providers);
}

@Bean
GrpcAuthenticationReader authenticationReader() {
final List readers = new ArrayList();
readers.add(jwtAuthenticationReader());
return new CompositeGrpcAuthenticationReader(readers);
}
< /code>
Теперь проблема в том, что каждый запрос находится под аутентификацией. Как я могу оставить один, чтобы получить токен, чтобы позвонить другим услугам?public class JwtAuthInterceptor implements ServerInterceptor {
private static final Metadata.Key AUTHORIZATION_KEY =
Metadata.Key.of("Authorization", Metadata.ASCII_STRING_MARSHALLER);

@Override
public  ServerCall.Listener interceptCall(
ServerCall call, Metadata headers, ServerCallHandler next) {

String token = headers.get(AUTHORIZATION_KEY);
if (token == null || !token.startsWith("Bearer ")) {
call.close(Status.UNAUTHENTICATED.withDescription("Missing or invalid token"), new Metadata());
return new ServerCall.Listener() {};
}

try {
String jwt = token.substring(7);
JwtUtil.validateToken(jwt); // Validate token
return next.startCall(call, headers);
} catch (JWTVerificationException e) {
call.close(Status.UNAUTHENTICATED.withDescription("Invalid token"), new Metadata());
return new ServerCall.Listener() {};
}
}
}
Так что, может быть, я могу пропустить какой -то сервис/метод.
Кто -нибудь знает, как продолжить? Я не вижу никакого метода в поставщике или читателе полезно
На данный момент я обнаружил службу отдыха, чтобы получить токен, это хорошо?

Подробнее здесь: https://stackoverflow.com/questions/795 ... entication

Вернуться в «JAVA»