我最终想要的是使用devise正常登录或选择使用SAML登录的能力。所以我读到,如果我集成omniauth和saml,然后omniauth和devise,我就可以实现这一点。
我的问题是,我有不同的IDP,我想选择。所以我没有一个:idp_sso_target_url,但很多。所以我的问题是,我如何动态地改变目标_url的值。目前omniauth-saml gem在config/initializers目录中定义了这个值。
我最终想要的是使用devise正常登录或选择使用SAML登录的能力。所以我读到,如果我集成omniauth和saml,然后omniauth和devise,我就可以实现这一点。
我的问题是,我有不同的IDP,我想选择。所以我没有一个:idp_sso_target_url,但很多。所以我的问题是,我如何动态地改变目标_url的值。目前omniauth-saml gem在config/initializers目录中定义了这个值。
4条答案
按热度按时间fhity93d1#
您可以将每个提供程序的设置存储在db中,然后在请求时的设置阶段配置omniauth。例如:
字符串
请参阅https://github.com/intridea/omniauth/wiki/Setup-Phase了解更多信息。
tktrz96b2#
通过Devise + OmniAuth使用多个SAML IDP:
遵循这个单一IDP的官方指南。
https://github.com/omniauth/omniauth-saml#devise-integration
一旦你有你的SP与单IDP工作,做以下调整
1.在
devise
初始化器中字符串
1.在
Users::OmniauthCallbacksController
中,添加名为first
和second
的操作,而不是官方指南中建议的saml
。1.在您的
User
型号中:型
如果所有配置都正确,您现在已经为两个IDP配置了SP。
oyt4ldly3#
字符串
3j86kqsm4#
如果在联邦上下文中使用应用程序,则很可能存在元数据源,例如saml2int.org配置文件中规定的元数据。此元数据包含用于填充IDP发现(并自动配置所有IDP)的数据。似乎omniauth-saml不支持SAML Metadata规范,因此某种SAML代理是替代方案。