Tag: oauth 2.0

SPA(angular度)身份validation与OAuth2提供商的独立域上的API和身份validation服务器; Google,Facebook

我有一个angular度的应用程序运行在独立的域比我的api / auth服务器。 对于本地的例子:我的angular度应用程序是在localhost:9000,我的api / auth服务器是在localhost:3000。 或者,如果这是公开的,例如在CDN上的angular色。 我想使用服务器/代码stream与Google和Facebook进行身份validation。 我见过的例子使用窗口popup窗口或cookies。 由于CORS问题,Cookies不可能出现问题,我希望这个Web API也可以在移动应用程序中使用。 我发现Sattelizer,这工作良好,但我正在寻找与护照一起工作的解决scheme。 本质上是一种用于交换访问令牌的授权代码(通过angular度应用程序传递)的通行证策略,而不是直接从后端请求访问令牌。 如果这不存在,我可能会尝试做一个。

如何在没有Cookie的情况下在SPA中使用第三方authentication服务?

在我的Web应用程序中,恰好是一个SPA(单页应用程序),我有OpenID和OAuth2.0客户端用于使用第三方服务进行用户validation。 即Google(OpenID),Yahoo(OpenID),Windows Live(OAuth2)和Facebook(OAuth2)。 现在,我已经设置了一个令牌端点,用于交换不记名令牌的用户凭证。 这里的目标是通过在SPA的所有请求中设置的授权标头replaceCookie。 为此,我使用OAuth2.0客户端密码身份validation策略和“密码”grant_type根据凭据(oauth2orize + passport-oauth2-client-password)对用户进行身份validation。 我想知道 : 如何使用第三方服务validation的用户继续使用令牌承载validation方法? OAuth2.0规范中有什么处理这种情况? 这种实现的常见做法是什么?

在客户端节点oauth2服务器和客户端凭据

我实际上使用Node-oauth2-server( https://github.com/thomseddon/node-oauth2-server ),我有一些问题 1)我实际上使用grant_type作为密码和refresh_token,我必须在客户端设置client_id和client_secret。 这不是一个安全问题暴露我的客户端端client_secret&我的client_id? (AngularJS) 2)我想给一个API密钥给其他用户/公司来访问我的REST Api。 我应该如何处理这个图书馆? 3)什么是exaclty client_credentials? 它代表一个“技术客户端”(如浏览器,一个Android应用程序?在这种情况下,我只有2个client_id和2个client_secret?))或者像公司一样的人类客户端? 3)关于API资源的权限访问呢? 我应该由客户处理吗? 由用户? 我希望你能帮助我更多地理解这个复杂的议题 感谢提前

来自nodejs中的oauth2-server错误的REST接口

我正在使用nodejs( npm )的oauth2-server插件,并具有以下configuration: app.oauth = oauthserver({ model: oauth.model, grants: ['password'], debug: false }); 当我GET / oauth /令牌没有发送任何参数(没有头,没有查询,没有正文),我得到以下错误为500 – 内部服务器错误: { "name": "OAuth2Error", "message": "Invalid or missing grant_type parameter", "headers": { "Cache-Control": "no-store", "Pragma": "no-cache" }, "code": 400, "error": "invalid_request", "error_description": "Invalid or missing grant_type parameter" } 消息中的代码表示400(错误的请求),我想发送的消息不是500而是400响应。 此外,我得到我的控制台上的错误,即使我有debug:false作为configuration。 我怎样才能改变呢?

PassportJS:BasicStrategy vs LocalStrategy?

看着许多PassportJS的例子,我对使用BasicStrategy感到困惑。 有些人使用它进行用户名/密码authentication,其他用户使用clientID / clientSecretauthentication,而有些人完全不使用LocalStrategy。 BasicStrategy的正确目的是什么? 不应该只使用ClientPasswordStrategy来通过ID /密钥来validation客户端吗?

为Vkontakte oauthconfigurationSatellizer.js

我正在尝试为vk.com授权configuration卫星。 但是,我试图validation时,不断收到500内部服务器错误。 这是我的configuration: 在客户端: $authProvider.oauth2({ name: 'vkontakte', url: '/auth/vk', redirectUri:window.location.origin || window.location.protocol + '//' + window.location.host, clientId: 'my-client-id', authorizationEndpoint: 'http://oauth.vk.com/authorize', scope: 'friends, photos, email, photo_big', display: 'popup', responseType: 'code', requiredUrlParams: ['response_type', 'client_id', 'redirect_uri', 'display', 'scope', 'v'], scopeDelimiter: ',', v: '5.37' }); 和服务器端路由的相关部分: //vkontakte app.post('/auth/vk', function(req, res) { var accessTokenUrl = 'https://oauth.vk.com/access_token'; var params = { […]

ValidationError:validation失败mongoose

你好,我正在尝试连接Node.js与Facebook。 我正在关注这个博客条目。 有人能帮我吗? 我得到这个错误: ValidationError:Validation failed at model.Document.invalidate(/Users/me/node_modules/mongoose/lib/document.js:1009:32)at /Users/me/node_modules/mongoose/lib/document.js:958:16 atvalidation(/Users/me/node_modules/mongoose/lib/schematype.js:610:7)在/Users/me/node_modules/mongoose/lib/schematype.js:627:9在Array.forEach(本地)在SchemaString。 SchemaType.doValidate(/Users/me/node_modules/mongoose/lib/schematype.js:614:19)at /Users/me/node_modules/mongoose/lib/document.js:956:9 at doNTCallback0(node.js:419 :9)at process._tickCallback(node.js:348:13) var FacebookStrategy = require('passport-facebook').Strategy; var BearerStrategy = require('passport-http-bearer').Strategy; var passport = require('passport'); var mongoose = require('mongoose'); var ObjectId = require('mongoose').Types.ObjectId; // Mongoose connection to MongoDB (ted/ted is readonly) mongoose.connect('mongodb://localhost/testDB', function(error) { if (error) { console.log(error); } }); var userSchema […]

Google Calendar API v3服务帐户在创build活动时不会发送通知

我正尝试使用Google服务帐户创build日历事件(在其自己的日历中)并邀请一些与会者。 当我使用服务帐户和JWT身份validation创build事件时,事件已成功创build,但被邀请者不会收到电子邮件通知 – 请参阅下面的代码。 如果我使用客户帐户,则会发送电子邮件通知,但是我不想诉诸于此。 难道我做错了什么? var google = require('googleapis'); var SCOPES = ['https://www.googleapis.com/auth/calendar']; var key = require("./API-Project-key.json"); var jwtClient = new google.auth.JWT(key.client_email, null, key.private_key, SCOPES, null); jwtClient.authorize(function(err) { if (err) { console.log(err); return; } createEvent(jwtClient); }); /** * @param {google.auth.OAuth2} auth An authorized OAuth2 client. */ function createEvent (auth) { var calendar = google.calendar('v3'); […]

access_token不存在于passport-github2请求中

我已经通过我的Github帐户注册了一个OAuth应用程序。 我基本上试图授权我的node请求(通过发送access_token作为请求cookie的一部分),所以我可以访问另一台服务器上的几个API。 因此我使用github-passport2软件包。 我已经设置了Github策略等等,似乎都是根据文档。 stream程也运作良好。 我的问题 login到Github(授权)并redirect回到我的/auth/github/callback , 理想情况下应该被授权,并且在req应该有一个access_token 。 但我没有! 因此,我无法使用access_token来授权我未来的请求。 需要注意的是,当从浏览器/客户端(使用withCredentials: true参数)发起请求时,此access_token自动附加。 通过节点相同的access_token似乎不可检索。 passport.use(new GitHubStrategy({ clientID: GITHUB_CLIENT_ID, clientSecret: GITHUB_CLIENT_SECRET, callbackURL: "http://localhost:8080/auth/github/callback", }, function(accessToken, refreshToken, profile, done) { // asynchronous verification, for effect… process.nextTick(function () { return done(null, profile); }); } )); app.get('/auth/github', passport.authenticate('github', { scope: [ 'user:email' ] }), function(req, res){ // The […]

多个资源服务器的OAuth2stream

正如我试图为内部自定义用户库系统创build一个统一的OAuth2系统一个问题引起我无法find适合的文档: 在我们的微服务应用程序/服务结构中,我们有几个(web)应用程序客户机,它们通常具有单独的应用程序服务器或包含客户机中的所有逻辑。 他们正试图访问微服务networking。 有些API是直接访问的,有些是通过其他服务访问的。 为了保护这些资源,我设想了一个类似于以下的系统: 该图主要面向Node.Js + Passport重型结构,但现实生活中正在使用其他技术。 这里客户端/应用程序服务器将直接使用OAuth2授权服务器来处理完整的login和授权过程。 这将导致客户机/应用程序服务器拥有有效的访问令牌。 使用此访问令牌,然后可以通过在请求的授权标头中将令牌用作承载令牌来访问API。 然后API可以通过validation授权服务器来validation该令牌。 之后,它也可以临时保存令牌,以便不在每个请求上validation令牌,而是使用TTL来存储令牌。 当一个服务在内部访问另一个服务时,它应该只传递Access令牌,以便下一个服务可以再次validation它。 这是这种情况下的首选stream程/设置,还是我在这里犯了一个错误?