Tag: oauth 2.0

oauth2Client.getToken缺lessrefresh_token

我有一个小型快递服务器,有两个路线。 然后它将json标记写入一个文件(我知道非常不安全)。 出于某种原因,没有refresh_token 。 在文档中,对于access_type offline的评论获取了已设置的refresh_token ,但仍然不起作用 access_type: 'offline', // 'online' (default) or 'offline' (gets refresh_token) 这里是快递服务器,对不起,如果承诺抛出任何人。 var Promise = require("bluebird") var express = require('express') var app = express() var google = require('googleapis') var OAuth2 = google.auth.OAuth2 var clientSecrets = require("./client_secrets.json") var oauth2Client = new OAuth2(clientSecrets.web.client_id, clientSecrets.web.client_secret, clientSecrets.web.redirect_uris[0]); oauth2Client.getToken = Promise.promisify(oauth2Client.getToken) var fs = Promise.promisifyAll(require("fs")) […]

有没有人成功地使用Azure AD对Node.js Web应用程序的用户进行身份validation?

我正尝试使用Azure Active Directory为我的node.js Web应用程序validation用户,到目前为止没有运气。 我想知道是否有人实际上已经实现了,因为文档是相当差的。 通常有典型的代码,但并不真正表明所需的参数是什么以及它们应该是什么。 我已经尝试过passport-azure-ad(我认为是来自Microsoft)和passport.azure-ad-oauth2(来自Auth0(?))。 对于passport-azure-ad,我尝试了BearerStrategy和OIDCStrategy,没有运气。 对于BearerStrategy,我得到了一些关于我的客户端和资源的神秘消息来识别同一个应用程序,但由于没有文档告诉我应该是什么,所以我很茫然。 对于OIDCStrategy,我稍微接近一点,因为我redirect到Microsoft进行身份validation,但返回时出现错误“错误:ID令牌不存在于响应中”。 我猜我的要求是不正确的,无论出于什么原因都给我一个回报,但是因为没有文件…(你明白了)。 无论如何,如果有人已经成功地实现了这个目标,并且能够分享一些关于它是如何实现的,那将是很棒的。 非常感谢。

谷歌oauth 2.0 API密码更改用户名和密码不被接受

我有一个表格使用nodemailer,xoauth2与谷歌APi oauth2,我上周更新了密码,从那以后我的应用程序没有工作,我得到: '535-5.7.8用户名和密码不被接受。 了解更多信息\ n535 5.7.8 我尝试删除应用程序,并创build一个新的,但它似乎并没有拿起新的更改密码。 任何build议如何解决这个问题? 我已经允许不太安全的应用程序,并显示解锁validation码。

如何保护移动和AJAX调用的JSON RESTful API?

我正在构build一个使用node.js和express.js构build的JSON RESTful API, API将通过客户端AJAX调用(来自Ember.js)和原生Android移动应用程序(标准HTTP请求)来访问。 我正在研究两件事情: 1)身份validation – 如何知道哪个用户正在访问的API,在开发中我使用了一个API密钥为每个用户,并将其传递到请求标头 2)安全 – 如何确保只有真正的身份validation的用户访问私人数据。 API键是本地移动客户端还是AJAX调用的好策略? (用户向API发送用户+传递并接收API密钥,然后用于创build其他请求) 我应该看看像OAUTH(1或2)? 我目前还没有第三方应用程序访问API的计划,所以我不需要授权,但这可能会在将来改变。 这是否意味着我需要拥有自己的OAUTH服务器?

Gmail API是否支持JWT?

我想使用NodeJS访问Gmail API。 我正在使用服务器到服务器的方法(请参阅此 ),但是当我执行下面的代码时,我得到一个backEndError,来自Google API的代码500。 有任何想法吗? var authClient = new google.auth.JWT( 'email', 'key.pem', // Contents of private_key.pem if you want to load the pem file yourself // (do not use the path parameter above if using this param) 'key', // Scopes can be specified either as an array or as a single, space-delimited string ['https://www.googleapis.com/auth/gmail.readonly'] […]

实现自己的oauth2服务器和api服务器

我们试图实现oauth 2服务器和api服务器(都是不同的服务器)。 (全部使用nodejs) 我们正在使用https://github.com/FrankHassanabad/Oauth2orizeRecipes授权码stream程 我们是否需要在oauth服务器中编写新的validateToken函数,只需从api端点击它来validation该用户。 我们正在考虑在oauth方面保留用户和angular色,但是我们需要在给api调用响应之前在api方面检查它们。 我们正在尝试将它用于cms和移动应用程序的身份validation。 我们是正确的还是错过了任何东西。

OAuth2Client应该创build每个请求或caching每个用户?

我正在使用google api客户端的节点版本。 即: google-api-nodejs-client 。 作为这个的一部分,我设置了oauth-flow( 'google webserver'stream程是确切的。) 作为身份validation的一部分,这包括做如下的调用: var oauth2Client = new OAuth2Client(CLIENT_ID, CLIENT_SECRET, REDIRECT_URL); 和 oauth2Client.setCredentials(userSpecificTokens) 显然,第一个调用是特定于应用程序的,而第二个调用是用户特定的。 在这种情况下什么被认为是好的做法? 之一: 每个用户有1个oauth2Client和caching/保存令牌,并在每个请求上使用oauth2Client.setCredentials(userSpecificTokens)注入它们。 这基本上为每个请求创build一个新的oauth2Client 。 每个用户都有一个oauthClient ,包括已经应用的oauth2Client.setCredentials(userSpecificTokens) ,它是在需要时创build的,然后被caching。

使用nodejs应用程序上的刷新和访问令牌了解身份validationstream程

我知道已经有很多关于Oauth,Oauth2,JWT等的post了。我看了很多,而且比以前更加困惑,所以我正在寻求一些解释。 我会提出我对这个问题的看法,希望有人能告诉我,如果我的实施是足够安全的,或者我做错了什么,以及如何改进。 我正在build立一个API Rest服务器,为我的用户提供资源。 假设这是一个银行应用程序,用户可以存款,取款和转账。 我正在使用nodejs,hapijs,jsonwebtokens和bcrypt为我的服务器。 我想实现两个令牌authenticationstream程(Oauth2)。 这是我这样做的方式: 用户通过提供一些凭据(用户名和密码)login到auth服务器。 服务器validation用户的凭证,如果它们是有效的,它将授予对用户的访问并返回刷新令牌和访问令牌。 这些令牌被保存到浏览器或移动设备的本地存储器中。 access token : 被签名为jsonwebtoken。 包含发布date,过期date(5分钟),用户数据(id,用户名)。 refresh token : 被签名为jsonwebtoken并用bcryptencryption。 包含一个唯一标识符 可能包含到期date 保存在数据库中。 只要access token有效,即没有过期并且包含有效的用户数据,资源服务器就为用户提供所请求的资源。 当access token不再有效时,auth服务器请求客户端提供refresh token ,以便发出新的access token 服务器从用户接收refresh token ,对其进行解密,将其与数据库中的refresh token进行比较,检查是否已被吊销,并检查其唯一标识符。 如果refresh token通过所有testing,则服务器向客户端发出一个新的access token 。 如果refresh token一次testing失败,则服务器请求用户重新进行身份validation。 注:我正在尝试避免使用Cookie。 问题: 如果用户能够窃取access token ,我想它也可以窃取refresh token 。 那么,我怎样才能使refresh token更安全呢? Oauth2stream程的观点是否正确? 我可以改进什么? 我错过了什么吗?

redirect_uri的参数值无效:Missing scheme:/ auth / google_auth_code / callback

编辑 : 这是一个最小的可行的项目 我正尝试从服务器端stream的授权代码获取来自Google的访问和刷新令牌。 我遵循Google的指南: https : //developers.google.com/identity/sign-in/web/server-side-flow 。 我正在使用护照和护照-Google-authcode 。 以下是节点应用的路由: router.get('/auth/google_auth_code', passport.authenticate('google_authcode', { scope: [ 'https://www.googleapis.com/auth/calendar', 'profile', 'https://www.googleapis.com/auth/userinfo.email' ] }), function () { res.end(); }) router.get('/auth/google_auth_code/callback', passport.authenticate('google_authcode', { failureRedirect: '/error' }), function (req, res) { // do something with req.user res.send('hello'); } ); 这是该策略的护照configuration。 passport.use('google_authcode', new GoogleAuthCodeStrategy({ clientID: 'my client id', clientSecret: 'my […]

Node Express – 存储和检索authentication令牌

我有一个快速应用程序设置,需要一些关于存储令牌的build议。 在validation用户帐户后,我正在从OAuth 2服务器接收访问令牌,然后我需要为后续的api请求使用该帐户。 我想隐藏来自客户端的令牌值,我相信这样做的一个方法是将令牌保存在服务器中的一个编码的cookie,以便进一步的请求时,这些可以通过中间件路由,然后cookie可以用于检索令牌存储服务器端,然后在正在进行的对实际api端点的请求中用作标题值。 有人实际上已经问过这个问题 – 如何在一个Angular应用程序中存储一个身份validation令牌这正是我在我的应用程序中使用的stream程,但答案谈论使用一个Angular服务,我不太确定我想做到这一点,当然这可以全部由Express处理,所以客户端代码不需要知道令牌,只是API服务器返回的任何错误。 所以我认为我需要stream量总结: 用户提交login凭证 OAuth 2服务器返回访问令牌 令牌被保存在Express中的某个地方 生成一个cookie并将其发送回客户端。 Cookie包含可能编码的令牌值? 或者,也许存储在Express中间件组件中的令牌值的id? 客户端发出api请求,哪个Express路由中间件启动。 快速检查cookie的存在,并解码令牌值,或以某种方式从存储机制服务器端检索。 令牌值然后被用作expression和最终api端点之间的头部 有可能中间件已经在那里处理这种事情,我已经看到PassportJS似乎是我可能要使用的有点东西,但我不太确定它处理我正在工作的服务器上的OAuth2令牌stream反对(密码授予),而是似乎更适合redirectloginOAuthstream量。 我当然需要在某处保存令牌值,所以某种forms的存储(不在内存中,我不认为)。 对于Express,我是相当新的,所以如果能够解决这个问题的话,我会很感激你的build议。 谢谢