使用Azure AD与第三方进行SSO

时间:2019-09-04 18:47:58

标签: node.js azure-active-directory passport.js passport-azure-ad

我有一个组织希望针对基于node.js的Web应用程序使用SAML 2.0进行SSO。单击x.myapp.com的链接时,我想利用其IdP(该IDP使用带有SAML 2.0的Azure AD)并重定向到我的应用程序,并向我提供一些属性。

我找到了passport-azure-ad和saml2-js npm软件包,但没有看到涉及此场景的任何示例。有没有人做过这个看似简单的用例并提供了任何链接或示例?到目前为止,我只找到了iOS或Android示例,但没有找到基于Web的node.js应用。

谢谢。

1 个答案:

答案 0 :(得分:0)

根据我的理解,您正在寻找Azure AD SAML登录nodejs演示。 This demo将对您有所帮助,并且对我有用。

如果要将Azure AD用作idp,则应进行如下修改:

1。创建一个名为“ cert”的文件夹。运行以下命令在cert文件夹下创建key.pem和cert.pem:

openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out cert.pem
  1. 转到Azure AD,在此处下载idp cert,直接将其重命名为“ cert_idp.pem”,并将其也放置在cert文件夹下: enter image description here enter image description here 3.创建一个名为“ .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

enter image description here

完成步骤后,您可以运行此演示。就我而言,我使用ngrok将4006端口公开到公共网络,一旦您访问该应用程序,您将被重定向到Azure AD SAML登录页面进行登录: enter image description here

成功登录后,如下修改“ /”下的get方法以获取MSAL令牌信息:

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

如果有任何不清楚的地方,请随时让我知道:)