Код: Выделить всё
@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