Tag: oauth

使用OAuth2保护nodejs / sailsjs API

我用sailsjs开发了一个REST API,我想添加OAuth2授权来保护这个API。 我对OAuth很陌生,我不知道从哪里开始。 我发现可以用于这个目的的几个模块,例如oauth2orize和它的用法的一个例子https://github.com/aaron524/sails-oauth2-provider-example但我不完全理解这是如何工作的内部。 基本上,我将有几个客户端使用我正在开发的API: – 我信任的客户端,我希望与“资源所有者凭据授权”一起使用 – 我不信任的客户端,并使用授权码stream程 我正在考虑在sails应用程序中的Client模型中添加一个受信任的属性,然后当用户login到应用程序时: – 他将直接访问其资源(受信任应用程序的情况) – 他将被要求批准或拒绝应用程序访问其资源(不可信应用程序的情况) 这是一个好方法吗? 任何关于如何根据客户端可信级别select相应策略的指针? UPDATE 我已经在GitHub上安装了下面的项目,使用了我发现的几个教程和项目。 https://github.com/lucj/sails-oauth2-api 这个项目还没有function。 当用户通过应用程序使用API​​时,我仍然不清楚如何select正确的授权types(授权码与资源所有者的密码)。 如何将此检查整合到政策中? 我无法创buildOAuth endPoint(/ oauth / authorize,/ oauth / token)和对oauth2orize的调用之间的链接。 任何想法 ?

使用nodejs创buildOAuth2服务器

我正在研究REST Apis安全性,似乎很多人都在使用OAuth2和OpenId协议来pipe理身份validation。 我试图实现两个OAuth2服务器使用: http://passportjs.org/为客户端和https://github.com/jaredhanson/oauth2orize为服务器端 https://www.npmjs.org/package/node-oauth2-server 对于第一个解决scheme,运行示例工作正常,但我需要做一些无状态的(在这个例子中,作者使用会话…) 你能帮我创build一个最简单的oauth2服务器吗?或者默认地向我解释这些库的整个function? 感谢提前

nodejs是不是感觉时间漂移?

我正在解决OAuth身份validation问题(invalid_grant),其中两个可能的原因之一是服务器的时钟与NTP不同步。 我确保服务器的时钟是同步的。 nodejs是否实例化自己的时钟或引用系统时钟? 我期望它会引用系统时钟。 我只问,因为重新启动nodejs暂时修复问题(invalid_grant),我想排除时间同步。

使用Node.JS使用OAuthvalidationJIRA REST API

我在Node.js中构build了一个客户端应用程序,用于创build新的JIRA问题,并且想要使用OAuth对用户进行身份validation。 对于Jira和Oauth新人来说,Atlassian文档是非常糟糕的。 所以,我正在寻找一个描述如何设置JIRA应用程序链接的示例,以及如何在通过OAuth连接到Jira的节点中构build基本应用程序。 我不确定在哪里可以看。 (我正在使用JIRA v6.0.4)

在javascript / node.js中连接到Gmail IMAP API

我试图通过IMAP API连接到Gmail。 我正在使用Bruno Morency的node-imap库 。 为了创buildoauth_signature,时间戳和随机数,我使用另一个库 。 更具体地说:资源所有者已经authentication了消费者。 所以我有一个访问令牌+秘密。 当然,我也有消费者的秘密+标志。 所以我想要的是使用这里描述的XOAuth机制(标题:SASL初始客户端请求)login。 当执行代码时,我得到一个错误: Error while executing request: Invalid credentials d43if2188869web.36 我不知道我做错了什么。 其实可能有更多的原因。 错误的base64编码(虽然编码可能正常工作,因为你得到不同的编码不同的错误,我很确定这不是),错误的签名计算(更新:我现在用http://oauth.net/core/ 1.0a /#sig_base_example ),nonce计算或其他。 我可以在Java应用程序中使用相同的凭据(消费者+资源所有者)进行身份validation,所以凭据很可能不是错误的原因(只是错误的编码/签名计算) 最后的代码。 我省略了消费者的钥匙+秘密,因为显而易见的原因,既没有给所有人的标志+秘密也没有。 var oauth_version = "1.0"; var oauth_timestamp = OAuth.timestamp(); var oauth_nonce = OAuth.nonce(6); //random nonce? var oauth_consumer_key = "NOTFORYOU"; //validated var oauth_consumer_secret = "NOTFORYOU"; //validated var oauth_token = […]

从移动客户端执行oAuth的“正确”方式

我正在构build一个跨平台的移动应用程序(使用Xamarian工具,MonoTouch / MonoDroid)。 我正在尝试通过身份validation工作stream程,正在陷入绊脚石。 我已经搜遍了一个明确的答案,还没有find它。 这里是我目前的设置的概述。 我有一个build在nodejs中的网站。 我使用passport.js在网站上进行oAuthlogin。 这很好,用户可以使用Twitter或Facebooklogin到我的网站。 现在我想将这个相同的loginfunction扩展到我的移动客户端。 我看到2个选项 将应用程序ID和应用程序密码embedded到移动客户端,并从移动应用程序直接向FB或Twitter发送oAuth调用 通过我现有的nodejs web服务器代理oAuth调用(保留服务器上的密钥) 选项2似乎是首选的方式(因为它避免了在移动应用程序中“运送”秘密)。 我有代理方法主要工作。 我在移动客户端打开一个WebView,并将其指向http://mysever/auth/twitter 这通过我现有的passport.js代码运行,并将移动WebViewredirect到Twitterlogin页面。 用户然后在设备上的twitter网页上input他们的信用。 Twitter然后调用我的oAuthcallbackURL(这是我的nodejs web服务器)。 我的服务器和Twitter处理后面第四次握手获取用户configuration文件信息( 据我所知,这是这种方法的关键,我的服务器和叽叽喳喳处理握手,移动客户端不必做任何事情或通过在这个过程中的任何令牌 ) 这是我的问题 : 这是我的最后一步。 一旦我的服务器上的握手完成,我有我需要在服务器上的用户信息, 需要将其发送回移动客户端应用程序 我无法弄清WebView控件中的任何方式来获取响应对象,并获取cookie或标头值(例如)(对于Android和iOS来说,这似乎是正确的)。 我不认为这是平台特定的。 我想我正在尝试做一些移动平台上的WebView小部件,但是并不支持。 这让我觉得我失去了一些明显的东西。 我唯一想到的是让我的networking服务器将移动客户端浏览器“redirect”到查询string中具有用户信息的假URL。 像myapp:// info?userid = 1234 然后在移动应用程序中,我可以劫持URL加载,并抓住这个url,并获得我需要的数据。 然后,我可以隐藏这个用户信息,closuresWebView控件,并移动到我的移动应用程序中的本地屏幕,并在随后的REST调用中将用户信息作为识别用户的手段用于我的nodejs服务器。 由于多种原因,这是大规模的。 其中最大的一点就是url是通过未encryption的线路发送的,并且所有的数据都是纯文本的。 从Web服务器获取数据返回给移动客户端还有更好的方法吗? 还是我做错了?

在Node中使用Passport中间件进行Twitter身份validation

我正在开发一个网站与Node.js(使用Express框架)。 为了使用Twitter身份validation,我正在使用passport模块(http://passportjs.org),他的Twitter包装器称为passport-twitter 。 我的服务器端脚本是: /** * Module dependencies. */ var express = require('express') , routes = require('./routes') , user = require('./routes/user') , http = require('http') , path = require('path') , passport = require('passport') , keys = require('./oauth/keys') , TwitterStrategy = require("passport-twitter").Strategy; var app = express(); app.configure(function(){ app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/views'); app.set('view […]

使用Passport.js将facebook数据链接到当前login的用户

我正在使用passport.js,如果我可以将一个Facebook ID链接到一个login用户的帐户,我正在伤人。 像这样的东西: passport.use( new FacebookStrategy({ consumerKey: — consumerSecret: — callbackURL: "http://mycallback" }, function(token, tokenSecret, profile, done) { if (user is logged in) user = User.addfacebookId(user, profile.id) done(user); } } ));

是否有任何Node.js客户端库来对Twitter,Facebook,Google,LinkedIn等进行OAuth和OAuth2 API调用?

我做了很多谷歌search,我能find的最好的是: https : //github.com/ciaranj/node-oauth 是否有任何图书馆,提供包装,使Twitter的调用Twitter,Facebook的,谷歌,LinkedIn等发表推特或DM某人或得到朋友列表或张贴到Facebook / G +等的链接。 ? 我知道Passport.js,但它的使用限于从这些社交网站获得authentication和授权。 除此之外,目前我们将不得不通过node-oauth个性化API调用来执行上述活动。 我错过了什么吗? 你知道有这样的图书馆吗?

护照和oauth有什么区别?

我正在尝试使用express.js构build一个身份validation服务,但是我还没有注意到身份validation模块的想法。 护照和oauth中间件有什么区别? 他们是相互依赖的吗? 没有oauth服务器生成令牌到BearerStrategyvalidation是没有用的BearerStrategy? 我是否正确? 我已经阅读了oAuth2及其身份validationstream程,但是我仍然失去了这个非耦合的代码。 我试图build立资源所有者密码authentication与刷新令牌我的AngularJS前端与后端API通信,我面临的密码.js策略(基本,承载,ClientPassword)与oauth2orize在另一端的许多组合。 所以,我想知道如何authentication在NodeJS上工作的一个非常简单的解释。 实际上,我知道Express并不是在发明一种authentication如何工作的新方法,但是这些模块太不显眼了,所以我需要了解它如何实现它们的协同工作的基础。