diff --git a/core/src/main/java/tech/ydb/core/grpc/YdbHeaders.java b/core/src/main/java/tech/ydb/core/grpc/YdbHeaders.java index 8e78a63f2..1d3005a48 100644 --- a/core/src/main/java/tech/ydb/core/grpc/YdbHeaders.java +++ b/core/src/main/java/tech/ydb/core/grpc/YdbHeaders.java @@ -22,5 +22,8 @@ public class YdbHeaders { public static final Metadata.Key YDB_SERVER_HINTS = Metadata.Key.of("x-ydb-server-hints", Metadata.ASCII_STRING_MARSHALLER); + public static final Metadata.Key AUTH_TICKET = + Metadata.Key.of("x-ydb-auth-ticket", Metadata.ASCII_STRING_MARSHALLER); + private YdbHeaders() { } } diff --git a/core/src/main/java/tech/ydb/core/impl/BaseGrpcTransport.java b/core/src/main/java/tech/ydb/core/impl/BaseGrpcTransport.java index 7448f1bdc..f381885c8 100644 --- a/core/src/main/java/tech/ydb/core/impl/BaseGrpcTransport.java +++ b/core/src/main/java/tech/ydb/core/impl/BaseGrpcTransport.java @@ -222,6 +222,10 @@ private static Status deadlineExpiredStatus(MethodDescriptor method, GrpcR private Metadata makeMetadataFromSettings(GrpcRequestSettings settings) { Metadata metadata = new Metadata(); + String token = getAuthCallOptions().getToken(); + if (token != null) { + metadata.put(YdbHeaders.AUTH_TICKET, token); + } if (settings.getTraceId() != null) { metadata.put(YdbHeaders.TRACE_ID, settings.getTraceId()); } diff --git a/core/src/main/java/tech/ydb/core/impl/auth/AuthCallOptions.java b/core/src/main/java/tech/ydb/core/impl/auth/AuthCallOptions.java index 4cd9ac4c0..925a36be3 100644 --- a/core/src/main/java/tech/ydb/core/impl/auth/AuthCallOptions.java +++ b/core/src/main/java/tech/ydb/core/impl/auth/AuthCallOptions.java @@ -44,10 +44,6 @@ public AuthCallOptions( authIdentity = null; } - if (authIdentity != null) { - options = options.withCallCredentials(new YdbCallCredentials(authIdentity)); - } - if (builder.getCallExecutor() != null && builder.getCallExecutor() != MoreExecutors.directExecutor()) { options = options.withExecutor(builder.getCallExecutor()); } @@ -78,6 +74,7 @@ public CallOptions getGrpcCallOptions() { if (readTimeoutMillis > 0) { return callOptions.withDeadlineAfter(readTimeoutMillis, TimeUnit.MILLISECONDS); } + return callOptions; } } diff --git a/core/src/main/java/tech/ydb/core/impl/auth/YdbCallCredentials.java b/core/src/main/java/tech/ydb/core/impl/auth/YdbCallCredentials.java deleted file mode 100644 index 96533c3a3..000000000 --- a/core/src/main/java/tech/ydb/core/impl/auth/YdbCallCredentials.java +++ /dev/null @@ -1,43 +0,0 @@ -package tech.ydb.core.impl.auth; - -import java.util.concurrent.Executor; - -import io.grpc.CallCredentials; -import io.grpc.Metadata; -import io.grpc.Status; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import tech.ydb.auth.AuthIdentity; - - -/** - * @author Sergey Polovko - */ -class YdbCallCredentials extends CallCredentials { - static final Metadata.Key AUTH_TICKET = - Metadata.Key.of("x-ydb-auth-ticket", Metadata.ASCII_STRING_MARSHALLER); - - private static final Logger logger = LoggerFactory.getLogger(YdbCallCredentials.class); - - private final AuthIdentity identity; - - YdbCallCredentials(AuthIdentity identity) { - this.identity = identity; - } - - @Override - public void applyRequestMetadata(RequestInfo requestInfo, Executor appExecutor, MetadataApplier applier) { - try { - Metadata headers = new Metadata(); - String token = identity.getToken(); - if (token != null) { - headers.put(AUTH_TICKET, token); - } - applier.apply(headers); - } catch (Exception ex) { - logger.error("unexpected exception ", ex); - applier.fail(Status.INTERNAL.withDescription("get token exception").withCause(ex)); - } - } -}