如何在OAuth提供程序重定向后为用户提供JWT令牌?

gce*_*rar 8 oauth jwt rauth

我正在实施OAuth(使用rauth)并将提供JWT令牌(使用flask-jwt),javascript前端(Angular1).我已经完成了基于经典cookie /会话的应用程序.有用.现在我想用JWT令牌来做.

如果我理解正确,用户将被重定向到提供商(例如谷歌),登录帐户,我的服务器和提供商做魔术,然后提供商将用户重定向回我的页面.现在我获得了用户个人资料,结束了OAuth部分.通过正常会话,您可以为用户设置cookie以及其他用于设置会话的内容,然后将其重定向到主页.

这就是我被困住的地方.有什么好的做法如何在提供商发回给用户后给用户JWT令牌?在重定向到主页时将其作为cookie提供给用户?把它放在标题中?据我所知,我需要javascript将令牌保存到LocalStorage/SessionStorage.

Roy*_*mby 7

在一天结束时,用户将被重定向回我们的应用程序,现在需要呈现页面.我看到的唯一选择是将JWT作为cookie返回,因为Javascript中无法访问响应头,而唯一的其他位置是将它嵌入到DOM中,这会将其打开到CSRF攻击.

当浏览器从OAuth提供程序重定向时,它将只有一个访问代码,可以在服务器端交换访问令牌.但最佳实践表明,您需要保密该访问令牌(不将其传递回浏览器).

关于JWT在cookie和本地/会话存储方面存在很多争议,但在这个用例中我没有看到任何其他选择而不是使用cookie.我所看到的所有使用浏览器存储的用例都假定正在进行XHR请求以获取JWT.但这不是OAuth流程中的一个选项,因为整个浏览器刚被重定向回我们的应用程序.

除了将JWT保留在cookie中以用于将来的API调用之外,我没有看到另一个选项(对于OAuth用例).但也许我错过了一些东西.