ruby-on-rails – Rails – 使用带有多个IDP的omniauth-saml

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails – 使用带有多个IDP的omniauth-saml前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我最终想要的是能够通过设计正常登录或选择使用SAML登录.所以我读到,如果我整合omniauth和saml,那么omniauth和devise,我可以实现这一点.

我的问题是,我有不同的国内流离失所者,我想从中选择.所以我没有一个:idp_sso_target_url,但很多.所以我的问题是如何动态更改target_url的值.目前omniauth-saml gem在config / initializers目录中定义了这个值.

谢谢,

解决方法

您可以在db中存储每个提供程序的设置,然后在请求时在设置阶段配置omniauth.例如:
SETUP_PROC = lambda do |env| 
  request = Rack::Request.new(env)
  user = User.find_by_subdomain(request.subdomain)
  env['omniauth.strategy'].options[:consumer_key] = user.consumer_key
  env['omniauth.strategy'].options[:consumer_secret] = user.consumer_secret
end

use OmniAuth::Builder.new do
  provider :twitter,:setup => SETUP_PROC
end

有关更多信息,请参见https://github.com/intridea/omniauth/wiki/Setup-Phase.

猜你在找的Ruby相关文章