Active Directory集成问题Nodejs

我是新的Node js,我想用Azure Active Directory进行身份validation。 我下载的节点和安装的NPM如上所述

npm install express npm install ejs npm install ejs-locals npm install restify npm install mongoose npm install bunyan npm install assert-plus npm install passport npm install passport-azure-ad 

之后按照文档,我遵循第3步:设置您的应用程序使用passport-node-js策略

这里是config.js

 exports.creds = { returnURL: 'https://hpe.onmicrosoft.com/8d332647-xxxx-4xxc-8xx-11776XXXXX', identityMetadata: 'https://login.microsoftonline.com', // For using Microsoft you should never need to change this. clientID: '22XXXX9-b5fa-XXXXb-bc7a-XXXXXXXa92a', clientSecret: 'Srekv8dM1NqP4Sqnxxxxxxxxxxxx', // 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 }; 

以及我在文档中提到的其他代码。

但是,当我运行app.js得到问题。

 C:\Nikunj Data\Project\Active Directory\WebApp-OpenIDConnect-NodeJS-skeleton\node_modules\passport-azure-ad\lib\validator.js:51 throw new TypeError(`Invalid value for ${item}.${checker.error}`); ^ TypeError: Invalid value for redirectUrl.The URL must be valid and be https:// at Object.keys.forEach (C:\Nikunj Data\Project\Active Directory\WebApp-OpenIDConnect-NodeJS-skeleton\node_modules\passport-azure-ad\lib\validator.js:51:13) at Array.forEach (native) at Validator.validate (C:\Nikunj Data\Project\Active Directory\WebApp-OpenIDConnect-NodeJS-skeleton\node_modules\passport-azure-ad\lib\validator.js:37:28) at new Strategy (C:\Nikunj Data\Project\Active Directory\WebApp-OpenIDConnect-NodeJS-skeleton\node_modules\passport-azure-ad\lib\oidcstrategy.js:495:13) at Object.<anonymous> (C:\Nikunj Data\Project\Active Directory\WebApp-OpenIDConnect-NodeJS-skeleton\app.js:42:14) at Module._compile (module.js:569:30) at Object.Module._extensions..js (module.js:580:10) at Module.load (module.js:503:32) at tryModuleLoad (module.js:466:12) at Function.Module._load (module.js:458:3) 

请帮帮我..

关心Nikunj

尝试1:我尝试了南宇的build议代码,我得到了错误:

 (node:2628) DeprecationWarning: `open()` is deprecated in mongoose >= 4.11.0, use `openUri()` instead, or set the `useMongoClient` option if using `connect()` or `createConnection()`. See http://mongoosejs.com/docs/connections.html#use-mongo-client events.js:182 throw er; // Unhandled 'error' event ^ MongoError: failed to connect to server [localhost:27017] on first connect [MongoError: connect ECONNREFUSED 127.0.0.1:27017] at Pool.<anonymous> (C:\Nikunj Data\Project\Active Directory\WebApp-OpenIDConnect-NodeJS-master\node_modules\mongodb\node_modules\mongodb-core\lib\topologies\server.js:329:35) at emitOne (events.js:115:13) at Pool.emit (events.js:210:7) at Connection.<anonymous> (C:\Nikunj Data\Project\Active Directory\WebApp-OpenIDConnect-NodeJS-master\node_modules\mongodb\node_modules\mongodb-core\lib\connection\pool.js:280:12) at Object.onceWrapper (events.js:318:30) at emitTwo (events.js:125:13) at Connection.emit (events.js:213:7) at Socket.<anonymous> (C:\Nikunj Data\Project\Active Directory\WebApp-OpenIDConnect-NodeJS-master\node_modules\mongodb\node_modules\mongodb-core\lib\connection\connection.js:187:49) at Object.onceWrapper (events.js:316:30) at emitOne (events.js:115:13) at Socket.emit (events.js:210:7) at emitErrorNT (internal/streams/destroy.js:62:8) at _combinedTickCallback (internal/process/next_tick.js:102:11) at process._tickCallback (internal/process/next_tick.js:161:9) 

请参阅代码示例: Azure Active Directory OIDC Web示例

redirecturl应该与在您的应用的AAD中注册的回复url相匹配。 在那个文档里,是http://localhost:3000/auth/openid/return

更新

为了使代码示例https://github.com/AzureADQuickStarts/WebApp-OpenIDConnect-NodeJS工作,请参考以下步骤&#xFF1A;

  1. login到Azure门户。

  2. 在顶栏上,点击您的帐户,然后在“目录”列表下,select您希望注册您的应用程序的Active Directory租户。

  3. 点击左侧导航栏中的更多服务,然后selectAzure Active Directory。

  4. 点击App registrations然后select添加。

  5. 为应用程序input一个友好名称,例如“WebApp-OpenIDConnect-nodejs”,并select“Web Application和/或Web API”作为应用程序types。 对于loginURL,input样本的基本URL,默认为http:// localhost:3000 / 。 点击Create创build应用程序。

  6. 仍然在Azure门户中,select您的应用程序,单击Settings然后selectReply URLs 。 添加回复url: http://localhost:3000/auth/openid/return ,点击保存button。

  7. find应用程序ID值并将其复制到剪贴板。 在代码示例中打开config.js文件,用Application ID值replaceclientID

  8. 使用域名或租户导向设置identityMetadata

  9. 在Azure门户中,select您的应用程序,单击Settings然后selectKeys 。 添加一个应用程序密钥并复制到config.js clientSecret

  10. 如果要为会话中间件使用mongoDB会话存储,请将useMongoDBSessionStore设置为true,将正确的数据库url值更新为exports.databaseUri exports.databaseUri . 否则,将useMongoDBSessionStore设置为false以使用默认会话存储。

  11. 运行应用程序。 在terminal中使用以下命令: node app.js

  12. 打开浏览器,inputhttp://localhost:3000并尝试你的应用程序。