我们正在开发一套单独的SPA应用程序,其中每个应用程序都生活在一个单独的子域上,该子域具有一个公共父域。
app1.domain.com
app2.domain.com我们希望避免客户不得不分别登录每个应用程序。因此,我们希望能够一次登录到一个应用程序,并在访问其他应用程序时继续注册。同样,退出其中一项也会在另一项中签字。
根据我对Auth0文档的研究,使用自定义域似乎可以做到这一点。因此,我们改变了计划,添加了自定义域auth.domain.com,并创建了一个可以登录的测试SPA应用程序。然后我创建了两个子域,并将它们指向应用程序。
登录到app1.domain.com起作用了。创建了auth0.{clientid}.is.authenticated cookie。然而,cookie的域是app1.domain.com,而不是我所希望的.domain.com。
然后我尝试访问app2.domain.com,并确认cookie肯定不在那里,我也没有登录。
是否有任何方法配置Auth0以使用户在所有子域中登录?
(我在Auth0论坛这里上发布了这篇文章,但没有收到回复)
发布于 2022-06-04 02:15:11
我打开了一个拉请求 on auth0-spa-js包来添加一个选项来指定cookie域。它被接受并合并到版本1.21.0和更高版本中。
在客户端配置中,添加一个cookieDomain选项。
const auth0 = await createAuth0Client({
domain: '<AUTH0_DOMAIN>',
client_id: '<AUTH0_CLIENT_ID>',
redirect_uri: '<MY_CALLBACK_URL>',
audience: '<MY_AUDIENCE>',
cookieDomain: '.example.com',
})注意:顶级cookie域总是以句点.开始。
在同一顶级域下的每个应用程序/子域上使用此配置,您将注意到这两个应用程序/子域上都存在auth0.{clientid}.is.authenticated cookie。当你访问任何其他人时,签到一个就会导致你被签到。
auth0-spa-js包被大多数用于Vue、React等的其他auth0插件使用,因此客户端配置实际上应该是相同的。
https://stackoverflow.com/questions/71288896
复制相似问题