单点注销如何与 OKTA(IDP)-Shibboleth(SP)-App 一起使用

How does Single-logout works with 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 的元数据中配置的吗?

您可以在本地注销事件后将用户重定向到任何您喜欢的地方,方法是将 ?return= 参数传递给 URL-encoded 目的地,即您应该将注销 link 更新为:

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

以便在注销后将人们重定向到 Google。

现在,您只需要一个 Okta URL 到 return 人...所以我认为如果您客户的 Okta 租户是 "foobar.okta.com",请在本地注销后将他们重定向到Okta 登录页面不应该 提示他们登录,因为他们已经有了 Okta 会话...所以可以尝试:

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

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

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

唯一可由元数据配置的注销是 SLO(单点注销),即如果您愿意,Shibboleth 可以在用户完成 SP 会话的注销后将用户重定向到 Okta,以及 specially-craft <LogoutRequest> 断言负载,Okta 将以多种方式对其进行解析和操作,即终止用户的 Okta 会话,向其他服务提供商传播 Okta-initiated 后续 <LogoutRequest> 断言等。在实际上,这从来没有真正起作用,因为这样的配置很难在所有相关方之间发挥作用。