使用 Azure AD 与第 3 方进行单点登录

SSO with a 3rd party using Azure AD

我有一个组织想要使用 SAML 2.0 对我基于 node.js 的 Web 应用程序进行单点登录。单击 x.myapp.com 的 link 时,我想利用他们的 IdP(使用 Azure AD 和 SAML 2.0)并重定向到我的应用程序并向我提供一些属性。

我找到了 passport-azure-ad 和 saml2-js npm 包,但我没有看到涵盖这种情况的任何示例。有没有人做过这个看似简单的用例并提供任何 link 或示例?到目前为止,我只找到了 iOS 或 Android 示例,但没有找到基于网络的 node.js 应用程序。

谢谢。

据我了解,您正在寻找 Azure AD SAML 登录 nodejs 演示。 This demo 对你有帮助,对我也有用。

如果你想使用 Azure AD 作为你的 idp,你应该做一些修改如下:

1.Create 一个名为 "cert" 的文件夹。 运行 此命令用于在 cert 文件夹下创建 key.pem 和 cert.pem:

openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out cert.pem
  1. 转到Azure AD,在这里下载idp证书,直接将其重命名为"cert_idp.pem"并将其也放在cert文件夹下: 3.Creatring 一个名为“.env”的文件,内容如下:

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 端口公开给 public 网络,一旦你访问该应用程序,你将被重定向到 Azure AD SAML 登录页面以登录:

登录成功后修改“/”下的get方法获取MSAL token信息:

app.get('/',
  ensureAuthenticated, 
  function(req, res) {
    res.send('Authenticated, SAML token info :'  + JSON.stringify(req.session.passport.user));
  }
);

如果有任何不清楚的地方,请随时告诉我:)