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

使用JWT实现跨域身份验证的单点登录流程

令狐珂
2023-03-14

web上有大量关于使用JWT(JSON web令牌)进行身份验证的信息。但是我仍然没有找到关于在多域环境中为单点登录解决方案使用JWT令牌时流程应该是什么的清晰解释。

我工作的公司有很多网站在不同的主机。让我们使用example1.com和example2.com。我们需要一个单点登录解决方案,这意味着如果一个用户在example1.com上进行身份验证,我们希望他也在example2.com上自动进行身份验证。

JWT令牌应该如何存储在客户端上?关于这一点,还有很多信息,人们似乎同意使用Web存储而不是使用旧的cookies。我们希望JWT在浏览器重新启动之间是持久的,所以让我们使用本地存储,而不是会话存储...

现在用户可以重新启动他的浏览器,他仍然会在example1.com上进行身份验证,只要JWT令牌没有过期!

另外,如果example1.com需要向我们的另一个域发出Ajax请求,我认为配置CORS将允许这样做。但是我们的主要用例不是跨域请求,而是单点登录解决方案!

    null

我们不想要任何花哨的东西,我们会很高兴与大多数使用的解决方案!

共有1个答案

南门鸿振
2023-03-14

用户应该再次被重定向到身份验证服务器,并获得一个新的令牌(JWT),一个专门针对example2.com的令牌。这就是OpenID Connect和任何其他跨域联合SSO协议的工作方式。

 类似资料:
  • 我有几个angular应用程序(在不同的子域中)和一个主angular应用程序(在主域中)。我使用@auth0/Angular2-jwt库来管理身份验证。它工作得很好,但对单点登录不起作用。我必须在每个子域登录,我需要这只做一次(在主域或任何子域)。 我尝试过为whitelistedDomains使用正则表达式,但它不起作用: 那么,如果用户登录到主域或任何子域,我如何对所有子域的用户进行身份验证

  • 在auth-routes示例中,api和nuxt一起启动并使用一个Node.js服务器实例。但是,有时我们应该使用jsonWebToken处理外部api身份验证问题。在这个例子中,将用最简单的方式解释。 官方 auth-module 如果要实现复杂的身份验证流程,例如OAuth2,我们建议使用官方 auth-module 结构 由于Nuxt.js同时提供服务器和客户端呈现,并且浏览器的cookie

  • 我试图用PHP为两个主题相连的领域创建一个简单的SSO系统。 因此,我想知道是否可以将包含用户用户名的签名JWT令牌从域a存储到本地存储。然后使用来自域B的相同密钥来验证JWT,这将导致成功的身份验证。 我在谷歌搜索了一些答案,我发现其中一些包含了一个中间认证域,它将负责认证。但我只想把我有的两个域联系起来。 谢了。

  • 如何在iOS8中使用CloudKit实现Sign sign-on? 我知道你可以得到一个代表你的登录用户的字符串,这是你的应用程序唯一的,但是我如何在我的后端验证那个字符串呢? 我明白Apple ID/iCloud电子邮件地址是出于隐私原因而隐藏的。 我的后端是Azure中的ASP.NET Web API2,但如果更简单的话,我可以用另一种技术实现它。 我正在寻找相当于谷歌在Android上的单点

  • 我正在尝试使用JWT为跨域应用程序开发单点登录(SSO)。 在研究了一些解决方案和线程后,我决定使用以下内容:使用JWT进行跨域身份验证的单点登录流程 但我不确定,如何在资源服务器上验证IdP令牌? IdP和资源服务器是否都应该访问相同的数据源? 此外,是否有必要为每个应用程序使用唯一的资源令牌?

  • 我正在尝试为自己构建一个仪表板,为我使用的一些应用程序提供基于SAML的身份验证。 从我作为测试平台构建的: 我正在使用一个登录名作为我要使用的应用程序的身份提供者。 举个例子:对于Netflix,我被重新路由到Netflix页面,我的用户ID和密码被预先填入其中,就像密码管理器的工作方式一样。(它使用OneLogin的扩展名) Netflix是否允许基于SAML的单点登录身份验证?我无法从谷歌搜