首页 > 解决方案 > 单点注销如何与 OKTA(IDP)-Shibboleth(SP)-App 配合使用

问题描述

OKTA-Shibboleth(Apache)-Nakisa(Tomcat)

SSO 正在登录。现在,我需要配置注销。因此,用户从应用程序中注销,用户需要被重定向到带有磁贴的 OKTA 页面。

但是,目前,用户再次被重定向到应用程序。

它将用户发送到 /logout?redirect=default.html 但该 default.html 被 Apache 规则捕获并重新登录用户。

看起来它需要点击 https://xxxx/Shibboleth.sso/Logout。当我访问此 url 时,它说注销已成功完成,尽管它不会返回 OKTA。这是否意味着在应用程序的注销设置中,他们需要重定向到此?

但是,我如何让用户再次回到 IdP(即 OKTA)?

这就是我认为会发生的事情。

Logout button click > logout from Shibboleth > return to OKTA so user can click other tiles. 

配置 Shibboleth2.xml 的东西?文档说我只需要配置默认情况下存在的以下内容。

<!-- SAML and local-only logout. -->
        <Logout>SAML2 Local</Logout>

但是,一旦用户注销完成,它如何将用户重定向到 OKTA(IdP)。是否在 IdP 的元数据中配置?

标签: saml-2.0oktashibbolethshibboleth-spsingle-logout

解决方案


您可以在本地注销事件后将用户重定向到您想要的任何地方,通过将?return=参数传递给 URL 编码的目标,即您应该将注销链接更新为:

https://xxxx/Shibboleth.sso/Logout?return=https%3A%2F%2Fgoogle.com

为了在注销后将人们重定向到谷歌。

现在,您只需要一个 Okta URL 就可以让人们返回......所以我认为如果您的客户的 Okta 租户是“foobar.okta.com”,在本地注销后将他们重定向到 Okta 登录页面不应提示他们登录,因为他们已经有 Okta 会议......所以也许试试:

https://xxxx/Shibboleth.sso/Logout?return=https%3A%2F%2Ffoobar.okta.com%2Flogin

当然,您需要对其进行测试......但它应该可以工作,并且如果用户的 Shibboleth SP 会话处于活动状态,并且他们的 Okta 会话通过其他一些机制失效,那只会将他们返回到他们的常规 Okta 登录页面。

您显然可以使用return参数将它们重定向到任何端点,例如,任何 Okta 的注销 URL(如果您也想终止他们的 Okta 会话)。

元数据可配置的唯一注销是 SLO(单次注销),也就是说,如果您愿意,Shibboleth 可以在用户完成 SP 会话的注销后将其重定向到 Okta,以及一个特殊的<LogoutRequest>断言有效负载,Okta 会以多种方式解析和执行操作,即终止用户的 Okta 会话,将 Okta 发起的后续<LogoutRequest>断言传播给其他服务提供者等。实际上,这永远不会真正起作用,因为这样的配置很难在所有有关各方。


推荐阅读