我正在尝试在 Apollo Federation 中实现 Auth0,我能够在其单个服务中实现它(https://auth0.com/blog/developing-a-secure-api-with-nestjs-adding-authorization/#Set -Up-API-Authorization)但是如果我试图通过网关访问 API,则标头/有效负载不会传递给服务,因此它总是未经授权的。
如果 API 是通过单个服务访问的,则有效负载会被接收并从标头中正确解码并且工作正常,但如果通过网关,它不会级联到需要它的服务。
目前使用代码优先的实现。我也尝试过镜像服务中使用的模块,但它仍然不起作用。
单个服务中的示例有效负载
{
iss: 'issuer url here',
sub: 'google-oauth2',
aud: ['audience link'],
iat: ,
exp: ,
azp: '',
scope: '',
permissions: [ 'sample:permission' ]
}
在网关中导入
imports: [
ConfigModule.forRoot(),
GraphQLGatewayModule.forRoot({
server: {
cors: true,
},
gateway: {
serviceHealthCheck: true,
serviceList: [
{
name: 'service',
url: `${process.env.SERVICE_URL}/graphql`,
},
],
},
}),
]