首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Active集成问题Nodejs

Active集成问题Nodejs
EN

Stack Overflow用户
提问于 2017-08-03 07:08:11
回答 1查看 1.4K关注 0票数 6

我是Node的新手,我想使用Azure Active Directory进行身份验证。我下载了Node并安装了提到的这里

代码语言:javascript
复制
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:将应用程序设置为使用护照节点js策略

这是config.js

代码语言:javascript
复制
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会遇到一些问题。

代码语言:javascript
复制
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)

请帮帮我..。

问候尼库尼

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

代码语言:javascript
复制
(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)
EN

回答 1

Stack Overflow用户

发布于 2017-08-03 07:33:21

请参阅代码示例:Azure Web示例

重定向网址应该与您的应用程序在AAD中注册的回复url相匹配。在那个文档中,它是http://localhost:3000/auth/openid/return

更新

要使代码示例https://github.com/AzureADQuickStarts/WebApp-OpenIDConnect-NodeJS工作,请参阅以下步骤:

  1. 登录到Azure入口。
  2. 在顶部栏上,单击您的帐户,然后在目录列表下,选择要注册应用程序的Active租户。
  3. 单击左侧导航中的“其他服务”,然后选择“Azure”。
  4. 单击App registrations并选择Add。
  5. 输入应用程序的友好名称,例如'WebApp-OpenIDConnect-nodejs‘,并选择’WebApp和/或WebApp‘作为应用程序类型。对于登录URL,输入示例的基本URL,默认为http://localhost:3000/。单击Create创建应用程序。
  6. 在Azure门户中,选择您的应用程序,单击Settings并选择Reply URLs。添加回复url :http://localhost:3000/auth/openid/return,单击保存按钮。
  7. 查找应用程序ID值并将其复制到剪贴板。在代码示例中打开config.js文件,用应用程序ID值替换clientID
  8. 使用租户的域名或guid设置identityMetadata
  9. 在Azure门户中,选择您的应用程序,单击Settings并选择Keys。添加一个应用键并复制到clientSecret中的config.js
  10. 如果要为会话中间件使用useMongoDBSessionStore会话存储,将mongoDB设置为true,则将正确的数据库url值更新为exports.databaseUri .,否则将useMongoDBSessionStore设置为false以使用默认会话存储。
  11. 运行应用程序。在终端中使用以下命令:node app.js
  12. 打开浏览器,键入http://localhost:3000并尝试应用程序。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45477186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档