使用React进行OAuth的传统方法是什么?我对此表现出一点新意,但我明确了如何使用Express制作REST API,该API通过护照进行身份验证并将帐户同步到数据库。我遇到的问题是我想让React网站ping服务器以获取OAuth,然后将OAuth成功数据重定向回React页面并在cookie上存储cookie而不是我服务器的URL。任何将我的头缠在这一切如何工作上的帮助都将被欣然接受。我一直在探索使用Next.js作为解决方案,因为它似乎可以在node.js服务器上提供React服务,这意味着我可以代替为模板提供服务React路由,就像到目前为止所见的ive告诉我要做的那样。
答案 0 :(得分:0)
您的直觉是,大多数工作将在服务器端进行。在处理OAuth和OpenID时,术语可能会引起混淆。实际上,OpenID只是OAuth 2.0之上的扩展,对其进行了少许修改以允许身份验证。除此以外; OAuth只是一种委托授权机制。
您应该查看此视频演示文稿"OAuth 2.0 and OpenID Connect (in plain English)"。这是对我刚才所说的内容进行更详细说明的最好的解释之一。它使我走上了正确的道路,以了解更多信息。
尽管理论上很简单,但实际上实现这些东西可能会很痛苦。视您的语言,框架和可用的库而定,拥有一个库可能会为您带来太多麻烦。
不同用例有不同的流程。您可以在基于浏览器的Javascript SPA中完成所需的操作,但在浏览器和身份提供程序之间需要某种受保护的服务器端应用程序。请注意,您在进行尽职调查。
您可能会发现正在使用的身份提供者在标准之上要求其他要求和参数。在处理不了解这些要求的框架时,这可能会令人沮丧。
我最近为login.gov
整理了一个toy project,因为他们的官方示例仓库是半熟的,并且假定您的客户端正在服务器端运行。请注意,该项目不是浏览器React应用本身,而是一个可以通过其进行身份验证的API。我是在Spring Boot(语言:Kotlin)中写的。
在某些情况下,Spring会为您完成很多工作,但是当您需要自定义动作时,如何做会非常“神奇”且令人困惑。对我来说,Spring的好处在于它的默认值相当严格,它迫使您在进行更改之前了解并质疑您要更改的内容。
另一方面,我们最好能找到开箱即用或易于定制的Express.js API示例。这些解决方案的问题是您可能会质疑它们的默认设置是否宽松。此外,我的工作有一定的要求,这使部署Node.js成为一个入门。
记录下来,涉及React和Javascript生态系统时,我认为不存在“传统” =)之类的东西。在这个领域中事情进展得如此之快,但您可能会说React仍然很新鲜。