在 gRPC 方法上将 Auth0 与 NestJS 结合使用
Using Auth0 with NestJS on gRPC Methods
我正在尝试为我的 gRPC 服务实现 NestJS Guards 的身份验证和授权,这是在 NestJS 中实现的。
@GrpcMethod(USER_SERVICE_NAME, 'GetUser')
private getUser(req: GetUserRequest): Promise<GetUserResponse> {
return this.userService.getUser(req);
}
到现在为止,我发现了如何为常规 HTTP 请求实现它,遵循 this tutorial。
但据我所知,这是从常规 http 请求中获取 JWT。
现在我该如何将其应用于 gRPC 请求。我也找到了 this package,但在这里我不确定如何设置缓存、速率限制和哈希算法选项。
Now how can I apply that to gRPC requests. I also found this package, but here I am not sure how I would set the cache, rateLimit, and hash-algorithm options.
在您链接到的那个包中,您可以在自述文件中看到您需要实现自己的 IAuthService
。
他们提供了一个示例,其中他们使用通过 params
参数提供给 IAuthService
的令牌调用 jwt.verify
方法。
JWT 令牌是从 gRPC 请求的 元数据 中提取的,如 here.
所示
您可以select您想要在jwt.verify
函数的第三个options
参数中使用的算法。
// Extract taken from the package's readme.
const options = {
// For example...
algorithms: ['HS256', 'HS384']
};
return new Promise(function (resolve, reject) {
jwt.verify(token, getKey, options, (err, decoded) => {
if (err) reject(err);
resolve(decoded);
});
}).then((user) => user);
关于 缓存 我不明白你的意思,也许 jwt.verify
函数上的 maxAge
选项?
maxAge: the maximum allowed age for tokens to still be valid. It is
expressed in seconds or a string describing a time span zeit/ms.
关于速率限制,您可以使用 NestJS 文档中的 this example 在 Controller
方法之上实现它。
我正在尝试为我的 gRPC 服务实现 NestJS Guards 的身份验证和授权,这是在 NestJS 中实现的。
@GrpcMethod(USER_SERVICE_NAME, 'GetUser')
private getUser(req: GetUserRequest): Promise<GetUserResponse> {
return this.userService.getUser(req);
}
到现在为止,我发现了如何为常规 HTTP 请求实现它,遵循 this tutorial。 但据我所知,这是从常规 http 请求中获取 JWT。
现在我该如何将其应用于 gRPC 请求。我也找到了 this package,但在这里我不确定如何设置缓存、速率限制和哈希算法选项。
Now how can I apply that to gRPC requests. I also found this package, but here I am not sure how I would set the cache, rateLimit, and hash-algorithm options.
在您链接到的那个包中,您可以在自述文件中看到您需要实现自己的 IAuthService
。
他们提供了一个示例,其中他们使用通过 params
参数提供给 IAuthService
的令牌调用 jwt.verify
方法。
JWT 令牌是从 gRPC 请求的 元数据 中提取的,如 here.
所示您可以select您想要在jwt.verify
函数的第三个options
参数中使用的算法。
// Extract taken from the package's readme.
const options = {
// For example...
algorithms: ['HS256', 'HS384']
};
return new Promise(function (resolve, reject) {
jwt.verify(token, getKey, options, (err, decoded) => {
if (err) reject(err);
resolve(decoded);
});
}).then((user) => user);
关于 缓存 我不明白你的意思,也许 jwt.verify
函数上的 maxAge
选项?
maxAge: the maximum allowed age for tokens to still be valid. It is expressed in seconds or a string describing a time span zeit/ms.
关于速率限制,您可以使用 NestJS 文档中的 this example 在 Controller
方法之上实现它。