OneLogin SAML PHP登录及推送确认后自动跳转自定义URL的实现方法
解决方案
完全可以实现用户完成认证后直接跳转至自定义URL,无需经过OneLogin应用门户环节,核心调整逻辑围绕SAML的RelayState参数和OneLogin后台配置,操作步骤如下:
- 首先调整PHP代码侧的SAML请求参数:使用OneLogin SAML PHP Toolkit发起认证请求时,主动传入目标自定义URL作为
RelayState参数,示例代码如下:
传入的地址会被自动封装为SAML请求的RelayState字段发送到OneLogin服务端。// 实例化OneLogin SAML认证类后调用login方法时传入跳转地址 $auth->login('https://你的自定义应用访问地址'); - 其次配置OneLogin后台应用规则:登录OneLogin管理后台,进入你配置的SAML应用的设置页:
- 切换到SSO配置标签,找到「默认RelayState」配置项:如果需要固定跳转地址,直接在这一栏填写你的自定义应用URL即可;如果需要支持动态跳转不同地址,需开启「允许请求传入的RelayState覆盖默认值」的选项(部分旧版OneLogin实例该选项默认关闭)。
- 切换到访问配置标签,找到「用户完成认证后跳转目标」配置,不要选择「OneLogin应用门户」,选择「遵循RelayState参数」或「返回应用回调地址」即可,不同版本OneLogin后台的选项表述略有差异,选择匹配对应含义的配置即可。
- 最后验证配置效果:清除浏览器缓存后重新测试,用户完成账号密码校验、OneLogin Protect二次验证后,会直接跳转至你指定的自定义URL,无需再手动从应用门户选中应用。
如果遇到RelayState不生效的情况,可以通过浏览器开发者工具抓取SAML请求,解码后确认是否正确携带了RelayState字段。
内容的提问来源于stack exchange,提问作者TboneDubu
相关产品推荐
相关产品推荐

