我在 GCP Cloud Run 上有一系列微服务,每个微服务都托管一个联合 Apollo GraphQL 服务。然后我有最后一个容器,它充当其余服务的联合 GraphQL 网关。
当在容器上启用公共访问但我无法让网关服务器针对其他两个服务进行身份验证时,这工作正常。
我尝试使用 Apollo RemoteGraphQLDataSource 并实现 willSendRequest 方法来设置必要的标头。
我还尝试将云运行调用者角色添加到网关运行的服务角色中。
const servicex = new RemoteGraphQLDataSource({
url: serviceurl,
willSendRequest({ request, context }) {
request.http.headers.set(
"Authorization",
"Bearer ${TOKEN}"
);
}
});
const gateway = new ApolloGateway({
serviceList: [
servicex
]
});
const { schema, executor } = await gateway.load();
const server = new ApolloServer({ schema, executor })
我希望网关服务器能够针对其他微服务进行身份验证。