我正在尝试找出如何使用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"]
});