使用Express和Passport的Google令牌认证不起作用

蒂姆·巴克莱(Tim Barclay)

我用Express制作了一个REST api,它使用Passport和该passport-google-token策略对用户进行身份验证。当我的服务器在localhost上运行时,它可以按预期工作,但不能在服务器的实时版本上运行。所有呼叫均返回401未经授权的响应。

护照策略的配置如下:

this.passport.use(new GoogleTokenStrategy({
  clientID: this.config.auth.googleAuth.clientId,
  clientSecret: this.config.auth.googleAuth.clientSecret
}, (accessToken, refreshToken, profile, done) => {
  User.findOne({'google.id': profile.id}, (err, user) => {
    if(err) return done(err);
    if(user) return done(null, user);

    var newUser = new User();

    newUser.save((err) => {
      if (err) throw err;
      return done(null, newUser);
    });
  })
}));

这是端点的示例。当我使用有效的Google访问令牌访问它时,它会返回401响应,但仅在活动域上有效-它可在localhost上运行。

app.get("/api/exists", passport.authenticate("google-token"), (req, res) => {
  // stuff happens here
});

这是我在Google API管理器中的凭据: Google API凭证

如果相关,则本例中的客户端是Chrome扩展程序,该扩展程序使用getAuthToken获取令牌执行来自客户端的请求的代码如下所示:

chrome.identity.getAuthToken({"interactive": true}, (token) => {
  const bodyJson = body ? JSON.stringify(body) : null;
  const headers = new Headers();
  headers.append("Access_token", token);
  headers.append('Accept', 'application/json');
  headers.append('Content-Type', 'application/json');

  const request = new Request(url, {
    headers: headers,
    method: method,
    body: bodyJson
  });

  fetch(request);
});

但是,即使我从Google oauth游乐场生成令牌并通过Postman发出请求,我也会得到相同的结果:它在localhost上有效,而在实际域上则无效。

我还需要做什么来对我的实时域中的用户进行身份验证?

蒂姆·巴克莱(Tim Barclay)

问题出在我的Nginx服务器上。默认情况下,它会删除包含下划线的标头(例如access_token)。我没有想到问题就在那里,因此甚至在我的问题中都没有提及。

有关此的文档在这里您可以通过设置以下行为来更改行为:

underscores_in_headers on

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Express Passport会话不起作用

来自分类Dev

Django,DRF令牌认证不起作用,获取匿名用户

来自分类Dev

django(rest_framework)中的令牌认证不起作用

来自分类Dev

令牌认证不起作用Django Rest Framework

来自分类Dev

Web API承载令牌认证授权不起作用

来自分类Dev

Express 4.0和Passport-重定向到Facebook不起作用

来自分类Dev

春季认证不起作用

来自分类Dev

春季认证不起作用

来自分类Dev

Express Passport故障重定向不起作用

来自分类Dev

Express Passport故障重定向不起作用

来自分类Dev

使用 JWT 令牌的 API 在 Postman 或 RestClient 中不起作用,但在 chrome 和 app 中起作用

来自分类Dev

使用Passport与Facebook进行身份验证不起作用

来自分类Dev

ssh公钥认证不起作用

来自分类Dev

ssh公钥认证不起作用

来自分类Dev

SSH密码少认证不起作用

来自分类Dev

使用 Firebase 登录 Google 不起作用

来自分类Dev

使用 vtkTimerCallback 和 QVTKRenderWindowInteractor 不起作用

来自分类Dev

Passport.js:请记住我在Express应用程序中不起作用

来自分类Dev

Angular.js和Express:路由不起作用

来自分类Dev

使用Rails 4认证的根路由进行设计不起作用

来自分类Dev

具有ca认证的Ruby https在与curl配合使用时不起作用

来自分类Dev

当我在域名前不使用https时,SSL认证不起作用

来自分类Dev

使用Rails 4认证的根路由进行设计不起作用

来自分类Dev

Express HBS不起作用

来自分类Dev

使用AJAX时Passport + Express4无法获得认证

来自分类Dev

使用AJAX时无法通过Passport + Express4认证

来自分类Dev

在Node JS中使用Express模块不起作用

来自分类Dev

使用 $PUSH 更新在 Mongoose + Express + Node 中不起作用

来自分类Dev

嵌套map()和find()在express +猫鼬中不起作用,但在codeandbox中起作用

Related 相关文章

  1. 1

    Express Passport会话不起作用

  2. 2

    Django,DRF令牌认证不起作用,获取匿名用户

  3. 3

    django(rest_framework)中的令牌认证不起作用

  4. 4

    令牌认证不起作用Django Rest Framework

  5. 5

    Web API承载令牌认证授权不起作用

  6. 6

    Express 4.0和Passport-重定向到Facebook不起作用

  7. 7

    春季认证不起作用

  8. 8

    春季认证不起作用

  9. 9

    Express Passport故障重定向不起作用

  10. 10

    Express Passport故障重定向不起作用

  11. 11

    使用 JWT 令牌的 API 在 Postman 或 RestClient 中不起作用,但在 chrome 和 app 中起作用

  12. 12

    使用Passport与Facebook进行身份验证不起作用

  13. 13

    ssh公钥认证不起作用

  14. 14

    ssh公钥认证不起作用

  15. 15

    SSH密码少认证不起作用

  16. 16

    使用 Firebase 登录 Google 不起作用

  17. 17

    使用 vtkTimerCallback 和 QVTKRenderWindowInteractor 不起作用

  18. 18

    Passport.js:请记住我在Express应用程序中不起作用

  19. 19

    Angular.js和Express:路由不起作用

  20. 20

    使用Rails 4认证的根路由进行设计不起作用

  21. 21

    具有ca认证的Ruby https在与curl配合使用时不起作用

  22. 22

    当我在域名前不使用https时,SSL认证不起作用

  23. 23

    使用Rails 4认证的根路由进行设计不起作用

  24. 24

    Express HBS不起作用

  25. 25

    使用AJAX时Passport + Express4无法获得认证

  26. 26

    使用AJAX时无法通过Passport + Express4认证

  27. 27

    在Node JS中使用Express模块不起作用

  28. 28

    使用 $PUSH 更新在 Mongoose + Express + Node 中不起作用

  29. 29

    嵌套map()和find()在express +猫鼬中不起作用,但在codeandbox中起作用

热门标签

归档