SLO(Single Logout)指由应用发起的全局登录退出。
用户经过 IDaaS SSO 登录应用后,当用户希望退出登录时,可以在应用侧发起全局退出,将 IDaaS 主登录会话同步终止。IDaaS 通过 OIDC SLO 标准实现这一流程,当前仅限“自研应用”和“OIDC 协议应用”可用。
提示:SLO 是身份联邦的会话管理体系。若您的应用仅希望忽略主会话,每次登录均需用户进行认证的话,无需使用 SLO,可简单地通过授权端点中的 prompt 参数实现。
调用 SLO 端点
当用户发起退出时,您应该在完成了应用侧会话注销后,向 IDaaS 提供的应用【退出端点】发起跳转请求。
管理员可以从【应用详情】【登录访问】【单点登录】标签下方的【应用配置信息】中获取退出端点。
![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/4812383661/p494364.png)
直接跳转到这一端点,即可发起 SLO 退出请求。由于此时 IDaaS 无法判断请求来源有效性,所以需要请用户确认退出行为。(这一手动退出过程可以跳过,请参考后面的说明。)
若当前有 IDaaS 已登录会话,IDaaS 会提示用户当前正在退出,并请用户确认,如下图。
![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/4812383661/p494365.png)
若上一步中用户点击确认,或当前本就没有 IDaaS 登录会话,会提示“已退出”,如下图。
![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/4812383661/p494366.png)
退出后自动回调
若在 SLO 完成后,您不希望显示 IDaaS 的“已退出”界面,而是直接回跳到应用中去,您可通过配置【登出回调地址】(即 post_logout_redirect_uri
)实现。
请管理员前往【应用】【管理】【登录访问】【单点登录】配置,找到【登出回调地址】并填写完整的回调应用地址。
【登出回调地址】是白名单,可填写最多 5 个。退出时传入 SLO 端点的 post_logout_redirect_uri
需在此白名单范围内,才能完成回调。
![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/4812383661/p494367.png)
配置保存后,您即可以通过 SLO 端点中传入 post_logout_redirect_uri
参数来实现退出后回跳了。
自动退出(无需用户手动确认)
若在进行退出时,您希望跳过用户手动确认的步骤,直接完成退出和回跳,以实现最佳的用户体验,那么在上述 【登出回调地址】配置的基础上,您还需要在 SLO 端点传入额外参数:id_token_hint
。
SLO 退出端点支持的参数如下:
参数 | 必填 | 描述 |
id_token_hint | 否 | 当希望实现【自动退出】时必填,用于验证退出请求合理性。 直接传入 SSO 时由 IDaaS 签发的、仍在有效期内的 id_token 值。
|
post_logout_redirect_uri | 否 | 当希望实现【退出后自动回调】时必填。 传入希望 SLO 退出后的 HTTPs 回调地址,该地址需在 IDaaS 应用管理中提前进行配置。 |
state | 否 | 随机字符串,传递给 IDaaS 后,若配置了自动回调,则作为回调参数返回给应用。 用于安全验证。 |
SLO 端点请求示例如下:
GET https://example.aliyunidaas.com/login/app/<application_id>/oauth2/logout
?id_token_hint=${id_token}
&post_logout_redirect_uri=${post_logout_redirect_uri}
&state=${state}
SLO 参考流程图
![image](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/9822383661/p494368.png)
限制
IDaaS 当前:
只实现 OIDC 的 SLO,暂未支持 SAML SLO
只实现 SP-init SLO,OIDC SLO 的其他模式暂未支持。
只实现 IDaaS 主登录态的注销,其他已登录应用不受影响(即未实现 Global SLO)