使用express-jwt作为中间件来validationAzure AD颁发的令牌

我想知道是否可以使用express-jwt NPM包作为中间件来validation由Azure AD发布的JWT令牌。

我们有一个以express / node编写的web API,并希望应用中间件模式来保护我们的端点并填充用户原则。

似乎:

 server.use(jwt({ audience: '{UUID}', issuer: 'https://sts.windows.net/{UUID}', }).unless({path : ['/']})) 

因为它需要一个客户端秘密,但是从AD(就像在隐式stream程中那样),令牌是通过用户交互来检索的,并且没有客户端秘密。

你可以使用“azure-ad-jwt”。 它相当简单,不需要注入中间件。 当然,您可以将其作为您自己的“中间件”function中间步骤注入。

  private verifyToken(req: any, res: any) { var audience = "xxxxxxxxx"; var tenantId = "xxxxxxxxx"; var authorization = req.headers['authorization']; return Rx.Observable.create((observer) => { if (authorization) { var bearer = authorization.split(" "); var jwtToken = bearer[1]; if (jwtToken) { aad.verify(jwtToken, { audience: audience, tenantId: tenantId }, function (err, result) { if (result) { observer.next(true); } else { res.status(401).send('That is not a valid token!'); } }) } else { res.status(401).send('No token in header.'); } } else { res.status(401).send('Missing authorization attribute in header.'); } }); }