saml-2.0 - 单点注销如何与 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 编码的目标,即您应该将注销链接更新为:
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>
断言传播给其他服务提供者等。实际上,这永远不会真正起作用,因为这样的配置很难在所有有关各方。
推荐阅读
- protractor - ConnectionError:连接丢失 - 在量角器中读取 ECONNRESET
- javascript - 从计算函数的 getter 中引用 v-for 元素
- sql - 在 case 内使用合并,然后使用子查询来获取逗号分隔值
- ios - 苹果音乐无法在 ios 中播放某些歌曲
- python-3.x - 在 python 中编写异步请求
- python - 通过经纬度查找最近的位置并在 Python 中填写 District 和 BusinessArea
- c++ - How to call a C++ dynamic library from Rust?
- c# - 如何更改本地 SQL Server 的登录方式?
- node.js - How we can replace an array with new value, and sort them based on specific field
- mysql - Mysql query rollbacks after beginning