当前位置: 首页 > 知识库问答 >
问题:

如何在服务器身份验证后为前端提供JSON web令牌?

羊舌源
2023-03-14

到目前为止,我只处理了服务器呈现的应用程序,在用户通过用户名/密码或使用OAuth提供商(Facebook等)登录后,服务器只是设置一个会话cookie,同时重定向到相关页面。

然而,现在我正在尝试使用更“现代”的方法构建一个应用程序,前端是React,后端是JSON API。显然,这方面的标准选择是使用JSON web令牌进行身份验证,但我很难弄清楚我应该如何将JWT提供给客户机,以便将其存储在会话/本地存储或任何地方。

举例说明:

>

  • 用户单击链接(/auth/Facebook)通过Facebook登录

    用户被重定向并显示Facebook登录表单和/或权限对话框(如有必要)

    Facebook将用户重定向回/auth/Facebook/callback,并带有授权代码,服务器将其交换为访问令牌和有关用户的一些信息

    服务器使用该信息在DB中查找或创建用户,然后创建包含用户数据(例如ID)的相关子集的JWT

    ????

    在这一点上,我只想将用户重定向到React应用程序的主页面(比如/app),并将JWT拖在一起,这样前端就可以接管。但我想不出一种(优雅的)方法来做到这一点,同时又不丢失JWT,除了将其放在重定向的查询字符串中(/app?authToken=...)--但这将显示在地址栏中,直到我使用replaceState()或其他方法手动删除它,这在我看来有点奇怪。

    真的,我只是想知道这通常是怎么做的,我几乎可以肯定我遗漏了一些东西。服务器是节点(带有Passport的Koa)(如果有帮助的话)。

    编辑:为了清楚起见,我在问在使用Passport的OAuth重定向流之后,向客户端提供令牌(以便保存)的最佳方法是什么。

  • 暂时还没有答案

     类似资料:
    • 我只想做一个upsert手术。我有一个JsonDocument,我有一个Couchbase服务器“123.456.789.1011”,里面有一个bucket,称为“TestBucket”。现在,当我使用端口8091的IP地址打开服务器时,它要求我输入用户名和密码,比如“uname”、“pwd”,输入后,它就打开了。我的桶没有任何密码。 这是我的代码,但问题总是在运行代码时,我会得到一个错误 Inv

    • 我有一个这样的应用程序工作流程 (A) 用户代理(浏览器) 假设应用服务器(B)是一个SAML服务提供者,user@domain使用Web浏览器SSO配置文件从浏览器(A)到应用服务器(B)进行身份验证。 在(B)上运行的应用程序如何向user@domain.com的REST服务(C)进行身份验证?(假设B和C都是同一IdP上的SAML SP。) 如果浏览器只是对B和C进行AJAX调用,那么就很简

    • 我使用身份服务器4进行用户身份和令牌服务。和我的客户端应用程序写入。Net core React模板。一切正常,但是当最终用户点击客户端子URL页面(从电子邮件接收)时,它会重定向到STS身份服务器进行身份验证并返回主页,而不是返回用户在乞讨中点击URL的子页面。 用户点击客户端URL的示例(https://localhost:44309/bills)(通过电子邮件接收)登录页面(https://

    • 我有一个Rest Spring BootAPI,当用户验证API返回令牌jwt时,我在浏览器中注意到该令牌出现在响应头中 如何通过Reactjs将此令牌存储在本地存储浏览器中? 我的请求代码如下所示:

    • 我在调试身份验证问题时遇到了这个代码片段: 我在调试和摆弄用户凭证时注意到,如果第一个身份验证提供者(即< code > userdailsservice )无法对我的用户进行身份验证,那么就会远程调用我的LDAP服务器来尝试对我的用户进行身份验证。但是,如果第一个身份验证提供者成功地对我的用户进行了身份验证,则不会调用第二个身份验证提供者。 我的问题是,列出这些身份验证提供者的工作方式是否使得如

    • 我在本地系统上创建了一个REST服务,并部署在Tomcat上。之后,为了提供基本的身份验证,我在tomcat-users.xml文件中添加了角色和用户/密码,并在web.xml中更新了security-config和security-role。 我部署了这个rest应用程序heroku,但我不知道如何在heroku上为它配置基本的身份验证,因为Tomcat-users.xml没有退出。 请帮忙