如何将 OPENID auth 集成到 REST api 和前端框架架构中
Posted
技术标签:
【中文标题】如何将 OPENID auth 集成到 REST api 和前端框架架构中【英文标题】:How to integrate OPENID auth into a REST api and front-end framework architecture 【发布时间】:2016-10-16 02:02:42 【问题描述】:我目前正在制作一个网站,该网站要求用户使用Steam 登录,然后才能使用我网站的其余功能。 Steam 目前仅支持 OPENID 进行身份验证。我这样做的方式是在以下步骤中:
用户按下“使用 Steam 登录”按钮
我的前端重定向到 steamcommunity.com
如果用户成功登录,用户的浏览器应该重定向到我的后端,然后我将用户添加到数据库中(如果他们不在数据库中)并创建一个 JSON Web 令牌并将其发送回我的前端.
例如:
myfrontend.com?token=my_json_web_token
然后我的前端将此令牌保存为客户端 cookie,并且在对服务器的每个请求时,我都会将此 cookie 的内容发送到服务器。
我已经集成了我的应用,但它刚刚变得越来越流行,所以我想知道我实现它的方式是否有效。
谢谢
【问题讨论】:
您能否详细说明后端如何将令牌传达给前端的示例?还有你的堆栈是什么。 【参考方案1】:这听起来是正确的做法。
需要注意的一点是,由于您使用的是 cookie,因此您希望确保您有一些 CSRF 保护,但这并不是您所要求的。
CSRF example
【讨论】:
黑客如何进行跨站点请求伪造呢?他们将不得不猜测我的 jwt 密码来做类似的事情,不是吗? @mre12345 一个很好的解释是here(注册是无痛的sso)。本质上,如果您将令牌放入 cookie 中,并且浏览器会在每次请求时自动将 cookie 发送到您的服务器:然后攻击者页面可以向您的站点发出授权请求,因为浏览器会为他们发送 cookie。以上是关于如何将 OPENID auth 集成到 REST api 和前端框架架构中的主要内容,如果未能解决你的问题,请参考以下文章
将 openID 和 oauth 集成为网站登录、登录和认证系统
如何将 django rest api 中的用户与 Auth0 同步