我试图实现一种只允许授权pipe理员在我的Web App / API中访问包含敏感信息的页面的方法。 我目前正在使用Node.JS和Express来处理路由。 使用Jade / Pug View Engine生成视图。 使用github上的请求框架处理CORS请求。 ( https://github.com/request/request ) 目前,客户端存储在一个MongoDB集合中。 当他们input他们的login信息时,他们的密码与存储在数据库中的哈希进行比较。 如果所有内容都检出,则为用户生成一个JWT并保存在客户端数据库中,并存储在浏览器的localStorage.token 。 然后用户被redirect到具有authenticationfunction的初始页面作为中间件。 身份validationfunction以三种forms接受令牌: var token = req.body.token || req.query.token || req.headers['x-access-token']; 我觉得redirect的处理方式有点怪异。 我正在使用window.location = route?token = [token] 令牌被移交给req.query.token中的authenticationfunction,但是这在URL中被公开。 这是我的loginfunction: function submitLogIn() { var credentials = { email: logInForm.userEmail.value, password: logInForm.pwField.value } fetch('/login', { headers:{ 'Content-Type': 'application/json' }, method: […]
我需要访问令牌提交站点地图。 我用这样的护照 passport.authenticate('googleApi', {scope: ['profile', 'https://www.googleapis.com/auth/webmasters']}); 并得到 { code: '4/aEzOOw1j-1rNCXCVajylMVRasdo2Kasdreisasdradk.MijA9hPKsg8WYFZr95uasdUzab8UkwI' } 在request.query中 但是这个令牌根据无效 https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=MY_TOKEN 提前致谢。
我使用jwt与NodeJS作为我的身份validation令牌。 目前,我签署的观众,IP和客户端的有效载荷。 我也把用户的guid放在有效载荷上,以便在随后的请求中,我可以使用guidfind用户; 一个guid的例子是bd262477-8b93-4f2c-9dc9-175edf6e0d14 。 这是不好的还是安全问题? 我想我问的是你应该把什么信息放在有效载荷上? guid好还是坏? 有人可以给我一个链接,解释为什么(或为什么不)有一个安全问题,你包括在令牌?
我正在寻找实施客户端 – 服务器身份validation(本地+社交)的最佳实践。 现在我正在分别开发后端和前端。 之前,我通过下一个stream程进行了身份validation: login – >接收令牌 – >调用API 我需要find一种方法将标记添加到黑名单中。 Tech stack:node.js(sails)front-end:angular 前端应用程序也应该可以调用多个服务器的API。 这意味着前端应用程序只能在主服务器上login一次,并可以调用另一个API。 我打开了现成的解决scheme。
我目前正在尝试开发一个使用DeviantArt API的节点应用程序。 所有的请求必须通过Oauth2,所以我决定去client_credentialsstream程,因为代码将是所有私人。 所以,一旦我在DeviantArt中注册我的应用程序,我得到了我的clientId和clientSecret。 我正在使用client-oauth2软件包进行授权,代码如下所示: const Oauth2 = require('client-oauth2'); … function auth() { return new Promise((resolve, reject) => { let auth = new Oauth2({ clientId: KEYS.client_id, clientSecret: KEYS.client_secret, accessTokenUri: AUTH_URL, // https://www.deviantart.com/oauth2/token authorizationGrants: ['credentials'] }); auth.credentials.getToken() .then((data) => { resolve({ token: data.accessToken }); }) .catch(reject); }); } 这工作到目前为止,我得到我的access_token 。 所以,我可以使用这个令牌来执行对API的任何请求,并且它实际上通过curl和浏览器使用: https://www.deviantart.com/api/v1/oauth2/browse/newest?access_token={{access_token}} 回到我的节点应用程序中,我正在使用请求包,代码如下所示: const request= require('request'); […]
我正在使用节点js rest api。 在authentication过程中,api返回一个访问令牌。 我需要将访问令牌添加到来自普通地点的每个请求。
我正在尝试为支持移动,桌面和networking应用的REST API实现OAuth2。 我已阅读第6章。刷新 Hardt,D.,Ed。,“OAuth 2.0授权框架”,RFC 6749,DOI 10.17487 / RFC6749,2012年10月 的访问令牌 根据RFC,访问令牌和刷新令牌保存到数据库,我正在使用MySQL。 我的问题是我应该在哪一点/ OAuth2的活动中删除所有过期的访问令牌和刷新令牌。 我应该为此运行cron作业吗?
是否有可能获得访问令牌,以便通过提供凭据 – 用户电子邮件和密码来使用node-linkedin包? 我想要做的是一个命令行应用程序,可以使api调用linkedin并将结果写入文本文件。 因此,我不会将任何api调用结果发送给客户端。
我正在用google appengine,node.js和socket.io构build一个webapp,而且我正在尝试设置一个google计算实例来使用本教程之后的google云数据存储api。 到目前为止,我已经完成了第1步和第2步,但是在本地运行下载的adams.js文件时,我得到了以下结果: Error: No access or refresh token is set. 我试过的东西: gcloud身份validationlogin(这logging我在谷歌,但没有设置我的令牌本地) 改变我出口我的DATASTORE_SERVICE_ACCOUNT和DATASTORE_PRIVATE_KEY_FILE值的方式,作为string,纯文本等 logging我的凭据在错误之前(我肯定缺less一个令牌) 创build一个新的服务帐户,并重新进行关键的创build步骤 运行curl“ 元数据/ computeMetadata / v1 /实例/服务帐户/默认/令牌 ”-D“元数据风味:谷歌”获取更多信息。 该命令给了我这个: <html> <head><title>301 Moved Permanently</title></head> <body bgcolor="white"> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html> 所以我肯定错过了一个令牌,但由于某种原因,我无法弄清楚我该如何得到它。 或者当我的应用程序部署并需要在线访问API时,我需要将其存储在哪里。 感觉这应该是一件很容易find的事情,但是由于某种原因,我正在阅读的所有文档都将我引入墙壁。 任何帮助都是极好的。
即使在Node.js应用程序中传递不记名标记,它也会导致未经授权的结果错误。 function getUser(authData){ var postData = querystring.stringify({ authorization: authData }); var options = { host: 'pole.auth0.com', method: 'GET', path: '/userinfo' }; //make request httpsRequest(postData, options) .then(function(result) { // success res.status(201).send({ 'success': true }); }, function(err) { res.status(500).send({ 'success': false, 'reasonCode': "Internal error." }); }); }; 帮手function: function httpsRequest (data, options) { return new Promise(function (resolve, […]