Tag: oauth

Spotify API Web:没有Node.js的OAuth

我使用了Web API Spotify。 我遵循教程( https://developer.spotify.com/web-api/tutorial/ )创build身份validation。 但是,它使用Node.js,我想我们能不能没有它呢? (我的代码的其余部分是在JavaScript中,不需要Node.js) 先谢谢你。 文森特Leveque

OAuth范围在同一应用程序中的不同stream量?

上下文 我有一个Node.js应用程序,它具有一套“复杂”的OAuthstream程,以使UX更简单。 我有通常的login和注册stream程,您可以使用OAuth提供程序进行身份validation。 这里我不需要任何特殊的scope ,因为OAuth纯粹用于身份validation,用户没有理由要给我提升权限(比如私人的GitHub仓库),甚至可能认为这是一个可疑的事情,所以他离开了,再也不会访问我的产品。 所以,没有纯粹的authenticationstream程的scope 。 该应用程序还具有导入function,您可以从OAuth提供程序(例如GitHub存储库)导入实体列表。 默认情况下,你不会在这里要求任何scope 。 点击“寻找你的私人存储库?” button再次validation你对GitHub,要求repo范围。 这一切都很好。 问题 当用户尝试再次login或以其他方式进行身份validation但不明确请求repo作用域时,GitHub认为这是明确的降级请求。 问题是用户在login过程中不会因为没有特殊原因而降级 。 同样, 我不想在login时要求比我需要更多的权限 。 离开这个状态的东西比在login时要求repo更糟糕,但这也是一个非常糟糕的select。 潜在的解决scheme 除了两个非解决scheme,我提出的潜在解决scheme是: 根据请求的scope明确地询问GitHub的唯一访问令牌 ,分别存储令牌,然后根据需要使用它们 那真是太好了,除非它是有状态的,我还没有find办法去做; 他们似乎给每个应用程序用户一个单一的令牌,我怀疑OAuth是如何工作的,但我几乎不是这方面的专家。 如果GitHub拥有比所要求的更多的特权,请明确告知GitHub 不要降级它。 这听起来应该是默认的行为。 无论如何, 有什么办法可以告诉GitHub不要降级令牌吗? 如果没有,有没有其他办法可以解决这个问题,而不是在整个应用程序中要求相同的范围? 这首先会部分地破坏示波器的目的。 另外,这是一个GitHub的具体问题? 我是否需要按提供者的方式处理这个问题? 有没有协议级别的解决scheme奇迹般地让问题消失? 还是OAuth只是不考虑用户体验? FWIW我正在使用iojs和passportjs ,但我认为这与问题没有任何关系。

使用paypal的战略护照:未能获得访问令牌

护照(Jared Hanson) 我如何使用贝宝与openID或OAuth? 我正在使用Passport-paypal-oauth策略( https://github.com/jaredhanson/passport-paypal-oauth ), 注意:我的路线以localhost:4000 / api / users开头 HTTP://本地主机:4000 / API /用户/登入/贝宝 HTTP://本地主机:4000 / API /用户/登入/贝宝/callback 我的PayPal终点: var passport_paypal = require('../middlewares/passport-paypal'); router.get('/signin/paypal', passport_paypal.authenticate('paypal-signin', { scope: 'openid profile email'})); router.get('/signin/paypal/callback', function(req, res, next){ passport_paypal.authenticate('paypal-signin', function(err, user, info){ // Handle cases //return res.status(xxx).json('.. }); 我的Paypal策略: var PaypalStrategy = require('passport-paypal-oauth').Strategy; passport.use('paypal-signin', new PaypalStrategy({ clientID : […]

使用Node.JS上传到Flickr:无效的auth_token

所以我是OAuth和Node.JS的新手,但是我必须创build一个Flickr机器人来上传大学项目的照片。 从我的理解,节点没有本地支持multipart/formdata请求,所以我构造了POST请求手动。 我知道下面的代码不一定是干净的或者是最好的,但是它是一次性的攻击:服务器被一台计算机请求,只运行几个小时。 this.post = function(text, image) { var me = this; if (me.authenticated) { fs.readFile(image, 'utf8', function(err,data) { if (err) throw new Error(err); var bound = (crypto.createHash('md5').update((Math.random()*9999999).toString()).digest('hex')); var req = http.request({host:'api.flickr.com',port:80,path:'/services/upload/',method:'POST', headers:{ 'Content-Type':'multipart/form-data; boundary='+bound, 'Content-Length':data.length, 'Connection':'keep-alive' } }, function(res) { res.setEncoding('utf8'); res.on('data', function(chunk) { console.log(chunk); }); console.log(me); }); bound = "–"+bound; req.on('error', function(msg) {console.log('FLICKR […]

在iOS / Node应用程序中使用google / twitter / linkedInauthentication

我正在尝试为我正在开发的几个应用程序制定出最好的架构。 在这两个应用程序,我想利用谷歌/叽叽喳喳/ LinkedIn /等提供用户身份的身份validation。 该应用程序是由一个iOS应用程序,它可以select发送数据到我在node.js中写入的服务器。 我想利用OAuth或者OpenId来处理识别上面的服务器的用户,这样我就不必把我自己的authentication系统。 换句话说,允许用户在select上传数据时重新使用他们的ID。 我还应该注意到,除了识别用户,获取姓名和电子邮件地址之外,目前我还没有打算使用他们的任何API。 我想我有两个select: 将授权代码放在iOS客户端中,并使用可以validation的数据将某种密钥传输到服务器。 保持iOS客户端相当愚蠢,并处理来自节点服务器的授权。 我可能更喜欢第二个选项,因为这意味着我可以集中身份validation,并能够支持一个网站。 这是我目前的理论。 谁能做这样的事情给我一些关于利弊,OAuth或OpenId的指针,或者链接到一些例子?

创buildOAuth API时的应用程序令牌/机密

背景:我正在使用node.js来表示创build一个API。 我已经在API服务器中以标准的用户/用户密钥/秘密方式实现了OAuth(与Twitter,Facebook等一样)。 我希望第三方连接到我的API,再次以与这些公共API相同的方式。 通常情况下,客户端将连接一个应用程序令牌/秘密(例如,您创build一个Facebook应用程序作为Facebook开发人员,这些给你)。 但是,有时候,客户端不能为应用程序提供秘密,因为代码是以不安全的方式实现的。 具体来说,我指的是Javascript库。 例如,开发人员不希望在Javascript代码中暴露他们的应用程序秘密,因为它是明文的,可以被恶意用户读取。 我注意到Facebook避免了这个问题。 开发人员只需要向Javascript库提供一个应用程序令牌(而不是秘密)。 我不明白如何为我的API提供类似的选项,而不会从根本上使我的库不安全。 也就是说,如果请求是由Javascript客户端库向API提出的,而没有提供安全的令牌/秘密,那么这些请求如何通过OAuth API进行身份validation? 在理智上,我能想到的最好的解决scheme是通过HTTPS连接在Javascript客户端库和API服务器之间进行某种令牌转换,以便为库返回一个秘密。 不过,我不确定如何确保这个切换,以防止恶搞。

如何从passportjs中的刷新令牌获取新的Google oauth访问令牌

似乎有关于如何从刷新令牌获取访问令牌的一些冲突的build议: 这回答说,passportjs不涉及刷新访问令牌,它应该通过cron作业完成: 刷新Passport.js中的令牌 这回答说:“不需要任何cron作业…当用户使用已过期的访问令牌从API请求数据,这应该会导致您的框架失败,更新,然后重试。 OAuth 2.0 – 访问令牌何时应该刷新令牌? 确保我们始终向Google提供有效的访问令牌的最简单方法是什么? 现在,我们只是将刷新令牌存储在数据库中,从不使用它,每当访问令牌过期时,都会强制用户通过“允许/拒绝权限”stream。

你将如何在Node.js中创build一个“私人testing”用户队列系统?

我们正在创build一个基于Node的新Web应用程序。 由于许多应用都是这样做的,我们希望限制注册用户的数量,所以我们可以顺利地进行testing和扩展。 所以,人们会注册(使用电子邮件地址),然后当一批用户被释放(手动或自动)时,该批次将收到一封允许他们注册的电子邮件。 我已经在用户端多次看到这个过程,但是从来没有涉及构buildtesting队列系统,所以我不确定从体系结构/代码的angular度来看待这个过程的最好方法。 一些具体问题可能是: 什么是从节点angular度注册stream程? 什么可能是底层的数据模型? 对于“时间释放”或批量版本的用户,pipe理或触发它的最佳方法是什么? 有节点模块可以帮助吗? 任何帮助赞赏。

如何使用passport-google-oauth成功validation后redirect到原始页面

我正在使用node passport-google-oauth模块,并尝试使用基于会话build议的Node.js Passport的Google策略中的自定义returnUrl成功进行身份validation后,将页面redirect回原始path。 但是,我发现在我的callback中,存储在会话中的redirect信息总是被删除,所以我被迫redirect到默认值(在这种情况下是“/”)。 这里是我的代码片段的日志输出。 看起来在callback中,returnTo被消灭了。 这是一个护照的devise谷歌oauth? 如果是这样,authentication成功后又怎么能redirect到原来的页面呢? //从输出 Storing url: /newroom in /auth/google, returnTo = /newroom in /auth/google/callback, returnTo = undefined Storing url: /newroom in /auth/google, returnTo = /newroom in /auth/google/callback, returnTo = undefined //代码片段 var express = require('express'), [sic] passport = require('passport'), GoogleStrategy = require('passport-google-oauth').OAuth2Strategy, cookieParser = require('cookie-parser'), expressSession = require('express-session'), bodyParser = […]

使用Angular.js处理基于OAuth令牌的authentication?

我已经在Node.js中设置了我的后端代码,使用护照成功validationGitHub。 我能够使用jsonwebtoken生成一个标记。 但是,由于OAuth的stream动,我无法pipe理前端。 如果这是基于他们input电子邮件和密码的forms,则视图可能有点像这样: <form ng-submit="login()"> <input ng-model="user.email" type="email" name="email" id="email" ng-required /> <input ng-model="user.password" type="password" name="password" id="password" ng-required /> <button type="submit">Log in</button> </form> 在此stream程中,控制器可以使用login()向路由发出请求,并在成功时接收包含currentUser和令牌的对象,并在callback中redirect。 OAuth的stream程在这里造成了一些麻烦。 在OAuth中,您将用户redirect到站点之外,并返回到服务器上设置currentUser的node.js端的callbackURL。 我不知道如何将angular度前端连接到这个过程。 在angular度,你应该如何处理这个,点击一个“Githublogin”button将更新$window.sessionStorage.tokenvariables和$rootScope.currentUser对象?