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工作,请参考以下步骤:
-
login到Azure门户。
-
在顶栏上,点击您的帐户,然后在“目录”列表下,select您希望注册您的应用程序的Active Directory租户。
-
点击左侧导航栏中的更多服务,然后selectAzure Active Directory。
-
点击
App registrations
然后select添加。 -
为应用程序input一个友好名称,例如“WebApp-OpenIDConnect-nodejs”,并select“Web Application和/或Web API”作为应用程序types。 对于loginURL,input样本的基本URL,默认为http:// localhost:3000 / 。 点击Create创build应用程序。
-
仍然在Azure门户中,select您的应用程序,单击
Settings
然后selectReply URLs
。 添加回复url:http://localhost:3000/auth/openid/return
,点击保存button。 -
find应用程序ID值并将其复制到剪贴板。 在代码示例中打开
config.js
文件,用Application ID值replaceclientID
。 -
使用域名或租户导向设置
identityMetadata
。 -
在Azure门户中,select您的应用程序,单击
Settings
然后selectKeys
。 添加一个应用程序密钥并复制到config.js
clientSecret
。 -
如果要为会话中间件使用mongoDB会话存储,请将useMongoDBSessionStore设置为true,将正确的数据库url值更新为exports.databaseUri
exports.databaseUri .
否则,将useMongoDBSessionStore
设置为false以使用默认会话存储。 -
运行应用程序。 在terminal中使用以下命令:
node app.js
-
打开浏览器,input
http://localhost:3000
并尝试你的应用程序。