我正在尝试找出如何使用NodeJS在下面进行身份服务器4身份验证-摆脱这里的舒适区。

services.AddAuthentication(IdentityServerAuthenticationDefaults
.AuthenticationScheme)
    .AddIdentityServerAuthentication(
         options =>
         {
          options.Authority = "<authority-url>";
          options.ApiName = "<api-url>";
          });


我在这里的流程中缺少某些内容,因为未提供C#实现的秘密或类似信息-因此令牌可能已通过身份服务器验证了吗?如果我没有“秘密”来验证令牌,该如何使用NodeJS验证令牌?

我偶然发现了introspection endpoint-我朝着正确的方向前进吗?

最佳答案

我可以使用jwks -endpoint来解决此问题,它是用于验证令牌的公共密钥,然后我还发现了用来准备中间件的不错的package

private issuer: string = process.env.idsrv;


auth = jwt({
    secret: jwksClient.expressJwtSecret({
        cache: true,        // see https://github.com/auth0/node-jwks-rsa#caching,
        cacheMaxAge: ms('24h'),
        rateLimit: true,    // see https://github.com/auth0/node-jwks-rsa#rate-limiting
        jwksRequestsPerMinute: 100,
        jwksUri: `${this.issuer}/.well-known/jwks`
    }),

    // validate the audience & issuer from received token vs JWKS endpoint
    audience: `${this.issuer}/resources`,
    issuer: this.issuer,
    algorithms: ["RS256"]
});

10-06 15:39