mirror of
https://github.com/apache/rocketmq.git
synced 2026-09-21 13:49:50 +08:00
[ISSUE #3949] AddHeader in AuthenticationInterceptor
This commit is contained in:
+13
-1
@@ -25,8 +25,10 @@ import io.grpc.ServerCall;
|
||||
import io.grpc.ServerCallHandler;
|
||||
import io.grpc.ServerInterceptor;
|
||||
import java.util.List;
|
||||
import org.apache.rocketmq.acl.AccessResource;
|
||||
import org.apache.rocketmq.acl.AccessValidator;
|
||||
import org.apache.rocketmq.acl.common.MetadataHeader;
|
||||
import org.apache.rocketmq.acl.plain.PlainAccessResource;
|
||||
import org.apache.rocketmq.proxy.grpc.v2.adapter.RequestMapping;
|
||||
|
||||
public class AuthenticationInterceptor implements ServerInterceptor {
|
||||
@@ -56,10 +58,20 @@ public class AuthenticationInterceptor implements ServerInterceptor {
|
||||
.requestCode(RequestMapping.map(messageV3.getDescriptorForType().getFullName()))
|
||||
.build();
|
||||
for (AccessValidator accessValidator : accessValidatorList) {
|
||||
accessValidator.validate(accessValidator.parse(messageV3, metadataHeader));
|
||||
AccessResource accessResource = accessValidator.parse(messageV3, metadataHeader);
|
||||
addHeader(headers, messageV3.getDescriptorForType().getFullName(), accessResource);
|
||||
accessValidator.validate(accessResource);
|
||||
}
|
||||
super.onMessage(message);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
protected void addHeader(Metadata headers, String rpcName, AccessResource accessResource) {
|
||||
headers.put(InterceptorConstants.RPC_NAME, rpcName);
|
||||
if (accessResource instanceof PlainAccessResource) {
|
||||
PlainAccessResource plainAccessResource = (PlainAccessResource) accessResource;
|
||||
headers.put(InterceptorConstants.AUTHORIZATION_AK, plainAccessResource.getAccessKey());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+3
@@ -65,4 +65,7 @@ public class InterceptorConstants {
|
||||
|
||||
public static final Metadata.Key<String> CLIENT_ID
|
||||
= Metadata.Key.of("x-mq-client-id", Metadata.ASCII_STRING_MARSHALLER);
|
||||
|
||||
public static final Metadata.Key<String> AUTHORIZATION_AK
|
||||
= Metadata.Key.of("x-mq-authorization-ak", Metadata.ASCII_STRING_MARSHALLER);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user