Tag: 基本authentication

分离的客户端和服务器的身份验

我已经在客户端创build了angular色2的Web应用程序,并为服务器端创build了具有express框架的NodeJS 。 对于客户端来说,我使用angular-cli生成了在lite-server上运行的项目,所以我的客户端和服务器在两个不同的服务上运行。 我想集成ADFS身份validation。 为了实现身份validation,我使用passport-saml包。 我的服务器端API有一个中间件,需要用户进行身份validation。 当直接到达服务器(没有客户端)时,身份validation过程正常工作。 但是,我无法通过@angular/http访问API 。 我尝试了一个简单的GET请求从服务器(与中间件在终点),结果我得到的身份validation页面没有redirect(我不认为这是核心问题,但实际的实施)。 在服务器和客户端使用单独的服务时,我应该如何正确地实现身份validation?

节点js – 用户身份validation,在会话中存储什么?

首先,我没有find任何类似的问题或者有用的材料。 如果我错过了什么,我很抱歉! 其次,我对像node-passport或connect-auth或everyauth这样的现成解决scheme不感兴趣 现在的问题。 我正在使用Redis来存储快速会话。 我的问题是,当用户进行身份validation(即在用户名和密码发布后,这个用户被发现在集合中)我应该在会话中存储什么? 我可以存储整个用户对象(例如,它来自MongoDB的方式)。 我看到的一个缺点是,当用户在数据库中被修改时(他编辑了他的configuration文件),我必须在会话中“重新设置”用户对象。 例如,如果pipe理员更改了用户的configuration文件,则会变得更加复杂 – 在这种情况下,会话不知道用户已被修改,并且数据需要从数据库中刷新,因此会话当前拥有过时的用户对象仅在下次用户login时更新。 创build一个“hash => userid”的集合,并在会话中只存储散列。 然后每一个请求,调用一个中间件,将检查(下面的伪代码,省略检查不存在的哈希,在这种情况下,用户可能会被视为没有login,因为会话过期): 如果(在req.session中的userhash)res.local.user = db.users.findById(db.sessions.findUserIdByHash(req.session.userhash)); 那么这种方法的明显的缺点是额外的收集(即mongodb)或key =>值(即redis)存储散列=> userid也需要一些过程来清理旧的会话哈希(将运行的计划任务\ cron和删除旧的过期的哈希)。 另一个类似于#2的解决scheme,而不是使用三维方collection / key =>值存储,将散列存储为MongoDB中的User对象的一部分。 然而,此方法消除了额外的收集/ redis键值,但仍然需要计划的任务来清除旧的过期会话。 由于过期的会话可能会由“过期date”属性定义,因此它更容易维护活动会话的三方聚合,而不是将会话相关数据放入MongoDB中的User对象(从而使User对象变大)。 我是Node-j的新手,这就是为什么我要问。 我也明白,可能没有正确的答案,或者可能会受到个人喜好的限制。 谢谢!

正确的方式来结合使用loopback.js路由和APIvalidation

我目前正在使用node.js和AngularJS构build一个web应用程序。 我正在使用loopback.js来构buildAPI和相关模型。 Loopback提供了自己的用户模型,angular色系统和ACL工具,并且为API本身设置安全性几乎是微不足道的。 然而,作为一个API框架,它并不提供(据我所知)为路由提供访问控制的解决scheme。 我想使用loopback提供的安全模型来确保路由。 例如,如果用户通过Loopbacklogin,我想使用该会话数据来控制用户可以在我的应用中访问哪些URL,而不是API。 我将如何以正确的方式去解决这个问题? 例如,有什么方法可以将Loopback提供的validation数据与Passport或类似的validation框架集成?

我如何使用Passport.js返回到当前散列位置?

我使用Passport.js通过OAuth与Google进行身份validation(我正在使用passport-google-oauth策略)。 它工作正常,但我目前redirect到“/”,我想发送他们到“/”加上当前的哈希标签。 我可以在一个查询string参数中发送散列值,但我似乎无法将该值设置为我传递进行身份validation的对象的callbackURL属性。 有人可以提供一个例子或解释正确的方法来做到这一点? 我并不赞成使用查询string,它似乎是最直接的路线,但我打开使用会话variables或其他东西,如果这将是更容易或更好的做法。 谢谢。

如何从第三方node.js服务器validationGame Center用户

我一直在试图获得新的iOS Game Center GKPlayer方法generateIdentityVerificationSignatureWithCompletionHandler ,所以我们可以安全地依靠Game Center凭证进行身份validation。 我们使用Node.js作为后端服务器,我一直在尝试validation签名,但是无济于事。 这里是我有的服务器端的代码 – 如果有人谁可以在什么缺less的钟声,这将不胜感激。 这个问题在这里有所回答: 如何在我的“第三方服务器”上validationGKLocalPlayer? ,但是Node.js并没有被专门的解决。 请注意,以下代码不能确保签名授权(尚)的证书的有效性。 //Client sends the payload below //json.playerId – UTF-8 string //json.bundleId – UTF-8 string //json.timestamp – Hex string //json.salt – base64 encoded //json.publicKeyURL – UTF-8 string //json.signature – base64 encoded var json = JSON.parse(req.body); console.log(JSON.stringify(json)); //get the certificate getCertificate(json.publicKeyURL, function(cert){ //read file […]

validationJson Web令牌并在login后redirect

我最近读了Angularjs的Cookies和Tokens ,并实现了login和身份validation部分,以允许用户从login页面login。 该应用程序设置为将账户模块(负责login,账户注册,个人资料等)作为单独的页面,将redirect到主应用程序的SPA。 成功login后,令牌作为JWT发送回login页面客户端,并通过js设置sessionStorage / localStorage值。 最后用户被redirect到(也通过js)到主应用程序。 这个问题是因为我通过jsredirect无法设置头,这显然在加载页面时主应用程序中的身份validation失败(因为我的身份validation中间件比静态和身份validationAPI要求都高)。 如果我尝试在表单发布之后从服务器redirect,而不是在成功时通过JSON返回标记,那么sessionStorage将不会按照博客文章中的描述通过js进行设置。 我已经提出了一些想法,并希望得到有关如果哪一个对最佳实践都有好处的意见。 从服务器设置一个响应authenticationcookie'只有'(我们所有的浏览器要求允许这个)cookie在下一个请求中读取到主应用程序。 然后cookie将被服务器读取并允许安全的静态资产被服务。 我最初的想法是设置一个cookie,它违背了在每个请求上使用授权标头的目的,因为即使在第一个API请求中删除了cookie,也可以读取该cookie。 允许之前提到的静态资产在不需要authentication的情况下(html,css,application js)和第一个内部API请求(在应用程序中几乎立即被加载)加载,然后通过Angular的$ http拦截器访问请求授权标头。 如果发回401,则相同的拦截器可以redirect到login页面。 我认为第二种方法是比较简单的方法,因为只需要将静态文件中间件下的auth中间件移动到Angular中,然后更新http拦截器,但是认为静态文件可以加载然后redirect事后。 任何input赞赏。

sails-auth模块给出“不能读取属性'loadStrategies'的未定义的”

我已经安装了npm模块,并解除我的应用程序,它会给出以下错误。 我无法在GitHub问题或Wiki中find任何合适的解决scheme。 模块在这里 。 我已经在我的config目录中包含了passport.js和auth.js文件,正如他们所指出的那样。 $ sails lift info: Starting app… /home/me/Documents/projects/margin/node_modules/sails-auth/api/hooks/sails-auth.js:4 sails.services.passport.loadStrategies(); ^ TypeError: Cannot read property 'loadStrategies' of undefined at Hook.initialize (/home/me/Documents/projects/margin/node_modules/sails-auth/api/hooks/sails-auth.js:4:30) at Hook.bound [as initialize] (/usr/local/lib/node_modules/sails/node_modules/lodash/dist/lodash.js:729:21) at /usr/local/lib/node_modules/sails/lib/hooks/index.js:75:14 at /usr/local/lib/node_modules/sails/node_modules/async/lib/async.js:454:17 at /usr/local/lib/node_modules/sails/node_modules/async/lib/async.js:444:17 at Array.forEach (native) at _each (/usr/local/lib/node_modules/sails/node_modules/async/lib/async.js:46:24) at Immediate.taskComplete (/usr/local/lib/node_modules/sails/node_modules/async/lib/async.js:443:13) at processImmediate [as _immediateCallback] (timers.js:358:17)

使用node.js,nano和CouchDB进行身份validation

在初始化后,有没有办法在nano中更改configuration参数? 我想通过以下方式启动nano: nano = require('nano')('http://127.0.0.1:5984') 并在用户提交login表单后更改用户名和密码。 我总是得到一个错误: nano.cfg.user = params.user.name TypeError: Cannot set property 'user' of undefined 或者我应该分叉纳米和写一个身份validationfunction来调整值?

Passport.js相当于Python?

有没有一个库允许我快速添加login选项到我的Python(Google AppEngine)应用程序,类似于Passport.js?

在PhoneGap应用上执行授权(通过脸书)REST请求到我的node.js服务器

由于这个问题是关于三种技术,我想快速介绍它们中的每一个: node.js:在服务器端的JavaScript(认为它是我的networking服务器) PhoneGap:允许我用HTML / Javascript / CSS编写Android应用程序的框架。 Facebook身份validation:使用everyauth让我的用户使用他们的Facebook帐户login 目标 :我需要我的PhoneGap应用程序使用基于REST的协议与我的服务器进行通信。 这些请求中的很多只能在用户使用他们的Facebook账户login到我的服务器时进行。 因此,用户需要login,然后进入PhoneGap应用程序的login状态。 问题 :当我设置facebook的everyauth我基本上有一个URL,像domain.com/auth/facebook将redirect到Facebook的login“popup”。 当用户接受login时,服务器将知道,到目前为止一切都很好。 问题是这样的 用户现在必须redirect到某个外部URL,而他应该简单地回到PhoneGap应用程序(处于login状态) PhoneGap应用程序不会检索身份validation令牌,也不会检索身份validation是否成功,因为login过程是在外部URL domain.com/auth/facebook中完成的,而PhoneGap应用程序的HTML则存储在电话本身上并从其中运行 问题的原因:出现此问题的原因不在于正常的Web应用程序,而是PhoneGap应用程序的HTML文件存储在电话本身中,并通过domain.com/auth/facebook进行身份validation成为一个不同的领域。 build议的方法#1 :PhoneGap用户build议我使用PhoneGap的Android-Facebook插件 。 这里的问题是服务器不作为authentication中间人。 因此,用户将不得不通知服务器他们的authentication令牌,而不是服务器通知用户成功的authentication过程和相应的令牌的正常方法。 这似乎是一个严重的漏洞。 我应该如何解决这个问题?