Ruby on rails Rails检测会话是否由SSO/SAML创建
对于我的RubyonRails项目,我有modelRuby on rails Rails检测会话是否由SSO/SAML创建,ruby-on-rails,devise,single-sign-on,saml,onelogin,Ruby On Rails,Devise,Single Sign On,Saml,Onelogin,对于我的RubyonRails项目,我有modelAccount和modelUser用户属于帐户,帐户有许多用户 对于某些帐户,我希望允许用户使用常规设计路由(即由控制器设计/会话控制的路由)。对于其他一些帐户,我想让用户使用SAML/SSO登录 我已经使用gemsdesigne和designe\u saml\u authenticable成功地实现了这一点。根据帐户是否使用SAML/SSO,帐户中的用户可以使用任一路由登录。我正在使用Onelogin作为我的身份提供者 但是,对于注销。我希望其
Account
和modelUser
<代码>用户属于帐户
,帐户
有许多用户
对于某些帐户,我希望允许用户使用常规设计路由(即由控制器设计/会话控制的路由)。对于其他一些帐户,我想让用户使用SAML/SSO登录
我已经使用gemsdesigne
和designe\u saml\u authenticable
成功地实现了这一点。根据帐户是否使用SAML/SSO,帐户中的用户可以使用任一路由登录。我正在使用Onelogin作为我的身份提供者
但是,对于注销。我希望其帐户不使用SAML/SSO的用户通过注销
destroy\u user\u session DELETE/users/sign\u out(:format)designe/sessions\destroy
有了这个,我可以很容易地将=链接到“注销”,销毁用户会话路径,方法::删除
另一方面,我希望帐户使用SAML/SSO的用户通过身份提供者的SLO路径注销。对于其中一个帐户,我已经尝试过了
=链接到“注销”https://mycompany.onelogin.com/trust/saml2/http-redirect/slo/xxxyyy“
是Onelogin的SLO链接吗
我的项目的另一个方面是,帐户使用SAML/SSO的用户也可以使用常规的Desive登录路径登录。因此,他们可以选择使用SSO或设计登录路径
如果他们使用设计路由登录,我希望他们通过destroy\u user\u session\u path
注销。如果他们使用SSO登录,我希望他们通过
有没有办法检测当前会话是否是使用SAML/SSO登录的,这样我就可以
if signed_in_with_sso
= link_to 'Log out', https://mycompany.onelogin.com/trust/saml2/http-redirect/slo/xxxyyy
else
= link_to 'Log out', destroy_user_session_path, method: :delete
我不想在我的users表中创建一列来记录他们是通过SAML/SSO登录,还是每次登录时设计。换句话说,没有迁移
谢谢 我看到的两个潜在选项要么在身份验证点,要么在会话中设置指示身份验证类型的内容。您可以从中驱动身份验证行为
或者,您可以向IdP发送isPassive=true的SAML请求,如果用户与IdP有有效会话,该请求将返回SAML响应。然后,您可以从该响应中驱动您的注销行为。只是一个想法,但您能在会话中弹出一些内容吗?