一个简单的问题,我想与各种用户一起登录和退出应用程序以检查不同的应用程序功能。应用正在使用Auth0进行用户管理。
我 am 调用/ v2 / logout url作为流程的一部分。
但是以某种方式,注销后,当我再次登录时,无缝的SSO行为就会运行,并且我会立即再次登录而没有任何提示-好像从未调用过注销URL。
再次获得登录提示的唯一方法是清除浏览器缓存。我也需要删除某个地方的auth0 cookie吗?还是我错过了什么?我正在阅读无缝的SSO文档,但除了调用/ v2 / logout以外,什么都看不到。
答案 0 :(得分:1)
调用Auth0 /v2/logout
API endpoint将使用户退出Auth0和IdP(如果指定了federated
参数)。它不会从应用程序中注销用户,因此您需要在应用程序中实现该用户。
在Java SPA example中,在setSession()
中,我们将访问令牌(及其到期时间)和ID令牌存储在localStorage中。然后,在logout()
函数中,我们将删除这些条目。这是从“应用程序”用户会话中注销的。您也可以选择重定向到/v2/logout
,以清除Auth0和IdP会话。这样,当您检查用户是否通过身份验证时,isAuthenticated()
返回false,我们将强制用户再次登录。
答案 1 :(得分:0)
事实证明,问题出在重定向用户,而不是直接调用注销网址。我正在对注销URL使用单独的ajax api调用。但是,当我使用window.location.replace(logoutUrl)
时,实际上会注销。
来自auth0文档:
To force a logout, redirect the user to the following URL:
https://YOUR_AUTH0_DOMAIN/v2/logout
Redirecting the user to this URL clears all single sign-on cookies set by Auth0 for the user.
因此,单独的呼叫不起作用-必须重定向。我认为这很有意义-一个单独的Ajax调用没有用户会话上下文。