如何将 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 同步

如何将 ngAA 集成到 Laravel jwt-auth

将新端点添加到 OpenID 配置到 Auth0 应用程序?

PayPal API 集成到服务器

如何使用 openid connect OIDC 加密 REST 正文