node.js - 使用 Azure AD 与第三方进行 SSO
问题描述
我有一个组织想要对我的基于 node.js 的 Web 应用程序使用 SAML 2.0 进行 SSO。单击 x.myapp.com 的链接时,我想利用他们的 IdP(它使用带有 SAML 2.0 的 Azure AD)并重定向到我的应用程序并向我提供一些属性。
我找到了 passport-azure-ad 和 saml2-js npm 包,但我没有看到任何涵盖这种情况的示例。有没有人完成这个看似简单的用例并提供任何链接或示例?到目前为止,我只找到了 iOS 或 Android 示例,但没有找到基于 Web 的 node.js 应用程序。
谢谢你。
解决方案
据我了解,您正在寻找 Azure AD SAML 登录 nodejs 演示。 这个演示将对您有所帮助,并且对我有用。
如果你想使用 Azure AD 作为你的 idp,你应该做一些修改,如下所示:
1.创建一个名为“cert”的文件夹。运行以下命令在 cert 文件夹下创建 key.pem 和 cert.pem:
openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out cert.pem
CALLBACK_URL=https://<your host>/login/callback
ENTRY_POINT=<find the value in the capture below>
ISSUER=<your Azure AD APP ID>
SESSION_SECRET=secret
完成这些步骤后,您可以运行此演示。就我而言,我使用 ngrok 将 4006 端口暴露给公共网络,一旦您访问该应用程序,您将被重定向到 Azure AD SAML 登录页面进行登录:
修改“/”下的get方法,登录成功后获取MSAL token信息:
app.get('/',
ensureAuthenticated,
function(req, res) {
res.send('Authenticated, SAML token info :' + JSON.stringify(req.session.passport.user));
}
);
如果有任何不清楚的地方,请随时告诉我:)
推荐阅读
- django - 为什么 Django upvote 只增加最新添加项目的投票?
- python - 如何使用 asyncio 和 multiprocess.map 获取数据
- python - 一些 Unix 命令失败并显示“
未找到”,当使用 Python Paramiko exec_command 执行时 - pdf-generation - 使用 DinkToPdf 分隔分页符
- com - SafeArrayTypeMismatchException
- scala - 在 Scala 中设计一个通用特征
- android - MapBox Android 插件:在活动中显示位置搜索栏
- javascript - 无法单击表格单元格以打开记录
- python-3.x - 比较两个日期时间字符串python
- dart - 隐藏在键盘后面的文本字段