使用 Ocelot API 网关验证用户 ID

Validate user id with Ocelot API gateway

我正在实现一些与整体通信的微服务,所有这些都是使用 .net 核心完成的。 目前我的网关根据它的结构验证用户 jwt 令牌是否有效,但问题是,我需要将用户 ID(从单体)传递给微服务,我被告知需要验证它. 因此,考虑到这一点,我应该采用什么方法来验证传递给微服务的用户 ID 是否存在?

提前致谢

首先,IMO jwt 令牌应该由可信方创建,并且它包含的任何内容都应该已经有效,因此如果用户一开始就不存在,IdentityProvider 不应提供 jwt 令牌。

但如果您必须这样做,您可以为该场景创建一个自定义中间件,它从请求中读取令牌并验证用户 ID 是否存在。

您可以阅读有关自定义中间件的更多信息here

您的中间件可能如下所示:

public class UserIdValidatprMiddleware
{
    private readonly RequestDelegate _next;

    public RequestCultureMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public async Task InvokeAsync(HttpContext context, IIdentityService identityService, IUserStore userStore)
    {
        var userId = identityService.GetUserIdFromToken();
        var userExists = await userStore.CheckIfUserExists(userId);
        if (!userExists) throw SomeException();
        await _next(context);
    }
}