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

Dar*_*ren 10 azure node.js oauth-2.0 azure-active-directory passport.js

我试图使用Azure Active Directory来验证我的node.js Web应用程序的用户,到目前为止没有运气.

我想知道是否有人实际上已经实现它,因为文档很差.通常有示例代码,但实际上并未表明所需参数是什么以及它们应该是什么.

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

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

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

无论如何,如果有人真的成功地实现了它并且能够分享关于如何实现它的一些指示,那将是伟大的.

非常感谢.

Gar*_*SFT 8

下面是一个代码示例,该示例涉及将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
 };
Run Code Online (Sandbox Code Playgroud)

现在,您需要登录Azure管理门户,标题到Azure AD应用程序页面.单击配置选项卡以配置AD.

  • 输入returnURLconfig.js进入REPLY URL下单点登录截面形式: 在此输入图像描述

  • 将AD应用程序的Azure AD端点填充到identityMetadata属性中config.js.正如代码中的注释所示,如果您的Azure AD位于Microsoft域中,例如:在此输入图像描述 然后您不必更改设置.否则,您需要common将端点替换config.js为您的AD ID,您可以单击底部导航中的VIEW ENDPOINT来查找ID:在此输入图像描述

  • 配置clientIDclientSecretconfig.js.您可以在AD应用程序的CONFIGRE页面中找到它们: 在此输入图像描述 关于密钥,您可以选择下拉列表以选择创建新密钥的持续时间,单击底部导航栏中的保存按钮,您可以在首次创建密钥数据时查看密钥数据.

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