有没有人成功地使用Azure AD对Node.js Web应用程序的用户进行身份validation?

我正尝试使用Azure Active Directory为我的node.js Web应用程序validation用户,到目前为止没有运气。

我想知道是否有人实际上已经实现了,因为文档是相当差的。 通常有典型的代码,但并不真正表明所需的参数是什么以及它们应该是什么。

我已经尝试过passport-azure-ad(我认为是来自Microsoft)和passport.azure-ad-oauth2(来自Auth0(?))。 对于passport-azure-ad,我尝试了BearerStrategy和OIDCStrategy,没有运气。

对于BearerStrategy,我得到了一些关于我的客户端和资源的神秘消息来识别同一个应用程序,但由于没有文档告诉我应该是什么,所以我很茫然。

对于OIDCStrategy,我稍微接近一点,因为我redirect到Microsoft进行身份validation,但返回时出现错误“错误:ID令牌不存在于响应中”。 我猜我的要求是不正确的,无论出于什么原因都给我一个回报,但是因为没有文件…(你明白了)。

无论如何,如果有人已经成功地实现了这个目标,并且能够分享一些关于它是如何实现的,那将是很棒的。

非常感谢。

下面是一个代码示例,它将Azure AD集成到由Microsoft在GitHub上提供的NodeJS Web应用程序中, url为https://github.com/Azure-Samples/active-directory-node-webapp-openidconnect

为了运行示例,您需要在示例代码中configuration一些关于Azure AD的设置。

我们可以在应用程序根目录的config.js文件中find如下内容:

 exports.creds = { returnURL: 'http://localhost:3000/auth/openid/return', identityMetadata: 'https://login.microsoftonline.com/common/.well-known/openid-configuration', // For using Microsoft you should never need to change this. clientID: '<your app id>', clientSecret: '<your secret>', // if you are doing code or id_token code skipUserProfile: true, // for AzureAD should be set to true. responseType: 'id_token code', // for login only flows use id_token. For accessing resources use `id_token code` responseMode: 'query', // For login only flows we should have token passed back to us in a POST //scope: ['email', 'profile'] // additional scopes you may wish to pass }; 

现在您需要login到您的Azure AD应用程序页面的Azurepipe理门户。 点击configuration标签来configuration您的AD。

  • config.jsreturnURLinput到单点login部分下的REPLY URL表单中: 在这里输入图像描述

  • 将AD应用程序的Azure AD端点填充到config.jsidentityMetadata属性中。 如代码中的评论所述,如果您的Azure AD在Microsoft域中,如: 在这里输入图像描述 那么你不必改变设置。 否则,您需要将config.js中的端点replace为您的AD ID,您可以单击底部导航栏中的VIEW ENDPOINT来查找ID: 在这里输入图像描述

  • config.jsconfigurationclientIDclientSecret 。 您可以在AD应用程序的CONFIGRE页面find它们: 在这里输入图像描述 关于密钥,您可以select下拉菜单来select一个密钥的持续时间来创build一个新密钥,点击底部导航栏中的保存button,您可以在第一次创build时看到密钥数据。

完成这些步骤后,您可以尝试示例项目。

对于我来说,这个(无代码解决scheme)在新的Azure门户中工作 :

  • 主持我的Node.js服务器
  • 将AD添加到订阅
  • 在AD中注册新的应用程序
  • 将“ https://YourNodeJS.azurewebsites.net/.auth/login/aad/callback ”添加为回复url
  • 在AppServices中,select你的Node.js服务器
  • 在设置中进入authentication/授权
  • 激活AAD
  • 使用AAD的高级模式
  • input上面在AD中注册的应用程序的ClientID(GUID)
  • 作为issuerURLinput这个链接: https ://sts.windows.net/YourADGuid/(如果你回头看你在AD上面注册的应用程序,你可以在“Endpoints”中看到GUID)

微软使用Node.js来authentication和编写Azure xplat工具。

看看他们的代码,将帮助你弄清楚他们是如何做到的!