我想知道是否可以使用 express-jwt
NPM 包作为中间件来验证 Azure AD 颁发的 JWT token 。
我们有一个用 express/node 编写的 Web API,并希望应用中间件模式来保护我们的端点并填充用户原则。
好像是:
server.use(jwt({
audience: '{UUID}',
issuer: 'https://sts.windows.net/{UUID}',
}).unless({path : ['/']}))
不起作用,因为它需要客户端密码,但从 AD(很像在隐式流中)通过用户交互检索 token ,并且没有客户端密码。
最佳答案
您可以使用“azure-ad-jwt”。它相当简单,不需要注入(inject)中间件。当然,您可以将其作为中间步骤注入(inject)到您自己的“中间件”功能中。
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.');
}
});
}
关于node.js - 使用 express-jwt 作为中间件来验证 Azure AD 颁发的 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40604578/