2016-01-25 27 views
6

我正在尝试使用Azure Active Directory为我的node.js web应用程序验证用户,到目前为止没有运气。是否有人成功使用Azure AD为Node.js Web应用程序的用户进行身份验证?

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

我曾尝试passport-azure-ad(我认为它来自Microsoft)和passport.azure-ad-oauth2(它来自Auth0(?))。对于Passport-azure-ad,我尝试了BearerStrategy和OIDCStrategy,但都没有运气。

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

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

无论如何,如果有人实际上已经成功地实现了它,并且能够分享一些关于它是如何实现的指针,那就太好了。

非常感谢。

回答

0

Microsoft使用Node.js进行身份验证 - 并编写Azure xplat工具。

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

6

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

为了使样本运行,您需要在示例代码中配置关于Azure AD的几个设置。

我们可以发现该内容作为config.js文件中的应用程序的根目录下面所示:

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 
}; 

现在您需要登录Azure的管理门户,头到您的Azure的AD应用程序页面。点击配置选项卡来配置你的AD。

  • 输入在config.jsreturnURLREPLY URL形式下单点登录部分: enter image description here

  • 填补你的AD应用程序的Azure的AD端点到identityMetadata财产config.js。正如代码中的评论所述,如果您的Azure AD位于Microsoft域中,如:enter image description here 然后您不必更改设置。否则,你需要更换common在端点config.js到AD ID,您可以在底部导航点击VIEW端点找到ID:enter image description here

  • 配置config.jsclientIDclientSecret。你可以在你的AD应用程序的CONFIGRE页面找到它们: enter image description here 关于密钥,你可以选择下拉选择一个密钥的持续时间来创建一个新密钥,点击底部导航栏上的保存按钮,您可以在第一次创建时看到关键数据。

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

+0

感谢您的回应。我确实尝试过,但没有奏效。原始的微软代码我有身份元数据https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration,但自改变为https://login.microsoftonline.com/common/。众所周知的/ openid配置在你的例子中,我有多一点运气...... – Darren

+0

你是否在将端点改为'https://login.microsoftonline.com/common/.well已知/ openid配置? –

+0

新的(旧?)端点似乎起作用。虽然这个例子看起来像是一个更新的端点,但为什么他们会在这个例子中使用一个不起作用的端点呢?我有点不舒服。非常感谢您的回应...... – Darren

1

对我来说这(无代码解决方案)曾在new Azure Portal

  • 主机我的Node.js服务器
  • 一个广告的广告中添加到订阅
  • 注册新的应用程序
  • 添加“https://YourNodeJS.azurewebsites.net/.auth/login/aad/callback”作为回复URL
  • 在AppServices中,选择您的Node.js服务器
  • 在设置去认证/授权
  • 激活AAD
  • 使用高级模式AAD
  • 的输入上述AD注册的应用程序的客户端ID(GUID)
  • 作为issuerURL进入这个链接:https://sts.windows.net/YourADGuid/(你可以看到GUID如果您回头看看您在AD上面注册的应用程序,则在“端点”内)
相关问题