首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Auth0的Tableau SAML身份验证对用户进行身份验证,但不会注销系统

使用Auth0的Tableau SAML身份验证对用户进行身份验证,但不会注销系统
EN

Stack Overflow用户
提问于 2021-06-24 18:35:58
回答 2查看 134关注 0票数 0

我已经开发了一个使用tableau-api嵌入图形的react应用程序。我已经使用Auth0作为单点登录为tableau配置了SAML身份验证。当我使用相同的电子邮件id登录Auth0时,可以访问tableau,tableau允许我访问图形。到目前为止,一切都很好。现在的问题是,当我注销auth0时,Auth0会话将终止,但tableau会话仍保持活动状态。因此,即使在退出Auth0之后,我仍然可以访问tableau图。我怎样才能从在线的tableau注销?

EN

回答 2

Stack Overflow用户

发布于 2021-06-30 02:21:38

Quote :Quote“现在的问题是,当我从auth0注销时,Auth0会话被终止,但tableau会话仍然处于活动状态。因此,即使我从Auth0注销,我仍然可以访问tableau图。我如何也从tableau online注销?”

应答

在您的单点登录用例中,tableau是SAML服务提供者(或依赖方),Auth0是SAML身份提供者。

tableau利用Auth0执行身份验证(或登录验证)。作为SAML身份提供者,Auth0为tableau建立身份验证会话,然后将用户身份(或用户信息)联合到tableau。作为SAML服务提供商和web应用程序,tableau建立登录会话以在不确定的时间段(例如1小时或8小时)保持会话活动。一旦会话处于活动状态,您仍然可以访问tableau图。

SAML身份提供程序Auth0无法撤消由tableau建立的会话。因此,引用“当我注销auth0时,Auth0会话将终止,但tableau会话仍保持活动状态。”

解析

(1)您需要为tableau创建一个注销按钮来执行以下两个任务:

(I)删除tableau建立的会话。

(II)向Auth0 SLO API发布单次注销请求,以删除tableau的身份验证会话。(或者,如果您不想开发SLO请求功能,您只需注销Auth0即可删除所有web应用程序的所有会话,包括tableau。)

您可以从Auth0 SAML身份提供者的元数据中找到Single (SLO)服务API,例如

代码语言:javascript
复制
<SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://tableau.auth0.com/idp/profile/SAML2/Redirect/SLO"/> 

可以在下面的GitHub链接中找到的元数据示例。

Shibboleth SAML IdP metadata

(2)以下Shibboleth Logout Discussion提供了从SAML IdP中完全移除SAML SP应用的会话(如tableau)的典型解决方案。

从Shibboleth注销是很复杂的,因为您必须考虑删除至少三个级别的会话:

  • 您的应用程序会话。例如:一个在登录时检查shibboleth以创建会话的Drupal站点。会话启动后,不会再次检查登录。假设该会话的用户始终相同。
  • 您的服务提供商(SP)会话。服务器上的SP在内存中创建会话,并使用浏览器cookie跟踪此会话。
  • 身份提供程序(IdP)会话。当用户登录到IdP时,他们将获得一个会话cookie,该cookie让IdP记住它以前见过该用户。如果同一用户登录到另一个shibboleth SP,则IdP可以重复使用该登录,并将相应的消息传递给新SP,而无需再次登录。

此外,用户可能已使用其IdP会话向其他SP进行身份认证。这些SP将有自己的SP会话,也可能有其他应用程序会话。

对于注销,您最多只能执行以下操作:

对于给定的application.

  • Remove
  • 会话,请使用任何适合的方法删除应用程序会话。您的SP处理程序必须这样做,因为cookie绑定到内存中的会话。SP必须终止会话,并删除IdP会话的会话。您必须将用户发送回其中一个身份提供程序注销URL,以便用户可以终止IdP会话并删除其会话cookie。
  • 为了强制用户注销其他SP会话或应用程序,必须将IdP配置为支持单次注销。启用后,IdP将使用浏览器本地存储跟踪用户的每个SP登录。当请求SLO时,会运行一个javascript页面来访问每个存储的SP会话并执行注销。这不是一个完美的解决方案,而且它会显著减慢浏览器内存存储的登录过程。我们目前不支持shib.ncsu.edu.
  • The上的SLO最佳实践是要求用户关闭他们的浏览器,这将导致它丢弃所需的cookies。这不会终止会话,因此任何持有这些cookies的人仍然可以使用它们。
票数 0
EN

Stack Overflow用户

发布于 2021-06-30 16:04:53

您需要做的是实现单点注销服务,并将其配置为支持idp发起的注销。

然后,当idp注销发生时,它将回调到您的注销服务,并向您提供有关成功从idp注销的信息。

然后,您需要根据从idp收到的信息进行本地注销。

您需要在您的单次注销服务中包含整个内容,并且需要在idp(Auth0)中注册它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68114132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档