node.js - 使用 express-jwt 作为中间件来验证 Azure AD 颁发的 token

标签 node.js authentication express openid-connect

我想知道是否可以使用 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/

相关文章:

javascript - NodeJS + Express 与 Ajax

.net - 允许用户使用 Windows 身份验证模式和消息级别安全访问 .Net WCF 服务

c# - 从本土表单例份验证转移到 AD 的策略是什么?

node.js - 使用 Express 和 Nodejs 进行路由时出现 404 错误

node.js - 将 ISODate 更改为字符串日期 ExpressJS

javascript - 如何将自定义事件添加到 Node 中的类中?

node.js - 标准输入读取某些输入失败

javascript - 在 Javascript 中通过 WebSocket 的 HashMap

javascript - 如何修复我的 React 应用程序中的 eslint 错误 'pendo is not defined'

javascript - 客户端和服务器端都有更新的数据,但渲染不显示更新的数据