护照JWT&授权与身份验证

问题描述:

护照似乎是简单身份验证的不错选择,不显眼且不难设置。我正在构建一个使用JWT进行身份验证的MEAN栈,因此我期待Passport JWT。但是我有些事情我很困惑。护照JWT&授权与身份验证

1)我正确地认为Passport JWT仅用于验证请求,不用于生成有效的jwt?也就是说,它是否仅用于验证令牌的存在? 2)passport.authorizepassport.authenticate有什么不同?我应该什么时候使用一个呢?

3)我有3条路线用于认证相关事宜,loginsignupauthenticate

login将检查用户电子邮件/密码组合是否存在并匹配,然后为客户端生成令牌。 signup将检查以确保电子邮件不存在,然后为客户端生成令牌。 现在为authenticate这是我有点混淆。如果我已经有loginsignup,我甚至需要authenticate路线吗?如果有的话,似乎验证将是我通过passport.use为JWT战略,然后loginsignup与可能增加的verify_token路线将是我唯一不受保护的路线,其中一切都会打电话给passport.authenticatepassport.authorize

  1. 正确。 Passport JWT(passport-jwt)仅用于验证请求。您需要另一个工具来实际生成令牌。 This tutorial使用JWT Simple(jwt-simple),我使用了jsonwebtoken(根据this reference)。
  2. 我还没有看到任何对passport.authorize的引用,所以我相信passport.authenticate是你要找的。 passport.authenticate是您在路由中用来验证传入请求是否具有JWT令牌并且是允许的。
  3. 由于您通过loginsignup生成令牌,因此authenticate是多余且不必要的。请确保您在路线中使用passport.authenticate以验证请求期间的访问权限。

一般安装步骤,记住这里是:

  • 护照,智威汤逊是认证
  • 需要使用另一个工具来创建一个JWT令牌
  • 的JWT令牌,你生成并返回到提出请求的任何内容,需要在后续请求中存在于标头("Authorization: JWT eyJ0eXAiO..."
  • you need to setup your JWT strategy and tell passport to use it
  • 使用passport.authenticate验证通过JWT令牌访问中收到的请求的头,如:

router.post('/users', passport.authenticate('jwt', {session: false}), function(req, res) { 
 
    // do something... 
 
});

+0

如果你能http://*.com/questions/44044394/请帮助how-to-set-jwtfromrequest-i-am-not-using-authorization-here @ user3006381 – Aditya