有没有人成功使用Azure AD来验证Node.js Web应用程序的用户?

时间:2016-01-25 15:55:57

标签: node.js azure oauth-2.0 passport.js azure-active-directory

我正在尝试使用Azure Active Directory对我的node.js Web应用程序的用户进行身份验证,到目前为止没有运气。

我想知道是否有人实际上已经实现过,因为文档很差。通常有示例代码,但实际上没有任何关于所需参数是什么以及它们应该是什么的指示。

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

对于BearerStrategy,我收到一些关于我的客户端和资源的神秘信息,这些信息标识了相同的应用程序,但由于没有文档告诉我应该是什么,我不知所措。

对于OIDCStrategy,我更接近于我被重定向到Microsoft进行身份验证,但是在返回时我收到错误"错误:ID令牌在响应中不存在"。我猜测我的请求不够正确,无论出于何种原因都给我一个令牌,但由于没有文档......(你明白了)。

无论如何,如果有人真的成功地实现了它,并且能够分享一些如何实现它的指示,那就太棒了。

非常感谢。

2 个答案:

答案 0 :(得分:7)

以下是一个代码示例,该示例涉及将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应用程序页面。点击 CONFIGURE 标签配置您的广告。

  • returnURL中的config.js输入到单点登录部分下的REPLY URL表单中: enter image description here

  • 将AD应用程序的Azure AD端点填充到identityMetadata中的config.js属性中。正如代码中的注释所示,如果您的Azure AD位于Microsoft域中,如:enter image description here 然后您不必更改设置。否则,您需要将common中端点中的config.js替换为您的AD ID,您可以点击底部导航中的查看ENDPOINT 来查找ID:{{ 3}}

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

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

答案 1 :(得分:1)

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

中有效
  • 托管我的Node.js服务器
  • 在订阅中添加广告
  • 在AD中注册新申请
  • 添加&#34; https://YourNodeJS.azurewebsites.net/.auth/login/aad/callback&#34;作为回复网址
  • 在AppServices中,选择您的Node.js服务器
  • 在“设置”中,转到“身份验证/授权”
  • 激活AAD
  • 使用AAD的高级模式
  • 输入上面在AD
  • 中注册的应用程序的ClientID(GUID)
  • 作为issuerURL,请输入以下链接:https://sts.windows.net/YourADGuid/(您可以在&#34; Endpoints&#34中查看GUID;如果您回顾上面在AD中注册的应用程序)
相关问题